Behind the build: a 24/7 AI receptionist for a Newark landscaping firm in 6 days

Day-by-day breakdown of how we shipped Taylor Landscaping's voice agent + chatbot + quote calculator for £600 — the architecture, the calls that nearly went sideways, and the metrics after 4 weeks live.

Lewis Parker
Lewis ParkerFounder · LGP.dev
8 Apr 20266 min readBehind the build
A meticulously kept lawn at sunrise, representing the kind of small UK landscaping business this AI receptionist build was made for.

Taylor Landscaping needed three things at once: a quote calculator, an AI chatbot, and a 24/7 inbound voice receptionist — all on a charity-budget price tag. Here's the day-by-day of how we shipped it in 6 working days for £600 all-in.

Taylor Landscaping is a six-person family-run lawn-care business in Newark, Nottinghamshire. They run on-the-bank fishing-led wellbeing sessions and traditional landscape maintenance. The owner, Matt, was missing 30–40% of inbound enquiries — phone calls during the day while he was on a job, evening calls he'd return the next morning by which time the customer had booked someone else.

He needed three things at once: a quote tool customers could self-serve from the website, a chatbot that could answer common questions, and a voice agent that could pick up the phone 24/7 and book real-world appointments. Budget: tight. Like every six-person trade business in the UK, the pricing of the off-the-shelf options had been quoted at £400/month upwards.

We shipped all three in six working days for £600 all-in. Here's how.

See the full case studyDemos of the form, chat widget, and live voice receptionist transcript

The brief

  • Web quote calculator — postcode → lawn size → service → frequency → contact details → instant quote.
  • Embedded AI chatbot — same quote logic, conversational, plus general FAQ + booking handoff for non-quote enquiries.
  • Inbound voice agent — answers all calls outside working hours and during, qualifies, books appointments, writes lead to a shared lead inbox.
  • Single shared price book — change a rate once, all three surfaces reflect it instantly.
  • Brand-faithful design — Taylor's forest green / cream / gold palette, warm British tone of voice, no corporate vibes.

Day-by-day breakdown

Day 1 · Discovery + scoping

Two-hour call with Matt to map every customer touchpoint. We sat down with a whiteboard and walked through the actual call flow: "customer rings, you answer, you ask the postcode, you ask the lawn size, you give them a price" — turning a tacit process into an explicit one. The single most useful 90 minutes of the build.

Output: a one-page diagram of the call flow, a list of 7 services with rough pricing logic, and three specific edge cases (Matt has a 15-mile catchment with hard exclusions; some venues have access constraints; bigger jobs always need a site visit before pricing).

Day 2 · Quote engine + price book

Built the underlying price-calculation logic as a single TypeScript module. This is the artifact every other surface (form, chatbot, voice agent) calls into. Single source of truth. ~120 lines of code, with full unit tests for every service × size × frequency combination.

Day 3 · Web quote form

Multi-step form on the existing site, branded in Taylor's palette. Postcode validation against the catchment boundary, service-type cards, lawn-size radio cards, frequency, contact form. Submit → write to Supabase → email Matt + auto-confirmation email to the customer. Live by the end of the day.

Hands typing on a laptop on a wooden desk — the day-3 build environment for Taylor's quote form.
Day 3 — quote form live by the time Matt got home from a job site.

Day 4 · AI chatbot

Floating chat widget on the site. Same price book, conversational layer on top. Trained on a one-page "about Taylor" doc + the actual FAQ Matt sends to enquirers. We used GPT-4.1-mini for cost reasons — Claude Haiku tested similarly but 20% pricier per call. Tone tuning took longer than the build ("warm British, never corporate, uses 'cheers' but not 'cheers babes'").

Day 5 · Voice agent

Built on Vapi. Same price book wired in via Vapi's tool-calling. Voice: ElevenLabs Turbo with a UK accent we tested against six options before settling on "Charlotte". Three intents: get a quote, book a callback, route emergency to mobile.

The non-obvious work was the prompt — about 1,500 words of system prompt covering: how to greet, when to ask postcode, how to handle out-of-catchment, what to say if the lawn size is unclear, when to escalate to Matt's mobile, and a long list of British phrases to use and avoid. We had a full "do not say" list including "valued customer" and any sentence starting with "I'm just an AI".

Day 6 · Testing + launch

Matt called it 18 times with different scenarios: easy quote, awkward postcode, angry customer, multilingual, mid-call hand-off. We caught 4 issues, fixed 3 in the prompt and 1 in the code. Pushed live at 4pm Friday. First real customer call came in at 11pm Friday — agent quoted them for a fortnightly cut, booked a first-cut date, and texted Matt before he'd checked his email.

The architecture

