The client
A dermatology business sold one pharmacy at a time
A dermatology and pharmaceutical company with a large field sales force working across many countries. Its reps visit pharmacies to keep shelves stocked, launch campaigns and build relationships with the people behind the counter.
Each visit is short. What a rep knows walking in decides how much of it is useful.
The challenge
Three systems to check before every door, and notes to type after it
Preparing for a visit meant opening three systems on a phone. Sales performance and visit history in the data warehouse, contacts and opportunities in the CRM, order and billing history in the ERP — joined in the rep’s head, often in a car park.
The surface area
After the visit, the same rep had to type up what happened and what was promised. The preparation took selling time; the write-up took the evening, or did not happen.
Constraints
What we had to design around
- Hands-freeReps prepare in the car, between one pharmacy and the next. Anything that needed a screen and two thumbs would not be used where it mattered. Voice had to be the main interface, with spoken answers short enough to take in while driving.
- TerritoryA large multi-country field force, each rep assigned specific territories and customers. A rep could never hear about, or write to, an account that was not theirs — and that had to hold for every query, not just the login screen.
- Three systemsSales performance lived in a data warehouse, customer profiles and opportunities in the CRM, orders and billing in the ERP. A useful briefing needed all three, joined on the same pharmacy.
- Data protectionCustomer contacts and commercial data across several jurisdictions. The assistant had to stay within data protection rules from the first day, not be retrofitted later.
- Speed to valueThe field force needed to see it working quickly. The build had to produce something a rep could talk to within weeks.
Our approach
Voice first, two agents, one territory filter
A rep’s day has two moments where information work happens: just before a visit and just after it. So we built one agent for each, rather than a general assistant that has to guess which mode it is in.
Both sit behind a voice agent, because the rep is usually driving. Both reach the three systems through MCP servers, so adding a source is a new server rather than new agent code. And the territory filter lives in that data layer, so no prompt — and no clever question — can widen what a rep sees.
The solution
Six layers, from a sentence in the car to a CRM record
- Voice and web interface — Speech in and speech out through ElevenLabs, with streaming responses so the answer starts before it is finished. A web app with the same login covers the moments when talking is not practical.
- Voice agent — Orchestrates the conversation. It works out whether the rep is preparing or reporting back, routes to the right agent, and hands the result to a response agent that turns it into something worth hearing.
- Pre-visit intelligence agent — Pulls sales performance, visit history, customer profile and order history in parallel, aggregates them, and produces a briefing: last visit, performance trend, key opportunity, recommended focus and who to ask for. Its tools cover data access, reasoning, data structuring and follow-up scheduling.
- Post-visit capture agent — Takes the rep’s spoken account, recalls the visit context, extracts structured fields and writes them back — visit record, activity log and opportunities in the CRM, performance metrics in the warehouse. It ends with next actions: the follow-up order, the next visit, the materials to send.
- MCP data layer — MCP servers over the warehouse (BigQuery), the CRM (Salesforce) and the ERP (SAP) give the agents one standard way to read and write, with territory filtering applied inside the servers and real-time synchronisation.
- Identity and memory — Territory-based authentication with role-based permissions, integrated with the existing user management. Agent memory in PostgreSQL with pgvector keeps customer preferences and conversation history across sessions.

Responsible by design
Four rules for an assistant with access to customer data
Scope
A rep sees their territory and nothing else.
The filter sits in the data layer, not the prompt. A question about an account outside the rep’s territory returns nothing to summarise.
Ground
Briefings come from the systems of record.
Every figure in a briefing is fetched from the warehouse, CRM or ERP at the time of asking — not recalled by the model.
Confirm
The rep can check before anything is written.
Post-visit updates can be read back to the rep for confirmation before the CRM changes, so a misheard word does not become a record.
Comply
Data protection from day one.
Access controls, session management and privacy-compliant handling of customer data were part of the first build, not a later hardening pass.
The first rule shapes the rest. A voice assistant that answers anything is a data leak with a friendly tone. One that answers only inside the rep’s territory is a tool the business can hand to every rep.
Results
What changed for the field force
- 50% less visit preparation time — the briefing that took a rep three systems and a stretch of the drive now arrives as one spoken answer.
- Pre-visit briefings in under five seconds, with the warehouse, CRM and ERP queried in parallel and filtered to the rep’s territory.
- Post-visit capture in under three seconds, from a spoken account to updated CRM records, warehouse metrics and a list of next actions.
- Enterprise-grade security from day one — territory-based access, role-based permissions and data protection-compliant controls across a multi-country field force.
- Reusable components — the MCP servers, memory and authentication now underpin further AI work across the business, not just this assistant.
Reps walk in knowing the account and walk out with the visit already logged.
Beyond the numbers
What else changes
The CRM starts to reflect what actually happens in pharmacies. When documenting a visit takes one sentence, visits get documented — and the next rep, manager or briefing works from a complete record rather than the ones someone found time to type.
And because memory carries across sessions, the assistant remembers what was promised last time. The next briefing starts there.
If your field team spends more time preparing than selling
The first question is which systems a rep opens before a visit. That is answerable from a day riding along, before anything gets built.