Open the app.
Take the photo.
It files itself.
Job site photo documentation for contractors and field crews. Photos land on the right job by GPS, keep the timestamp from the moment the shutter fired, and roll into branded reports you send as a PDF or a link.
Self-hosted · one-time cost · source included · unlimited crew
14 Harlan Street
Auto-filed by GPS · 4m
Under a second to the shutter
The app opens straight to a live camera. Nothing stands between wanting to document something and having documented it.
Built for no signal
Photos save the instant they are taken and upload themselves later — in order, none dropped, none duplicated.
A report in four clicks
Select photos, pick a template, send a branded PDF or a share link your client opens in a browser.
The camera is the whole product
Documentation that takes four taps doesn't get done. So the app opens directly to a live preview — no splash, no project picker — and the shutter never waits on anything.
GPS matching that refuses to guess
When two jobs sit close together, or the fix is too coarse to tell them apart, it offers both and lets a crew member tap once. Being confidently wrong costs more trust than being unsure.
Before and after, paired on site
The pairing is decided while the crew is still standing in front of the thing — not reconstructed from dates in the office three weeks later.
Tags and notes after the fact
Shoot first. Add the caption when there is a moment, or let the office do it.
What the matcher decides
Standing on the job
4m away
14 Harlan Street
Filed automatically
Two units, 60m apart
31m and 34m
Brayford Works — Unit 6 or 9
Asks you to pick
Weak GPS fix
±400m
14 Harlan Street
Suggests, waits for a tap
Nothing nearby
no match
Unfiled
Kept safe for the office
Upload queue
12 pending
Flashing pulled away from the stack
07:12
Standing water, north-east corner
07:19
Perished felt, second course
08:04
Membrane laid and sealed
08:31
Your photos are safe on this phone and will upload on their own once you have signal.
A basement with no bars is the normal case
Tagging a photo to a project is trivial. What isn't trivial is forty photos taken underground, a drive home, and every one of them arriving correctly. That is where the engineering went.
Written to the phone before the network is even tried
The file lands in app storage and a row goes into the device database the instant the shutter fires. From that moment the photo survives the app being killed or the battery dying.
A retry can never make a second copy
Every capture carries an ID generated on the phone. The server deduplicates on it, so a response lost on a dying connection costs a retry — never a duplicate, never a loss.
Failures stay on screen
Nothing is quietly dropped to keep a counter tidy. The crew sees the pending count before they leave site, and so does the office.
Photos that hold up in a dispute
Every photo keeps the device timestamp from the moment it was taken — not the moment it uploaded. A photo shot at 07:12 and synced at 18:40 is still evidence about 07:12, and that is what the report prints.
- Capture time, coordinates and photographer, recorded at the source and read-only after
- Branded PDFs carrying your logo and company details
- Before/after as a first-class template, not a grid you assemble by hand
- Share links you can revoke or expire, scoped to one report
- Archive finished jobs without deleting a single photo
14 Harlan Street — progress report
Northpoint Roofing · R. Marsh
- Captured
- 14 Mar 2026 · 07:12:41
- Reached server
- 14 Mar 2026 · 18:40
- Coordinates
- 51.50735, -0.12776
- Filed by
- GPS · 23m away
- Captured by
- S. Porter
- Device
- Site phone — crew 1
Held in the device queue for 11h 27m before it reached the server.
$0
per user, per month
Unlimited
crew members and photos
100%
kept on your own storage
2 apps
office dashboard and native capture
It complements your job system, it doesn't replace it
Trace is the photo layer — deliberately not a CRM and not a field service platform. If you already run Jobber, JobNimbus, AccuLynx or your own software, Trace pushes photos and finished reports into it over signed webhooks and exposes a read API for pulling on your own schedule.
photo.uploaded
photo.updated
project.created
report.generated
report.shared
POST https://your-crm.example.com/hooks/trace
{
"event": "photo.uploaded",
"created_at": "2026-03-14T18:40:02+00:00",
"team": { "id": 4, "name": "Northpoint Roofing" },
"data": {
"photo": {
"id": 91422,
"captured_at": "2026-03-14T07:12:41+00:00",
"gps": { "lat": 51.50735, "lng": -0.12776 },
"tags": ["roof", "before"],
"urls": { "thumb": "…", "full": "…" }
},
"project": {
"id": 218,
"name": "14 Harlan Street — roof replacement",
"client_name": "R. Marsh"
}
}
}
Trade-agnostic on purpose
Most tools in this category market hard at one trade. A job site is a job site.
One license. Every crew member you have.
The hosted tools in this category run $24–49 per user, per month, forever. That maths works against you exactly when things are going well — every crew member you add is another line item, so teams end up sharing logins or leaving people off the system entirely.
One-time
license, source included
Unlimited crew members
Unlimited projects and photos
Office dashboard and native capture app
Your own server, your own storage
Signed webhooks and a read API
Full source, modify anything
Stop paying per crew member to take photos
Install it, point it at your storage, hand the app to your crews.