Core product
The daily habit, not the dashboard.
DirtFleet · 5:00 PM
Log today's hours?
CAT 320 #104 · Last: 4,812.6
Pinned
End-of-day push → one-tap log
The daily loop
Find the unit, enter the meter, and save.
The shape of every interaction crews have with the app — built for thumbs in gloves and screens in the sun.
App flow (core loop)
Three stages, one job: get honest hours on the books before the crew leaves the yard.
- 1
Find equipment
Assigned, pinned, and recently logged units appear before the full fleet.
Search by nickname, unit number, class, or yard.
- 2
Enter reading
Type the current meter, or use an optional photo to suggest a number.
The last reading stays visible. Lower readings require an explanation.
- 3
Save
Save immediately; add a note, photo, or location only when needed.
If the device is offline, the log queues locally and syncs when signal returns.
Capture
Type the meter — or just take a photo of the dash.
A meter photo can assist with OCR when typing is awkward. The driver must confirm or edit the detected number; the photo stays with the log for later review.
- →Snap, read, confirm or edit, then save.
- →Both the photo and the entered value are kept on the asset record.
- →Hour readings (with optional photo) queue offline and sync later.
- →Mechanics can pull the photo later if a reading looks off.
CAT 320 #104 · Photo log
Engine hrs
4,851.2
Detected reading
4,851.2
Last reading 4,812.6 · Δ +38.6 hrs
Photo of dash → confirm reading → done
Reminders that respect the crew
Push at end of day. Auto-flags when the meter says it's time.
One ping at end of shift. A gentle nudge if a unit's still missing. An auto-flag when an asset crosses its hour-based service interval. That's the cadence.
Reminder copy (samples)
Defaults: end-of-day at 5 PM or your shift end; optional start-of-shift prompt. Copy stays short — operators decide in a glance.
End of day (default)
Log today's hours?
5:00 PMCAT 320 #104 · Last reading 4,812.6 — tap to update before you roll out.
Start of shift (optional)
Start shift — opening reading
6:45 AMSelect the unit you're running today and confirm start hours.
Gentle nudge (if enabled)
Still open: 2 assets
8:15 PMLowboy 48' and skid #09 need a reading for today. Takes ~20 seconds.
Manager / Mechanic alert
🔴 Urgent: skid #09 flagged out of service
2:13 PMDriver M. Ortiz — “hydraulic line leaking, parked at south yard.” Tap to view photo.
Auto-flag (hour-based PM)
🟡 PM due: Excavator 320 #104
AutoHit 5,000 hrs — service interval reached. Mechanic dashboard updated.
Repair flagging
Yellow for routine, red for urgent.
Anyone in the field — driver, operator, mechanic — can flag an asset in seconds when you have signal. Red flags page the manager and the mechanic in real time. Yellow flags hit the queue.
- →Yellow = needs repair (routine), Red = urgent / out of service.
- →Voice-to-text or photo attaches in two taps (online).
- →Push notifications + optional SMS fallback for red flags.
- →Mechanics resolve with notes + photos; auto-clears on the dashboard.
Mechanic · Queue
Sorted by urgency
Skid #09
Hyd line leaking — flagged 2:13 PM by M. Ortiz
Photo attached · 2,167 hrs
CAT 320 #104
PM due — passed 5,000 hr interval
Auto-flag · 4,851 hrs
Light tower #03
Approaching 250 hr filter change
Auto-flag · 612 hrs
F-450 #211
On schedule
Last service 1,200 mi ago
Offline hour logging
Yards, pits, and dead zones don't drop the meter log.
Hour readings queue on the device when signal dies. The instant a phone hits a bar of signal — driving back to the yard, walking past the office wifi — queued meter logs upload to Postgres. Flags, repair notes, and most other actions still need a connection.
- →Offline hour logging on phone or tablet — queued entries sync when you are back online.
- →Conflict-free hour sync: nothing is lost if signal drops mid-save.
- →No GPS tracking, no constant network polling, no battery hit.
- →Sync state is visible on hour entries — drivers know the log landed.
Offline · queued on device
- 07:14Log: CAT 320 #104 → 4,820.4synced
- 11:48Photo: Skid #09 dashsynced
- 13:02Flag 🔴 Skid #09 — hydraulic leakqueued
- 13:05Note + photo on flagqueued
- 16:30Log: CAT 320 #104 → 4,851.2queued
Hardware tracker · Target Mid-2027
Same app. Now with a tracker that talks to it.
Software-only fleets keep working unchanged. Beta cohorts who want telemetry get a diagnostic-port tracker built for the same crews — engine hours sync without anyone tapping anything, the hardware supports up to three optional cameras for incident capture, and a local WiFi mode keeps things going in cellular dead zones.
- →J1939 (yellow iron) or OBD-II (light-duty) — engine hours, RPM, coolant, faults.
- →Supports up to 3 optional cameras (e.g. forward, left mirror, right mirror) — clip-on incident review.
- →Local WiFi mesh keeps telemetry buffering when cell drops.
- →ATECC608A secure element + signed firmware updates over the air.
- →Hardware is optional — pricing publishes when trackers ship.
DirtFleet Tracker · DF-T1
Diagnostic-port edge unit · up to 3 cams
- J1939 · 37 PIDs
ECU bus
Engine hours, RPM, coolant, oil pressure
- 3D fix · 8 sats
GPS
HDOP 0.7 · ±2.1 m
- Up to 3 inputs
Cameras
Optional · e.g. forward · L-mirror · R-mirror
- LTE · -71 dBm
Uplink
Local WiFi mesh · standby
- ATECC608A · OK
Secure boot
Token rotated 4d ago
Render preview — production hardware targets Mid-2027
Scope, in plain English
What's in the core. What stays an add-on.
We pick simple over complete on purpose. The base stays small, fast to adopt, and easy to trust. Heavier modules ship as paid add-ons — only when you actually want them.
In the core (from $99 / mo · capped at $299)
- ✓Hours / meter logging (typed or photo)
- ✓Repair flagging (yellow / red) with photos
- ✓Push reminders + auto-flag at hour-based PM
- ✓Mechanic dashboard, manager dashboard
- ✓Tool tracking (low-stock, PM, warranty, utilization)
- ✓CSV / PDF exports, week / month rollups
- ✓Unlimited drivers, mechanics, managers
- ✓Offline hour-log queue on phone + tablet
Optional add-ons (later)
- +Full TMS (dispatch, routing, freight)
- +Deep warehouse workflows
- +QuickBooks, WEX, Geotab & Samsara depth (beyond today's CSV) — see /integrations
- +Advanced analytics + custom dashboards
- +Premium API tier (+$29 / mo org-wide)
These don't ship in v1. They stay opt-in so the core stays easy to adopt and keeps doing one thing well. Integrations board →
Built for three jobs
One product, three honest roles.
Drivers log. Mechanics fix. Managers see. We didn't build a generic app and rename the buttons — each role has a real workflow.
Drivers / operators
Assigned and recent units appear first. Find the unit, enter the meter, and save.
See the role page →
Mechanics
Queue sorted by urgency. Resolve flags with notes + photos when you have signal.
See the role page →
Fleet managers
Real numbers in real time. Push alerts on red flags. Exports for finance.
See the role page →
Tool tracking module
Plate compactors and generators, same app.
The engine-powered tools your crews actually track — plate compactors, jumping jacks, generators, welders, light towers, demo saws — get the same hour-based PM treatment as excavators. Hand tools, kits, and consumables sit next to them. QR / NFC scan opens the right action (log hours for equipment, check out or report damage for tools). Dashboard shows who has each tool right now; low-stock alerts fire when consumables drop below threshold. Built-in, not a paid add-on.
See the tool tracking module →FAQ
Common questions about the product
What about trailers and other equipment without an hour meter?
Trailers, attachments, and no-meter vehicles get a status check-in instead of a numeric reading: In use / Idle / Out of service, with optional photo + note. Same flag flow, same dashboard, same map. Service intervals for these fall back to date-based PM.
Hours, miles, both — how does the app handle a mixed fleet?
Each asset has a meter type: HOURS (yellow iron, gensets), ODOMETER (pickups, vans — miles or km), or NONE (trailers, attachments). Drivers see the right input automatically; managers see units labeled correctly across the dashboard, exports, and PM alerts.
Is photo-of-dashboard logging really part of the base plan?
Yes — and it now reads the meter for you. Local OCR runs on-device (Tesseract.js, free) and detects the reading; the driver confirms or edits before save. If local OCR struggles, a server-side Claude call covers the gap. Both paths included in the base plan.
What stays out of the core product?
Full TMS, deep warehouse workflows, advanced analytics, and third-party video stacks stay paid add-ons. We keep the core minimal so it actually gets used — see /integrations for named vendors and honest status.
Which integrations are live vs roadmap?
CSV/PDF exports, bulk import, VIN decode, push, and email are live today. Named accounting, fuel-card, and telematics connectors (QuickBooks Online, WEX, Geotab, Samsara, Fleetio) are on the transparent roadmap with per-vendor notes — see dirtfleet.app/integrations.
How does offline hour logging work?
Hour logs (and meter photos on those logs) save into a device queue when the browser reports no connection, then POST when you're back online (IndexedDB outbox + clientMutationId dedupe). Flags, repairs, and most other writes still need connectivity today. The installed PWA also caches many GET responses so common screens stay readable in pits and dead zones.
Do you need OCR / AI to read the meter from the photo?
No. Local OCR (Tesseract.js) suggests a reading when it can, and drivers always confirm or edit before save. Claude can assist when on-device OCR misses; you can still type the reading manually if you prefer no AI.
Can a driver see another driver's logs?
No. Drivers see their own logs and the assets they touched. Mechanics see flagged + recently-logged assets. Fleet managers see everything for their organization. Tenant data is isolated at the database level — never mingled across companies.
Get started
Ready to try the daily habit?
We'll help import historic data when you want it. ~30 minutes of setup with us, then ~30 seconds a shift for drivers.