Abstract
iSimplifyMe built the Field Service Platform for a commercial plumbing contractor with about fifty technicians. It carries a job in one record from the write-up to the payment: the quote, the customer's approval, dispatch, the technician's day, the closeout, the invoice, and the accounting entry.
QuickBooks stays the ledger. Claude Opus 5 handles the two steps where reading beats typing: turning a technician's spoken notes into a write-up, and turning supplier documents into line items.
Problem
A contractor's work lives in pieces: an estimating spreadsheet, a scheduling app, a truck-tracking portal, accounting software, and paper time sheets. Every quote is typed into accounting by hand at send, again at award, and again at invoice.
Pricing waits on one estimator, and the follow-ups live in spreadsheet comments that disappear when a row moves. A site visit becomes a quote days later, after the details have faded.
Institutional customers can take months to award a quote, and material prices move in the meantime. The re-quote is done by hand, and the customer cannot see what changed.
Approach
One record per job
Every stage writes to the same job, down to each version of the quote and every status tap, stamped with the name of the person who made it. Every table carries an organization key, so the schema is built for more than one contractor.
Field write-ups
On site, a technician dictates or types a sentence or two and can attach a photo. Claude Opus 5 returns a structured write-up in the contractor's own format: location, issue, resolution steps, material list, labor hours, crew, duration, matching standard scopes, and the questions to settle before pricing.
The model takes its format from the contractor's own standard scopes and three of its past write-ups, and it reads fixture details and pipe sizes from the photo.
It never sets a price. The write-up lands in the estimator's queue.
Estimating queue and pricing
The estimator works from one queue: every quote waiting on a price, oldest first, with its comment thread attached. A pricing engine applies the contractor's own formula for labor, materials, and subcontractors.
A price book mined from the contractor's estimating archive gives each work type its median price, the spread of its middle half, and its typical labor hours. The final number stays the estimator's, and the engine's figure is kept beside it, so the gap is on the record.
Approval and re-pricing
The customer approves from a link on their own phone, with no account to create. Retail customers choose between good, better, and best options; institutional customers see one price and a purchase-order line.
Approval puts the job in the dispatch board's unassigned lane and texts the office. When an award arrives months later, the quote is re-priced at today's material cost with the estimator's margin carried forward.
The re-price becomes version two of the same quote. The customer's page shows the reason and the previous price, and the same QuickBooks estimate updates.
Dispatch and the technician's phone
The dispatch board lays out each crew's day, with a lead and helpers on every job, and unfinished work carries forward to the next day. The technician's phone shows the day's jobs and moves each one through en route, on site, and complete.
While location sharing is on, the phone reports its position every 30 seconds, or sooner when it moves 30 meters. Two consecutive fixes within 150 meters of the job address mark the technician on site, and switching sharing off deletes the live position.
Closeout, invoice, and the ledger
Only the job's lead can close it out. A helper's phone marks that helper done.
The closeout records the work, the materials used, photos, and any callback, and submitting it cuts the invoice from the approved quote.
The invoice goes into QuickBooks Online with its PDF and the closeout photos attached, in a layout chosen per customer type. A background job reads payments back from QuickBooks every 15 minutes.
Supplier documents
Supplier quotes and invoices arrive as a PDF, a photo, or an email to a materials address. Claude reads the line items from each vendor's own layout, and posting the document records its total as actual material cost against the quote.
Time sheets
Technicians clock in and out on the phone, and the day sheet totals regular, time-and-a-half, and double time by the contractor's rules. An adjustment needs a reason, the technician signs with a finger, the office countersigns, and the week exports for payroll.
Stack
Next.js with Drizzle on Postgres, built to run as an ECS Fargate service behind an Application Load Balancer on AWS. Inbound mail arrives through SES into S3, texts go through Twilio, and SST defines the stack, deployed by GitHub Actions.
Status
- Built end to end on a working contractor's own records: its customers, open quotes, standard scopes, and comment threads, imported from its exports.
- Both AI steps call Claude Opus 5 through Anthropic's API, with schema-validated output, and both ran on the contractor's own documents.
- The QuickBooks Online round trip is verified against a sandbox company: estimate at send, update at re-price, invoice at completion, payment read back.
- The infrastructure is code: SST defines the network, database, service, mail intake, and DNS, and GitHub Actions deploys them.
Links
- Related → Property Intelligence · SOW Generator · Bank Reconciliation