Work snippetAI quote drafting
AI quote drafts from job notes and photos, with a price book lookup and technician sign-off
How I would approach quoting for a 12-tech residential service business: the technician's notes and photos become a draft quote, every price comes from the price book, the technician signs off before anyone else sees it, and Xero is updated only when the customer accepts.
Work snippet with example figures.
- Area
- AI quote drafting
- Tools
- Jobber · ServiceM8 · Xero · n8n
- Typical scope
- US$3,000–4,800
- Timeline
- About 8 weeks · 4 fixed milestones
Problem
What the owner sees
- Notes and photos taken on site that are retyped into a quote a day or two later
- Quotes that go out late, so the customer has already booked someone else
- Prices typed from memory instead of the price book
- Items forgotten, then added as a variation
- A quote built by AI and sent with nobody checking the prices
The technician has already seen the job and taken the photos. The slow part is turning that into line items with the right prices. A model can propose the lines from the notes and photos, but the prices must come from your price book and the technician must sign off before anyone else sees the draft. The quote is always sent by a person.
| Everyday situation | What goes wrong |
|---|---|
| Technician types “needs new heater, 50 gal, tank, valve” | The office guesses the rest and prices from memory |
| Photos of the rating plate stay in the job | The model number is never read, so the wrong unit is quoted |
| Price book changes after the visit | The quote uses last year’s price |
| Small items left off | Added later as a variation the customer did not expect |
| Quote accepted but not invoiced as a deposit | Nobody raises the deposit in Xero |
System map
A 12-tech residential plumbing and electrical business. Technicians write notes and take three to eight photos in the job system, and the office turns them into a quote, usually the next day. Jobs run in Jobber or ServiceM8 and the ledger is in Xero.
The example drafts the quote from the notes and photos, looks every item up in the price book, and holds the draft for the technician to sign off. Xero is updated only when the customer accepts.
| Part | What it does |
|---|---|
| Jobber or ServiceM8 | Holds the job, notes, photos, client and property, and the quote the customer sees. |
| Price book | An export of items, unit, sell price and cost, with a version number. The only source of prices. |
| Labour rules | A table of standard hours by task type and the charge-out rate. |
| Language model | Reads the notes and photos and proposes line items. It never sets a price. |
| Draft review screen | A form where the technician sees each line beside its source note or photo. |
| n8n workflow | Gathers the inputs, runs the lookups and checks, creates the draft and handles acceptance. |
| Xero | Receives the deposit or invoice with the right tax code and tracking after acceptance. |
How the data moves
- Notes and photos
- Draft requested
- Lines proposed
- Price book lookup
- Technician sign-off
- Quote sent by a person
- Accepted, Xero synced
Rules agreed in writing
These rules are what keep the draft honest. They are agreed with the technicians and the office manager and held in one table.
| Item | Example setting |
|---|---|
| Draft trigger | The technician taps Draft quote. Nothing is drafted automatically. |
| Minimum input | Notes of at least 15 words or one photo. Otherwise the app asks three short questions. |
| Prices | From the price book version in force. The model supplies an item, a quantity and a reason, never a price. |
| Item match | A line needs a price book match at 0.85 or higher. Below that it becomes a Needs price line at zero. |
| Labour | Hours from the labour rule for the task, plus any extra the technician adds with a reason. |
| Approval threshold | Quotes over US$2,500, or a margin under 25%, go to the office manager as well. |
| Status | Drafts stay in Draft. Only a person sends. A quote with a Needs price line cannot be sent. |
| Photos | Photos marked private by the technician are never sent to the model. |
Flow steps
Nine steps from the visit to the ledger. The first five happen before the customer sees anything.
| Step | Trigger | What happens | Result |
|---|---|---|---|
| 1 Visit | Technician finishes notes and photos | Notes, photos and checklist saved on the job. | Job record |
| 2 Request | Technician taps Draft quote | Notes, photos, property history and the last three jobs at the address collected. | Input bundle |
| 3 Propose | Input bundle ready | Model returns work items with quantity, unit, source and confidence. Rating plates are read from photos. | Proposed items |
| 4 Look up | Proposed items | Each item matched to the price book. Labour taken from the rule for the task type. | Priced lines |
| 5 Check | Priced lines | Totals, margin, threshold and Needs price lines checked. | Check results |
| 6 Draft | Checks run | A draft quote is created in Jobber or ServiceM8, not sent. | Draft quote ID |
| 7 Sign off | Draft created | Technician reads each line beside its source and edits or removes lines. | Signed draft |
| 8 Send | Office approves | A person sends the quote from the job system as usual. | Quote sent |
| 9 Accept | Quote accepted | n8n creates the deposit or invoice in Xero once, with tax code and tracking. | Xero ID on the job |
Field mapping
The first table shows where each proposed value comes from and lands. The second shows the checks run on every draft.
| Model output | Quote field | Rule |
|---|---|---|
| Item and reason | Line description | Price book wording, with the reason added in the internal note |
| Quantity and unit | Quantity | Rounded to the item’s unit. Length items in whole feet. |
| Price book item | Item code and sell price | Price from the book. A Needs price line carries zero. |
| Source | Internal note | Which note or photo the line came from |
| Confidence | Review flag | Below 0.90 the line is highlighted for the technician |
| Labour task type | Labour line | Hours from the labour rule at the charge-out rate |
| Check | Rule | Outcome if it fails |
|---|---|---|
| Every line priced | A price book item or a Needs price flag | The quote cannot be sent |
| Labour in range | Between 70% and 150% of the rule hours | Highlighted for the technician |
| Margin | At least 25% on materials and labour together | Sent to the office manager |
| Total threshold | Under US$2,500 without a second approval | Sent to the office manager |
| Source present | Each line points to a note, photo or rule | Line removed or sourced by the technician |
| Price book version | Same version at draft and at sign-off | Lines re-priced and changes shown |
Edge cases
These are written as test jobs, using past jobs from your own history.
| Situation | How it is handled |
|---|---|
| Notes are too short | No draft. The app asks three questions and tries again. |
| Notes say 40 gal, the plate says 50 gal | Both shown side by side. The technician chooses. |
| Item not in the price book | A Needs price line at zero. The quote cannot be sent until it is priced. |
| Quote accepted twice or the event repeats | One Xero document per quote ID. The second event is logged and ignored. |
| Scope changes after acceptance | A new quote revision is drafted and the Xero document is updated, not duplicated. |
| Technician edits a price | Not allowed. A price change goes to the office manager with a reason. |
Human sign-off and audit trail
The technician is the first approver, because they saw the job. The office manager is the second, for size and margin. Nobody else sees a draft until the first has signed.
| Who | Signs off | When | If nobody acts |
|---|---|---|---|
| Technician | Every line of the draft against the notes and photos | Same day as the visit | The draft stays hidden from the office and a reminder goes out after 4 hours |
| Office manager | Quotes over US$2,500, margin under 25%, or any price change | Within one working day | Not sent |
| Office manager | Sending the quote to the customer | After sign-off | Draft stays a draft |
| Owner | The price book, labour rules and thresholds | Quarterly and on any change | Existing rules stay |
| Field | Example |
|---|---|
| Draft ID | Quote draft ID in the job system |
| Inputs | Notes version, photo list and which photos were sent to the model |
| Model | Model name and version, prompt version |
| Price book | Version in force at draft and at sign-off |
| Technician edits | Line, before, after and the reason |
| Sign-off | Technician name and time, office approval if needed |
| Xero | Document ID, tax code and tracking written on acceptance |
Data and privacy
Photos of homes and notes about customers are personal data. The design sends only what the proposal needs.
| Data | Handling |
|---|---|
| Photos | Sent to the model only when the technician requests a draft, and never when marked private. Faces and documents are not extracted. |
| Customer details | Name and address are left out of the model request. The model sees the work, not the person. |
| Model use | A hosted model on terms that do not allow training on your data, or a local model for sites where photos must stay on your network. |
| Price book and margins | Cost prices stay in your systems. The model sees item names and units, not costs. |
Worked example
The tables below follow one example job. They show the shape of a draft, not a client result.
| Line | Source | Qty | Unit price | Line total | Confidence |
|---|---|---|---|---|---|
| Water heater, electric, 50 gal, supply only (PB-0412) | Notes and photo 2 | 1 | 612.00 | 612.00 | 0.97 |
| Expansion tank, 2 gal (PB-0588) | Notes | 1 | 74.00 | 74.00 | 0.95 |
| Discharge pipe, copper 3/4 in, per ft (PB-0231) | Notes, photo 3 | 8 | 9.50 | 76.00 | 0.91 |
| Braided connectors, 3/4 in, pair (PB-0317) | Notes | 1 | 28.00 | 28.00 | 0.96 |
| Isolation valve, 3/4 in ball (PB-0199) | Photo 4 | 1 | 36.00 | 36.00 | 0.88 |
| Plumber labour, hours (LB-01) | Labour rule WH-REPLACE | 4.5 | 95.00 | 427.50 | 0.93 |
| Haul away and disposal of old unit (PB-0902) | Notes | 1 | 45.00 | 45.00 | 0.97 |
| Permit fee, check local rules (needs price) | Notes | 1 | 0.00 | 0.00 | Flagged |
| Subtotal | 1,298.50 | ||||
| Tax at 8% | 103.88 | ||||
| Total | 1,402.38 |
| Check | Result |
|---|---|
| Every line priced | 7 of 8 priced. One Needs price line, so the quote cannot be sent yet. |
| Labour in range | 4.5 hours against 3.5 to 6.0 allowed for this task. Pass. |
| Margin | Above the 25% floor. Pass. |
| Total threshold | US$1,402.38 is under US$2,500. No second approval. |
| Source present | Eight of eight lines point to a note, a photo or a rule. Pass. |
Testing and checks
Every check has a written pass condition and fail condition before it is run. A FAIL stops go-live until it is cleared and the check is run again.
| ID | Check | Method | PASS when | FAIL when |
|---|---|---|---|---|
| T1 | Ten past jobs | Draft from old notes and photos, compare with the quote actually sent | No invented prices. Few lines added or removed by hand | Any price not from the book |
| T2 | Short notes | Submit 6 words and no photos | No draft and three questions asked | A draft appears |
| T3 | Conflict | Notes say 40 gal, photo says 50 gal | Both shown for choice | One chosen silently |
| T4 | Unknown item | Ask for an item not in the book | Needs price line, quote cannot be sent | Sendable |
| T5 | Price book change | Change a price between draft and sign-off | Re-priced and shown | Old price stays |
| T6 | Private photo | Mark one photo private | Not in the model request log | Sent to the model |
| T7 | Approval threshold | Draft a US$3,000 job | Goes to the office manager | Sent without approval |
| T8 | Acceptance sync | Accept a test quote | One Xero document, right tax code and tracking | None or two |
| T9 | Repeated event | Send the acceptance event twice | Second logged and ignored | Two documents |
| T10 | Revision | Change scope after acceptance | Same Xero document updated | New duplicate document |
Scope and milestones
A fixed scope agreed in writing before anything starts. Each milestone is paid when you sign off its deliverable.
| Area | Included |
|---|---|
| Systems Audit | Review of the job system quote flow, the price book and the Xero link, a 45-minute call, written findings and a fixed quote |
| Price book and labour rules | Export, versioning and a labour table agreed with the office |
| Draft engine | Notes and photos to proposed items, price book lookup and checks |
| Draft review screen | Sign-off form beside sources, with edits logged |
| Quote creation | Draft quotes in Jobber or ServiceM8, never sent automatically |
| Xero on acceptance | Deposit or invoice created once, with tax code and tracking |
| Testing | Ten checks, run on past jobs from your own history |
| Handover | Written SOPs, a recorded handover video and files you own, plus 14 days of fixes after go-live |
| Not included | Tax filing and statutory returns. |
| Also outside the scope | Redesigning the price book. Training technicians in photo habits beyond one short session. Model usage fees, billed to you by the vendors. Sending quotes automatically. |
| Milestone | Deliverable | Timing | Share |
|---|---|---|---|
| M1 Rules and price book | Quote rules, thresholds and labour table signed, price book exported | Weeks 1 to 2 | 25% |
| M2 Draft engine | Drafts from past jobs with checks, T1 to T5 pass | Weeks 3 to 4 | 30% |
| M3 Sign-off and Xero | Review screen, quote creation, acceptance sync, T6 to T10 pass | Weeks 5 to 6 | 30% |
| M4 Pilot and handover | Two weeks with three technicians, SOPs, handover video, 14 days of fixes | Weeks 7 to 8 | 15% |
Typical scope for this kind of project: US$3,000–4,800
About 8 weeks across 4 fixed milestones. The Systems Audit (US$300, fixed) comes first and confirms the scope.
Describe what is going wrong between your job system and your books, and I will say where I would look first.
Send a short note through the form on the home page. I will reply with where I would start, and whether the US$300 Systems Audit is the right first step.