The plumber rolls onto the jobsite. Your schedule already knows.
Detect a vendor on site — from any camera, any sensor, any access system — and Cornerstone instantly flips the matching task to In Progress on the construction schedule. No phone calls. No manual check-ins.
Arrival event starts the clock. Departure event stops it.
Every vendor and trade gets logged hours on the job — automatically. No timecards. No “how long were you here?” Real data feeding vendor scorecards, labor budget actuals, and bid-award decisions.
We’re the brain, not the eyes. Bring whatever you already have.
Five steps. Total elapsed time: under a minute.
Camera, doorbell, gate, GPS, or app spots a vendor at the jobsite.
Source POSTs the event (image, plate, badge, geofence) to Cornerstone.
Cornerstone identifies the vendor and finds the active task on that home.
Matching task flips to In Progress on the construction schedule. Audit log written.
PM gets a heads-up. Photo evidence attached. Hours start counting.
We’re the brain, not the eyes. If it can fire a webhook, Cornerstone can turn it into a task update.
Sensera, OxBlue, EarthCam, Reolink, Verkada — any brand
Smart doorbells at the model home or trailer
Brivo, Openpath, ButterflyMX, gate keypads
Samsara, Verizon Connect, Geotab geofence triggers
Vendor taps Arrived in the portal — counts the same
Yard sign QR / lockbox scan = arrival event
Standalone LPR cameras or third-party plate APIs
Glue any sensor or webhook into Cornerstone
Don’t see your stack? If it can POST a webhook, it works. See the API →
Once presence detection is wired in, your construction schedule stops needing a babysitter.
The matching scheduled task on that home flips to In Progress the second the vendor is detected. No phone call. No app to open.
Departure event closes the task or logs hours on site. Real timestamps, not estimates.
Scheduled vendor doesn't appear by their start window? PM gets pinged before the day is lost.
Unrecognized truck on site? You know in minutes — not when something walks off the lot.
Snapshot from the source attaches to the task audit log automatically. Dispute-proof, every time.
On-time %, average hours on site, no-show rate. Real performance data feeding bid-award decisions.
Today, “is the framer there yet?” is a phone call. Tomorrow, it’s a notification. Schedule status reflects what’s actually happening on the lot — in real time, with photo evidence, with no extra work for your supers or your subs.
Register a camera once. Stream presence events forever. Standard REST, HMAC-signed, scoped API keys.
One-time setup. After this, every event from this camera auto-resolves to the right home — no homeId needed in webhook calls.
POST/api/ext/camerasBetaAuthorization: Bearer {api_key}
Content-Type: application/json
{
"cameraId": "cam_lot25_entrance",
"name": "Lot 25 Entrance Camera",
"homeId": "h456",
"provider": "sensera"
}Vendor arrives. Camera POSTs the event. Cornerstone auto-resolves the home, finds the active task, flips it to In Progress.
POST/api/ext/jobsite-eventsRequest{
"eventType": "vehicle_detected",
"timestamp": "2026-05-08T08:47:00Z",
"camera": {
"id": "cam_lot25_entrance",
"name": "Lot 25 Entrance",
"location": "Bayside Preserve Lot 25"
},
"detection": {
"vendorName": "Sussex Framing Co",
"confidence": 0.94,
"imageUrl": "https://your-camera.com/snap.jpg"
}
}200application/jsonResponse{
"matched": true,
"vendor": {
"id": "v123",
"name": "Sussex Framing Co"
},
"home": {
"id": "h456",
"address": "5 Bayside Way"
},
"tasksUpdated": [{
"id": "t789",
"name": "First Floor Wall Framing",
"status": "IN_PROGRESS",
"previousStatus": "NOT_STARTED"
}],
"event": "vendor.arrived"
}Same endpoint, different eventType. Closes the task or logs hours on site.
POST/api/ext/jobsite-events{
"eventType": "vehicle_departed",
"timestamp": "2026-05-08T15:30:00Z",
"camera": { "id": "cam_lot25_entrance" },
"detection": { "vendorName": "Sussex Framing Co" }
}GET/api/ext/camerasList every camera registered to your account, with their home assignments.
DELETE/api/ext/cameras?id=xxxDeactivate a camera. Existing event history is preserved.
Every event runs through a 4-level fallback chain. The matching engine tries each in order until it locks onto the right home — so partial data still works, and registered cameras work hands-free.
Best path. Camera ID matches a registered camera; home is implicit. No homeId required in the event.
Pass homeId explicitly when the source already knows it (e.g. vendor app check-in).
Community-level event resolves to the active home in that community when only one is in flight.
Free-text location string fuzzy-matches against community names. Last-resort fallback.
Translation: register the camera once, then every event from it auto-resolves to the right home. Set it up in 30 seconds, then forget it exists.
vendor.arrivedVendor detected on site · matching task auto-startsvendor.departedVendor left · logs hours, can auto-complete taskpresence.unknownUnrecognized vehicle or person on a tracked siteJoin the private beta. Limited slots while we validate the matching engine across camera, sensor, and access-system providers in the field.
Request Beta AccessNo credit card required · Beta limited to 100 builders