Voice · Telephony · 24/7 Mobile Locksmith
Every callback masked, local, and recorded.
24/7 Mobile Locksmith had an AI agent answering every call — but when technicians rang customers back, the real number was exposed and nothing was recorded. An Edenic engineer built a serverless masking layer that gives each customer a local number and a private extension, and records every callback.
servers to run it
local area codes covered
production tests passed
live call flow, never interrupted
Snapshot
Client
24/7 Mobile Locksmith — an emergency locksmith operator across North Carolina
The problem
Technicians calling customers back exposed the customer's real number, with no recording for QA
The build
A masking + extension-routing layer between the AI voice agent and the CRM
Constraint
Deployed into a live account handling real emergency calls — zero disruption
The pain
- Every callback exposed the customer's real phone number to whoever dialled
- Callbacks showed an out-of-area caller ID, so customers ignored them
- No recording on outbound callbacks — nothing to review for quality or disputes
- Any fix had to sit inside a live 24/7 emergency call flow without breaking it
Objectives
- Give every customer a masked number plus a unique extension
- Match a local area code so the callback shows a familiar caller ID
- Record every callback automatically, on both channels
- Add no servers, and no downtime on a business that runs around the clock
Inbound
Masking layer
Storage
Callback
Downstream
What we built
Extension-based masking
After each AI call, the system mints a unique short extension bound to that customer and hands the technician a masked number instead of the real one.
Local caller ID matching
The inbound number is matched to a masking number in the same area code, with a fallback when no local match exists — so callbacks look local, not like spam.
Recorded callbacks
Dialling the masking number and keying the extension routes to the customer and starts a dual-channel recording automatically.
Idempotent webhooks
The voice platform retries its post-call webhook. Processing is idempotent, so a retry can never mint a second extension for the same call.
Zero infrastructure
Everything runs as serverless voice functions with a managed key-value store for extension mappings, on a 30-day expiry. Nothing to patch or keep alive.
Shipped without disruption
Built and tested against a live account with existing numbers and active workflows; every change went out in an agreed after-hours window.
Key takeaways
- Customer numbers are never exposed to the people calling them back
- Local caller ID lifted the odds a customer actually answers
- Every callback is recorded, so quality and disputes are reviewable
- No servers were added — the whole thing runs serverless and expires its own data
Got a call flow to fix?
This is the calibre of engineer Edenic sources, vets, and places. Talk to a founder.
Talk to a founder ↗