Daily Ops
Pre-trip checks, shift reports, repair tickets, quick actions and what the agent has learned about your site.
Daily Ops is the shift: what got checked at the start, what moved during it, what broke, and what Dozer remembers after. A texted pre-trip and a filled-in form produce the same records, so an operator with a phone and an integration writing over the API land in the same place.
Create a shift-report — POST /api/v1/shift-reports
curl -X POST "https://trydozer.com/api/v1/shift-reports" \
-H "Authorization: Bearer $DASH_API_KEY" \
-H "Project-ID: pr_northpit" \
-H "Content-Type: application/json" \
-d '{"equipment":"HT-14","operator":"dan-whitfield","location":"North Pit","date":"2026-07-28","ending_hours":11850,"hours_worked":8,"source":"shift_report","eq_type":"truck","load_count":24,"tons_moved":480}'File the end-of-shift report for HT-14 — 8 hours, 24 loadsdata_set {
"collection": "shift_reports",
"object_id": "a60h-12",
"data": {
"equipment": "HT-14",
"operator": "dan-whitfield",
"location": "North Pit",
"date": "2026-07-28",
"ending_hours": 11850,
"hours_worked": 8,
"source": "shift_report",
"eq_type": "truck",
"load_count": 24,
"tons_moved": 480
}
}{
"object": "shift-report",
"id": "obj_123",
"title": "title",
"shift": "shift",
"equipment": "HT-14",
"operator": "dan-whitfield",
"location": "North Pit",
"date": "2026-07-28",
"ending_hours": 11850,
"hours_worked": 8,
"load_count": 24,
"tons_moved": 480,
"sluicing_hours": 1,
"downtime_hours": 1,
"downtime_cause": "Wash plant clog",
"shift_notes": "shift notes",
"status": "approved",
"reported_at": "2026-07-25T12:00:00.000Z",
"created_at": "2026-07-25T12:00:00.000Z",
"updated_at": "2026-07-25T12:00:00.000Z"
}Four resources, each with its own reference:
shift-reports (what a shift moved and what
stopped it), repair-tickets (work to be done
on a machine, from flagged to fixed),
custom-actions (owner-defined quick
actions — a label, an emoji and the prompt they launch) and
learnings (what the agent has learned about your
site).
What to know before you call it
shift-reports declares no update: a filed shift is the record of a shift, so a
correction is a new event on it rather than a rewrite. Repair tickets are never
deleted either — they close. Both declare events, and a ticket carries source,
so where it came from (a pre-trip, a fault code, a threshold alert) is a filter
rather than a guess.
Property names are exact. The ticket detail surface reads equipment,
description, severity, status, location and source; a write that invents
a field name renders as —. custom-actions are owner-authored and nothing seeds
them, so an empty list is the honest answer, not an error.
Hours may not go backward. Report 11,842 on a machine whose last known reading
is 12,500 and the write is refused and the step ends failed, with a request to
reconfirm the meter. Dozer never averages, guesses, or quietly accepts the lower
number. Other validation failures name the field in param
(Error Codes); the project-level brakes are on
Control Plane.
Let the agent do it
Each record here is a skill away — say the shift and the skill files it.
tasks_create { "project_id": "pr_northpit", "skill_id": "pre-trip", "run": true,
"prompt": "Pre-trip on A60H-12 at Dominion, 11,842 hours, brakes failed." }
tasks_status { "task_id": "ts_…" } // → the event, the update, and the ticket if items failedpre-trip is the start-of-shift checklist with photo
capture. It
files everything in one atomic batch so nothing is left half-written: the timeline
event, the hours and location update, and — only when items fail — a repair ticket
carrying the id of the event that produced it.
shift-report captures end-of-shift production —
loads, tons, hours, downtime. code-lookup turns a
dash fault code into a diagnosis with manual references — "What is SPN 100 FMI 1
on the A60H?" — and raises a ticket where one is warranted.
chat is the general door, and what the Log a Finding,
Mining Plan and Sites Output quick actions launch.
Learnings accumulate as create/remove facts — never strengthened, never decayed — and ride into later runs as context.
Next: Mechanic AI for triage and assignment of the tickets this domain opens · Site & Fleet for the machines these records point at · Devices & Media for the alerts that open tickets without anyone typing.