Case studies

What we've actually built, and what it returned.

A selection of the AI systems we've shipped. Voice agents, consulting engagements, and the outcomes that came out of them. Real clients, real numbers where we have them.

On this page
E-COMMERCE

E-commerce retailer, Phase 1: a voice agent for FAQs and product questions

Around 6,000 inbound calls a month, roughly 60% of them the same handful of FAQs and product questions over and over. We trained an agent to answer all of them, and to instantly transfer real buyers to the sales team.

The problem

The retailer was burning hours every day on calls that didn't need a human. Opening times, return policies, "do you have this in stock", "where's my order". Roughly 60% of the ~6,000 inbound calls per month were that. The rest were real sales conversations or escalations the team genuinely needed to handle. The sales team was getting interrupted by FAQ calls all day, which meant the people who actually wanted to spend money were waiting.

What we did

We sat down with the team, looked at what was actually getting asked, and built a voice agent trained on their website, FAQ page, product information, and store details. The agent answered the FAQ and product questions directly. The moment a caller showed real buying intent, the agent transferred them straight to the human sales team. We instrumented every call so we could see what got asked, what the agent answered well, and where it stumbled.

Outcome

The agent absorbed the bulk of the FAQ traffic. The sales team stopped getting interrupted by callers who just wanted to know the store hours. Real buyers got a human faster because the human team wasn't drowning in repetitive questions anymore.

What we did differently after this project

On every consecutive project we set the client up with a knowledge base sheet they can manage themselves. They can see every question the agent got asked, what it answered, and edit any response they don't like. Three clicks, no developer needed. That single change made every later build easier to own and easier to improve.

E-COMMERCE

E-commerce retailer, Phase 2: IVR replacement with live product search

Replaced an old IVR that callers kept getting lost in. Agent now searches a ~4,000-page product database live during the call and texts the customer a link to the product. Call-handling team reduced from 6 people to 1. ~$225K in annual savings. Still running in production 18 months later.

The problem

The old IVR was tired. Callers were getting stuck in menus and giving up. It took a team of six people to keep up with the calls that did make it through, spread across multiple departments. The team also wanted to start helping callers actually buy things on the phone.

What we did

We replaced the IVR completely. The agent handles HQ calls (orders, customer care, general questions) with one person on the team backing it up. If a caller wants to buy something in a specific store or by postcode, the agent routes them to the right location's sales team. Extensions can be reached by natural language now, no more "press 4 for sales".

For product enquiries, the agent searches the live ~4,000-page product database during the call and texts the caller a direct link to the product they asked about, so they can buy on their phone before they hang up.

Outcome

  • ~13,000 successful transfers handled over the live tracking window (~5 months)
  • Call-handling team reduced from 6 people to 1
  • ~$225,000 in annual savings
  • Still running in production 18 months later
HOSPITALITY

Luxury spa group: inbound lead qualification + callback booking

The spa was losing leads and earning bad reviews because they couldn't pick up the phone fast enough. We built an agent that answered every call, qualified the caller, booked a callback, handled angry customers, and resolved the easy FAQs on the spot. Roughly 5,000 calls handled across the tracking window.

The problem

A luxury spa brand was missing too many calls and the reviews were starting to reflect it. The team couldn't keep up with the volume. Every missed call was a missed booking or a frustrated existing customer with nowhere to go.

What we did

We built an inbound agent that took every call, qualified the caller (reason, name, preferred time, which usually was "now"), and booked a callback into the customer care team's schedule. For the easy questions the agent answered directly. For angry callers, the agent took the brunt of the frustration calmly, then routed cleanly to the right human when needed.

Outcome (across roughly 5,000 calls tracked)

  • ~65% of calls were real engagement, the rest were hang-ups and silences
  • ~95% callback booking accuracy when a callback was needed
  • The bad reviews stopped because nobody was waiting on hold anymore

What we'd do differently

One of our first appointment-setter builds, we learned a lot from this one. People would usually pick a time that was NOT offered as a free slot by the AI. So we had to add a fallback for when that happened.

E-COMMERCE

