Underground utility work, tracked from the trench to the invoice — every capability the platform ships, laid out the way a site plan lays out a job.
Where work enters the system. No app to open — a work log is a text message or a forwarded email, read the way the field actually writes it. The formats crews send are listed at /formats.
| Mark | Feature | What it does | |
|---|---|---|---|
| SMS-01 | Documented format | "LOG" + locate ticket + labor codes + crew, parsed deterministically — no LLM in the parsing path. | Live |
| SMS-02 | Crew's own format | A date-led message with a measured run or a known job name is read as a work log too, then normalised into the same parser. | Live |
| SMS-03 | Corrections | Reply "DATE: 8/19" or "JT-01 150" to fix one field on a pending draft without retyping the whole log. | Live |
| SMS-04 | Approval replies | YES/NO against a short code saves or discards the draft the system read back. | Live |
| SMS-05 | Disambiguation questions | An unknown labor code, project or locate ticket comes back as one ranked question a sender answers with a single letter, so the rest of the message is held rather than lost. | Live |
| SMS-06 | Phone activation gate | Nothing parses until the number is verified and tied to a company. One identical reply for every rejection reason, so a stranger can't fingerprint the system — and it carries the address where a supervisor can register the number themselves. | Live |
| SMS-07 | Opt-out & help | STOP/START honoured immediately; HELP replies with the format, once. | Live |
| SMS-08 | Site photos | Photos attach to the work log they belong to, whether they arrive with it or as their own message straight after it — which is how a phone actually sends a batch of ten. The reply says how many were kept. | Live |
| SMS-09 | Day reports | A roll call, a named absence or a rained-off day is recognised as a report in its own right, recorded against the day it covers, and answered — without inventing a work log or marking anybody present. | Live |
| SMS-10 | Reads back what it understood | Where a name or code is read as something slightly different, the confirmation says so on its own line above the YES, so the substitution is approved by a person rather than assumed. | Live |
| EML-01 | Email work logs | The same grammar, read from a forwarded or sent email body — one parser for both channels. | Live |
| EML-02 | Gmail project sweep | A connected mailbox is scanned for new projects and their attachments, surfaced as candidates rather than filed automatically. | Live |
| EML-03 | Candidate review | Approve or reject swept project candidates in batches from the Gmail integration page. | Live |
What every work log ultimately connects to — the projects, prices, people and paperwork a contractor already runs a job by.
| Mark | Feature | What it does | |
|---|---|---|---|
| PRJ-01 | Projects | Owner, prime client, contractor, and up to two subcontractors per project — the chain a text can be filed against. | Live |
| PRJ-02 | Also Known As | Office-maintained alias list per project, for the client or site name the field actually says out loud. | Live |
| LOC-01 | Locate tickets | USA 811 fields — status, address, utility type, marked/cleared dates, clearance proof. | Live |
| LAB-01 | Labor codes & sets | Per-company price books; import or export the whole set as CSV. | Live |
| WLG-01 | Work logs | Date, crew, labor codes with quantities, description, photos — one record per shift on one job. | Live |
| WLG-02 | Crew clock | Time-based crew reporting layered onto the same work-log records. | Live |
| INV-01 | Invoicing | Generate an invoice from a date range of work logs; export PDF or Excel; copy an existing invoice. | Live |
| CRW-01 | Crew & supervisors | Bulk-add a crew from a pasted roster; invite and assign supervisors per project. | Live |
| FIL-01 | Project files | Uploads stream through a same-origin proxy, so PDFs and images preview in every browser — including Brave with Shields up. | Live |
| APP-01 | Install on a phone | Installs to a home screen and opens like an app. A scannable code and the per-platform steps are at /install. | Live |
| APP-02 | Account colours | Administrator, the four company roles and supervisor each carry their own colour and label wherever accounts are listed, so a prime client and a second-tier subcontractor are told apart at a glance. | Live |
Optional connections to systems the contractor already uses. Nothing above depends on these being configured.
| Mark | Feature | What it does | |
|---|---|---|---|
| XRO-01 | Xero | OAuth-connect a Xero organisation; sync generated invoices to it. | Live |
| GML-01 | Gmail | OAuth-connect a mailbox for the project sweep in Zone 01; tokens are encrypted at rest, never stored in plain text. | Live |
What governs the whole site rather than one structure on it — who can log in, who's suspended, and what a compromised script can't do.
| Mark | Feature | What it does | |
|---|---|---|---|
| ADM-01 | Company control | Suspend a company with a required reason; every SMS and login checks the flag before doing anything. | Live |
| ADM-02 | Supervisor control | See who can actually text in at a glance; verify or unlink a phone; trigger a password reset. | Live |
| ADM-03 | Filters everywhere | Every admin and project list — companies, projects, supervisors, members — filters by role, status, or SMS-readiness, with a card/list toggle. | Live |
| ADM-04 | Invites | Invite a company or a supervisor by email; track pending invitations. | Live |
| ADM-05 | Turned away | Numbers that have texted work in without being registered, grouped with how often they tried and what they last sent — so the office can tell who is trying to file and chase them. | Live |
| ADM-06 | Action log | Suspensions, company edits, phone verifications and unlinks, and password resets are each recorded with who did it, to whom, why and when. Append-only. | Live |
| ADM-07 | Daily digest | A once-a-day summary per company of what was filed and what is still waiting to be approved. Built, and currently sending to nobody — it stays off until you ask for it and say who should receive it. | Off |
| SEC-01 | Security headers | CSP, HSTS, frame-ancestors, nosniff and a locked-down permissions policy on every response. | Live |
| SEC-02 | Encryption at rest | Third-party tokens (Xero, Gmail) are AES-256-GCM encrypted before they touch the database. | Live |
| SEC-03 | Rate limiting | Per-address, per-endpoint limits in front of every auth route. | Live |
| SEC-04 | Runtime isolation | The application runs as an unprivileged user in its container, under memory, CPU and process limits, with a health check the platform can act on and log rotation that cannot fill the disk. | Live |
| AUT-01 | Accounts | Company and supervisor signup, login, email verification, password reset, multiple email addresses per account. | Live |