Three frontends, one backend, one source of truth. The data flow looks like this:

  1. Customer interacts with one of: web form, chatbot widget, voice agent.
  2. Each surface calls a shared `getQuote(input)` function from the price-book module.
  3. The price book returns the quote — same answer, regardless of surface.
  4. Lead is written to Supabase with surface-of-origin attribution.
  5. Email + SMS sent to Matt + customer.
  6. Matt views a single inbox of all leads from all surfaces.

What nearly went sideways

Three things almost cratered the build, and they're worth flagging because every "AI for trades" project hits at least one of them.

The voice model latency wall

First voice model we tried (ElevenLabs Multilingual v2) had a ~1.4s latency. Conversation felt off — humans expect a 200–400ms gap between turns. Switched to ElevenLabs Turbo (~600ms) which felt natural. ElevenLabs Flash (~400ms) felt great in testing but had a slight robotic edge on long responses. Chose Turbo.

The postcode validation rabbit hole

Matt's catchment is roughly "Newark and 15 miles out". We initially tried regex on postcode prefixes (NG, LN, S, etc.) — too crude. Ended up using a postcodes.io call with a haversine distance check from Matt's HQ. Took half a day. Worth it — it correctly excludes "NG" postcodes that are technically Nottingham proper but 30 miles away.

The accent drift problem

The voice agent's tone drifted into vaguely-American-customer-service speak after about 20 turns of conversation. Solved by re-injecting a mini system prompt every 6 turns reminding the model of the do-not-say list. Token cost went up 8%. Worth it. "Right then" stayed; "reach out" stayed gone.

Metrics after 4 weeks live

MetricBeforeAfter 4 weeksChange
Inbound calls answered~62%100%+38pp
Avg response time on web enquiries4–8 hours< 60 seconds (auto-quote)99% faster
Quotes issued/week~12~31+158%
Booked jobs/week~5~9+80%
Hours/week Matt spent on phones + admin144-71%

The voice agent picks up around 28 calls a month after-hours that would previously have been missed. Roughly 6–8 of those convert into booked work. At Matt's average job value, that's ~£2,400/month in genuinely new revenue.

Build cost was £600 one-off. Ongoing platform costs (Vapi minutes, ElevenLabs voice, OpenAI tokens, Supabase, Vercel) currently run about £35/month. Payback period: under three weeks.

What I'd do differently next time

  • Pre-build a stock postcode-distance utility — that half-day rabbit hole was avoidable on every future build.
  • Run the voice agent through 50+ test calls before launch instead of 18. The four issues we caught were easy; the next one we missed (a bug in handling multi-service quotes) was caught by a real customer in week two.
  • Add a "warm transfer" intent earlier — a way for the voice agent to politely say "let me put you through to Matt" and call his mobile mid-call. Currently it offers a callback; warm transfer would close more emergencies.
  • Build a tiny admin dashboard on day 6 instead of giving Matt a Supabase login. He learned Supabase, but he shouldn't have had to.

Frequently asked questions

How was £600 even possible for three systems?

Three reasons: (1) Shared price book meant we built the core logic once and reused it across all three surfaces. (2) Modern AI-assisted dev (Claude, Cursor) cut implementation time roughly in half versus 2023 norms. (3) We took a relationship-rate from a long-time client. The full commercial price for the same scope today would be £1,800–£2,800.

How did Matt manage the price book?

Initially via a TypeScript file we'd edit for him. After 6 weeks live we added a tiny CMS layer in Supabase so Matt can edit prices himself without touching code. He uses it once or twice a quarter when seasonal rates shift.

What's the best AI voice platform for a build like this in April 2026?

Vapi remains our default. Retell is a close second. For builds where the customer wants zero developer involvement, Synthflow does most of what Taylor needed but at 30–40% higher per-minute cost. The voice model market is more important than the platform — ElevenLabs Turbo is the safest pick for British accents in 2026.

Can this scale to a 50-van operation?

The architecture, yes. We'd add: per-team-member routing, shared calendar integration, multi-region pricing, and a manager dashboard. Estimated cost: £4,000–£8,000 to upgrade. The shared price book + multi-surface pattern scales cleanly.

What happens if the voice agent gets confused?

It has explicit fallback rules: if confidence drops below threshold, it apologises, captures the caller's name and number, and either books a callback or transfers to Matt's mobile (depending on time of day). About 7% of calls trigger fallback in normal operation. Of those, 90% convert into a callback that gets resolved within a few hours.

Lewis Parker
Lewis ParkerFounder · LGP.dev

Lewis runs LGP.dev — bespoke software for businesses, from Newark, UK. He's built AI agents, multi-tenant SaaS, charity platforms and trade-business tooling for clients across the UK.

Got an idea? Talk it through →
From the studio

Got a build like this in your head?

Free 30-minute call. Fixed quote in 48 hours. Source code yours. If we're not the right fit, I'll say so up front.

Start a projectFree 30-min call · 48hr quote