HVAC field-service app with customers, jobs, technicians, parts, and invoicing
hvac-field-service · 3600 s per turn · source
The ask
We're a 12-person HVAC company. I need to track customers, jobs, technicians, and the parts used on each job, and invoice when a job closes: the invoice is the parts we used at our sell price plus labor hours at our hourly rate. Import our customer and parts lists (attached); the customer list came out of our old system and has some duplicates in it, so I only want each customer once. Sales reps should only see their own customers, and technicians should only see the jobs assigned to them. I also want to invite the rest of the team with their own logins at different access levels, including a read-only one for our bookkeeper, and a dashboard with our key numbers. Give me an admin login and a login for one sales rep.
Seed files the agent must import: customers.csv</code>, <code>parts.csv. The agent must leave a RESULT.json with a reachable URL, an admin login, and the named restricted login.
Acceptance checklist
31 binary items. The first 14 are the enterprise baseline shared by every build task (delivery, invitations, roles, server-side authorization, scoped live dashboard, exact lists and exports, audit metadata, validation, persistence); the rest are application-specific. Core items, which together define "first usable": 1, 3, 11, 17, 20, 21, 23, 24, 26.
| Tag | Items |
|---|---|
| Exact | 11 |
| Permission | 6 |
| Rule | 3 |
| Automation | 2 |
| Dashboard | 2 |
| Delivery | 2 |
| Sharing | 2 |
| API | 1 |
| Audit | 1 |
| Persistence | 1 |
The full checklist with per-item "how to check" instructions and expected figures is in checklist.md. Testers see it; the agent never does.
Change requests
Each change is a new one-shot turn on the carried-forward workspace. Only the owner's text below is sent; the tester items are withheld. After each change the full checklist is rerun, so regressions count.
Change 1 · 3 new checklist items
Add a warranty flag on jobs with an expiry date, and a report of jobs still under warranty. If a job is flagged as warranty it needs the expiry date filled in.
Change 2 · 3 new checklist items
Techs need to log parts used from their phone while they're on site: pick the part, put in the quantity, done. They shouldn't see our prices or costs, and they shouldn't see any customers other than the ones on their own jobs.
Change 3 · 3 new checklist items
Rename the job stages to Scheduled / En route / On site / Done / Invoiced. And stop making invoices under $50, it's not worth the paperwork: roll those into the next invoice for that customer, and let me see what's waiting to be billed. Once a job has been invoiced it should show as Invoiced.
No published score. Build runs need a human acceptance pass on a live URL, and no arm has completed one for the full set. Automated probes generate a tester sheet; they do not substitute for it. Results will be published as a separately labeled release when an arm completes.