Work sample 14 / 14AI agent integration
AI lead triage with human sign-off into HubSpot and Jobber
How I'd approach new inquiries for a multi-branch service business: an AI agent reads each one and proposes the service, urgency, contact and reply, and a person signs off before anything is created or sent.
Worked example on representative data.
- Area
- AI agent integration
- Tools
- AI agent · HubSpot · Jobber · n8n
- Typical scope
- US$3,000–4,500
- Timeline
- About 5 weeks · 4 fixed milestones
01Context
An established multi-branch service business that receives inquiries by web form and email. A sales manager and a branch coordinator work them. Contacts and deals sit in HubSpot, and requests and jobs sit in Jobber.
The systems in play
In the example the business wants faster first replies without losing control, so a person signs off before anything is created or sent.
| System | What it does for the business |
|---|---|
| Web form and inbox | Where inquiries arrive, with free text from the customer. |
| AI agent | Reads each inquiry and proposes: the service, the urgency, the contact, the deal, the Jobber request and a draft reply. It creates and sends nothing. |
| Sign-off queue | Where a person sees the inquiry beside the proposal, edits it and approves or rejects it. |
| HubSpot and Jobber | Receive the contact, deal and request only after approval. |
| Workflow tool | Runs the steps, keeps a log, and raises an alert when a step fails. n8n in the example. |
02Problem
What the owner sees
- New inquiries that sit for hours before a reply
- Contacts that land in the CRM half filled, or twice
- Emergencies mixed in with routine requests
- Fear that an automated reply will say the wrong thing
Automation that acts without a person can create a worse problem than the delay. The aim here is speed in preparing the work and a person in control of what goes out.
| Everyday situation | What goes wrong |
|---|---|
| Repeat customer | A new contact is created for someone already in the CRM |
| Updated inquiry | A form sent twice creates two deals |
| Spam | Junk is replied to or fills the pipeline |
| Out-of-area request | A quote is prepared for work the business does not do there |
| Emergency | An urgent request waits in the queue behind routine ones |
| Several services in one message | Only the first is picked up |
03Approach
Four steps, in this order. Each one ends with a result that is checked.
- LookA read-only review of the inquiry sources, the current replies, and the HubSpot and Jobber records. Nothing is changed.
- Agree the rulesService types, urgency, service area, who signs off and what a reply may say, in writing.
- Build and connectThe agent proposes, the queue shows the proposal beside the inquiry, and approved items are created in HubSpot and Jobber.
- CheckA labeled sample of past inquiries, duplicate tests and a manual fallback when the AI service is down.
| Item | Example setting |
|---|---|
| Service types | Maintenance, repair, install, quote only, other |
| Urgency | Emergency, same week, planned |
| Service area | A list of suburbs or postal codes per branch. Outside it, the proposal is a polite decline for a person to approve. |
| Sign-off | A coordinator approves routine items. A manager approves emergencies and declines. |
| Reply wording | Drafts use approved wording blocks. They never state a price, a date or a promise that a person has not entered. |
| Existing contact | Matched on email, then phone. A match is attached, not duplicated. |
04What the setup includes
What the setup includes, and why each piece is there. The detail of how it is configured is agreed in the scoping call.
Show the setup, layer by layer
| Layer | What is set up and why |
|---|---|
| Intake | The form and inbox feed one queue. Each inquiry gets an ID, so a resend is recognized. |
| Reading and proposal | The agent classifies the service and urgency, extracts the contact and address, and drafts a reply from approved wording. It also states why, quoting the words it relied on. |
| Duplicate check | Done in code, not by the agent: the contact is looked up before any record is proposed. |
| Sign-off queue | The inquiry, the proposal, the reasons and any flags on one screen. A person edits or approves, with role limits. |
| Creation and sending | HubSpot and Jobber records, and the reply, are created only after approval. A retry key means a failed step cannot create a second record. |
| Fallback | If the AI service is down, inquiries still arrive in the queue unread and are handled by hand. Nothing is lost. |
| Log and alerts | Each step is logged with a user and a time. A failed step raises an alert and lands in an exceptions list. |
How the data moves
- Inquiry arrives
- Duplicate check
- Agent proposes
- Person signs off
- Contact, deal and request created
- Reply sent
- Every step logged
05Edge cases
These are agreed with the sales manager and tested on past inquiries before go-live.
| Situation | How it is handled |
|---|---|
| Repeat customer | The existing contact is attached and the proposal says so. No new contact is created. |
| Same form sent twice | Recognized by the inquiry ID and the contact. The second is linked to the first. |
| Spam or a sales pitch | Marked as spam in the queue. A person clears it, and nothing is created or sent. |
| Outside the service area | A decline draft is prepared for approval. No Jobber request is proposed. |
| Emergency wording | Flagged as an emergency and alerted to the on-call person straight away. It is still a person who replies. |
| Several services in one message | Split into separate proposed requests, each shown for approval |
| Unclear or low confidence | Shown as unclear with the reason. A person decides. |
| Agent proposes the wrong service | The person corrects it. The correction is logged and reviewed monthly. |
| Sign-off by someone without the right role | Blocked. Emergencies and declines need a manager. |
| AI service is down | The queue shows inquiries as unread and manual handling continues |
| Who did what | Each proposal, edit, approval and send is logged with the user and the time |
06Worked example
The tables below use representative data. They show the shape of the queue and the checks, not a client result. No accuracy figure is claimed.
| Inquiry | Agent proposal | Flag | Result |
|---|---|---|---|
| "Need the boiler serviced before winter" | Maintenance, planned. New contact, deal and request. | None | Approved as proposed |
| "Water coming through the ceiling right now" | Repair, emergency. Existing contact. | Emergency | Alert sent to on-call. Reply written by the manager. |
| "Following up on my quote from last month" | Existing contact. No new deal. | Repeat customer | Attached to the open deal |
| "Can you do a garden wall in another city?" | Decline draft. | Outside the service area | Decline approved by a manager |
| "Best SEO packages for your site" | Spam. | Spam | Cleared |
| "Gutters and a fence panel, also a quote for the deck" | Three proposed requests. | Several services | Two approved, one edited |
| Inquiry | Person’s label | Agent’s label | Match |
|---|---|---|---|
| Past inquiry A | Repair, emergency | Repair, emergency | Yes |
| Past inquiry B | Install, planned | Maintenance, planned | No: reviewed, wording rule added |
| Past inquiry C | Spam | Spam | Yes |
| Past inquiry D | Quote only, planned | Quote only, planned | Yes |
| Test | Expected | Result |
|---|---|---|
| Same form sent twice | One contact, one deal | Pass |
| Known customer, new email address | Matched on phone, no new contact | Pass |
| Retry after a failed step | No second request | Pass |
07How the result is checked
The checks that matter are the ones in code and the person who signs off. The agent’s proposals are tested against past inquiries before it is switched on.
| Check | How | Pass condition |
|---|---|---|
| Labeled sample | A set of past inquiries labeled by the sales manager, compared to the agent’s labels | Every difference reviewed and either a rule is added or the item stays with a person |
| Duplicates | Resends, retries and known customers | No second contact, deal or request |
| Nothing sent alone | Approvals switched off in a test | Nothing is created or sent |
| Emergencies | Scripted emergency inquiries | Alert sent and the item is first in the queue |
| Fallback | AI service switched off | Queue shows unread items and manual handling continues |
| After go-live | Every flagged item and a regular sample of the rest | Reviewed and logged |
08Scope and milestones
A fixed scope agreed in writing before anything starts. Each milestone is paid when you sign off its deliverable.
| Area | Included |
|---|---|
| Health Check | Review of the inquiry sources, current replies and the HubSpot and Jobber records, a 45-minute call, written findings and a fixed quote |
| Rules | Service types, urgency, service area, roles and reply wording, in writing |
| Intake and proposal | One queue, duplicate check in code, and the agent’s proposal with reasons |
| Sign-off queue | A screen for approvers, with role limits and the log |
| Creation | HubSpot and Jobber records and replies created only after approval |
| Testing | A labeled sample of past inquiries, duplicate tests and a fallback test |
| Handover | Written SOPs, a recorded walkthrough and files you own, plus 14 days of fixes after go-live |
| Not included | Tax filing or payroll. |
| Also outside the scope | The cost of the AI service. Rebuilding the website form. Moving to a different CRM or job system. Software subscriptions (billed to you by the vendors). |
| Milestone | Deliverable | Timing | Share |
|---|---|---|---|
| M1 Health Check and rules | Findings, a fixed quote and the rules in writing | Week 1 | 20% |
| M2 Intake and proposal | Queue and proposals running on past inquiries | Weeks 2 to 3 | 30% |
| M3 Sign-off and creation | Approved items reach HubSpot and Jobber once, tests pass | Week 4 | 35% |
| M4 Go-live and handover | Live with approvals, SOPs, walkthrough, 14 days of fixes | Week 5 | 15% |
Typical scope for this kind of project: US$3,000–4,500
About 5 weeks across 4 fixed milestones. The Systems Health Check (US$300, fixed) comes first and confirms the scope.
Describe the process you want handled, and I'll say where I'd start.
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 Health Check is the right first step.