High-volume e-commerce: peak season refunds and replacements

The human team was spending two to five minutes per call on the same intake questions. With 15,000 calls a month at peak, that was an impossible amount of time. We built an agent that ran the full intake itself, then either resolved the case directly or booked a callback.

The problem

Every refund or replacement enquiry started with the same intake: refund or replacement, what's the order number, what's the address, how did you order. The human team was burning the bulk of its day on that before they ever got to the actual problem. No realistic way to scale the team to match the call volume.

What we did

We built an inbound agent that ran the full intake itself: refund vs replacement, order details, address, channel of purchase. Once the agent had everything, one of two things happened. If the case was simple, the agent resolved it directly. If it needed a human, the agent booked a clean callback with all the intake context attached, so the human picked up halfway through instead of from the start.

Outcome

  • ~15,000 calls/month handled at peak
  • ~3,000 refund and replacement enquiries/month resolved end-to-end
  • Two to five minutes of intake time back on every single call
  • Clean callback context on every escalation
GOVERNMENT CONTRACTOR

Government services contractor: candidate reactivation at scale

A Fortune 500 contractor was getting 5,000 to 10,000 job applications a month and could not realistically respond to most of them. We built an agent that called those candidates back, let them know the original role wasn't a fit, and offered to consider them for future opportunities. 46,000 candidates reactivated. 95,000 calls. 30.2% completed the full qualification flow.

The problem

The team could only respond to a small fraction of applicants. Every candidate was left hanging with no update on their application. That hurt the candidate experience and wasted a database full of people who had actively raised their hand.

What we did

We built an outbound voice agent that worked through the backlog. Because every candidate had applied for a job, they expected a call, which made the conversation feel natural rather than cold. The agent introduced itself, gently let the candidate know they hadn't been selected for the original role, and asked if they were open to other opportunities. If yes, it walked them through a qualification flow covering preferences, location, salary, and availability, and routed the qualified ones to the human recruitment team.

Outcome

  • 46,000 candidates worked through the reactivation campaign
  • 95,000 phone calls made
  • 30.2% completed the full qualification flow
  • ~30% of contacted candidates routed to the human recruitment team

Something we added later

A callback agent. Some candidates picked up but said "I'm in the middle of something, can you call me back in an hour?" The agent now schedules the callback and dials them back at the requested time. That single feature lifted completion rates by 2%.

TRADES

Plumbing & trades: spam filter + faster pickup = more bookings

About 100 calls a day, around 60 of them spam. Real customers were waiting 10 minutes to two days for a callback. We picked up instantly, blocked the spam, and routed real customers to the right person. Roughly three extra bookings a day they wouldn't have caught otherwise.

The problem

A trades operator was getting around 100 inbound calls a day, ~60 of them spam (warranty robots, sales pitches, fake referrals). The CSR team was so busy triaging that real customers calling for a quote or a job were waiting more than 10 minutes for a response, and that lost them the lead to another plumber in the area.

What we did

We built a spam filter on the front of the inbound line and a routing layer behind it. The spam classifier blocked the obvious junk before it ever reached a human. The 40 or so real calls per day got routed to the right person: customer care for general enquiries, the SDR for sales, and the parts guy for parts questions. The agent picked up instantly, every time.

Outcome

  • ~60 spam calls/day blocked before reaching the team
  • ~40 real calls/day routed cleanly
  • Response time dropped from 10+ minutes to instant
  • ~3 extra bookings per day that previously slipped

What we'd do differently

Build the false-positive review loop into the spam filter from day one. We added it in week three after a real customer got blocked. Should have been a day-one feature.

PROPERTY MANAGEMENT

Property management group: voice AI demo for a major industry presentation

A property management group wanted to show voice AI as part of a big industry presentation. We consulted with their team for two months, built a demo agent grounded in their property setup with a working knowledge base, and ran fallback scenarios in case anything went sideways on stage. The demo landed, and they walked away with five inbound leads from the talk itself.

The problem

They didn't want to fake it. They wanted a working demo that did something real, grounded in actual property data, that they could show live to an audience that would ask hard questions.

What we did

Two-month consult with their team. Built a voice agent on top of a property management knowledge base, complete with the kind of guest scenarios their audience would recognise (lockouts, WiFi, checkout times, emergencies). Rehearsed the demo, ran test scenarios, and built fallbacks for the moments where a live demo might trip up in front of a crowd. On the day, the agent ran cleanly.

Outcome

  • Demo presented live to their industry audience without issues
  • ~5 inbound leads generated from the presentation itself
  • A working reference implementation, not a vapourware deck
PROFESSIONAL SERVICES

Canadian tax credit consultancy: AI agents for SR&ED claim interviews

A SR&ED tax credit consultancy wanted to replace the human consultant on the front end of every claim. We built multiple AI agents that ran the technical interviews live, pulled in supporting documents, and handled the structured intake. Took a process that used to be one billable consultant per client and made it scalable.

The problem

The consultancy ran a process where a human consultant had to interview a company's technical leads, identify R&D projects that qualified for tax credit, and write up the supporting narrative. Expensive, slow, capped by the number of consultants they could hire.

What we did

We built multiple AI agents (one per workflow) that did the consultant's interview work directly: structured eligibility interview, project narrative generation, and a lead-qualification flow. Wired up document retrieval against the client's prior tax returns and supporting docs using Qdrant, so the agents could ground their questions and write-ups in the company's real history. Delivered as a web-based application.

Outcome

Architecture, prompt design, and working agent flows delivered. The consultancy moved into deployment with their internal team after our engagement.

What we'd do differently

Audit the existing backend before scoping the voice layer. The platform we were building on top of needed a redesign of its own, and we didn't catch that until we were deep in. A scoped Phase 0 discovery on existing infrastructure should be standard on any build that sits on top of someone else's stack.

TELCO

Swiss mobile subscription comparator: multilingual voice intake

A German-language voice agent for a Swiss mobile subscription comparison service. Roughly 1,000 calls per week, 4,000+ per month. Tech questions about providers and buying intent for plans, handled in the caller's language.

The problem

A Swiss mobile phone subscription comparator was getting a constant stream of inbound calls in German. Most were not sales-ready. People wanted to know which provider's website to use for tech support, or they were looking to buy a SIM card or a specific plan and needed a link to actually do it. The human advisor team was burning their day on call triage rather than the calls that needed an advisor.

What we did

We built a German-speaking voice agent that took every call, identified the caller's intent in the first 30 seconds, and routed accordingly. Tech questions got pointed at the right provider website. Purchase intent calls got an SMS link to the specific plan or SIM the caller had asked about. Complex cases got handed to the human advisor team with context already collected.

Outcome (across roughly 6 weeks of live deployment)

  • ~1,000 inbound calls per week, ~4,000+ per month
  • ~95.9% AI success rate on completed calls
  • ~91.1% data capture rate when a callback was needed
  • ~52% real engagement, the rest were hang-ups and silences
PROPERTY MANAGEMENT

Property management inbound: maintenance, emergencies, and live transfers

A phased build that gave a property management team a single inbound number capable of handling maintenance requests, business enquiries, employment queries, emergency escalations, and live transfers without a human picking up first.

The problem

A property management operator had one inbound number doing the work of five. Tenants calling about maintenance, vendors calling about business, applicants calling about employment, and the rare emergency escalation were all hitting the same line and the same person. The team needed intent-aware routing, structured maintenance intake, and a clean emergency escalation path.

What we did

We designed five intent paths (maintenance, business, employment, emergency, live transfer) with a fast disambiguation flow on the first turn. Built a structured maintenance intake form delivered conversationally, so technicians had the full picture before they ever drove out. Wired the emergency path to a direct live transfer with no qualifying questions in the way.

Outcome

Phased delivery shipped on schedule. Hard outcome metrics not collected at the time of delivery.

What we'd do differently

Instrument the maintenance intake quality from day one. Whether technicians had everything they needed on arrival is the metric that decides whether the build paid for itself.

Think your business has a case like one of these?

30 minutes on a call and we'll both know whether there's something worth building.

Book a free call