The rep sits in the car after a visit. They've got 30 seconds before the next stop. They could open notes and type — but typing while parked is friction, and trying to type while driving is illegal. Instead, they tap a button: "record a note". Thirty seconds of voice. Sent.
Velocity X's Brain takes it from there. AssemblyAI transcribes the audio. Claude reads the transcript and the deal context together, extracts structured updates (budget changed, champion's title, decision timeline), generates a summary, tags it, and attaches everything to the deal record in Supabase. Later, a manager searches "show me all deals where the prospect mentioned budget" — and gets 12 matches across the past 2 months, with transcripts and summaries side-by-side.
Why Voice Beats Typing in the Car
Voice notes are 3× faster to record than typing. The rep doesn't fumble with autocorrect. No screen glare in daylight. No distraction while driving — the phone stays in the cup holder, voice goes hands-free via Bluetooth. And the rep talks the way they actually think, not the way they think they should write. That natural phrasing is gold for a salesperson's CRM — it's closer to how the prospect heard the message and closer to what the rep will say on the next call.
The capture is also compression. Thirty seconds of rambling covers three lines of typed notes. "Yeah so the guy mentioned he's buying in Q3, budget's tight but if we can bundle the three packages he's into it" comes out as clean JSON: { timeline: "Q3", budget: "tight", bundleInterest: true }. That structured data is immediately searchable.
The Architecture
Client side (browser): Web Audio API starts recording when the rep taps the mic. Audio stream gets buffered client-side. On stop, the rep gets a 3-second preview (play-back option). Tap send and the blob uploads to an S3 bucket (presigned URL, ephemeral token).
Server side (Netlify Functions + Supabase): S3 triggers a Netlify Function. Function calls AssemblyAI's Async API with the audio URL. AssemblyAI transcribes asynchronously and POSTs a webhook back to your Netlify endpoint with the transcript. Your Function then calls Claude with:
{`System: "You are a sales pipeline assistant. Extract deal updates from the voice transcript. Return JSON: { summary, updates: { budget?, timeline?, champion?, decision?, nextAction? }, tags: [], confidence }"
User: "Here's the transcript: ${transcript}. Here's the deal context: ${dealJson}"`}
Claude returns the structured summary. Netlify Function writes it to Supabase: deal_voice_notes table gets a new row with transcript_text, summary, extracted_fields, and confidence. Supabase triggers a downstream update to the main deals table (e.g., bump timeline or budget fields if confidence is high). Done.
Privacy & Compliance
Audio is encrypted in transit (HTTPS S3 upload). At rest in S3, you control the bucket policy — private by default. AssemblyAI stores the audio for 7 days max (part of their SLA), then deletes. Claude doesn't train on your transcripts (contractual guarantee under commercial API terms). Supabase tables are under RLS — the rep can see only their own notes. Managers can see their team's notes based on the role in your RLS policies.
For regulated industries (healthcare, finance), AssemblyAI offers SOC2 compliance and HIPAA add-ons. For full on-premises, you can swap AssemblyAI for OpenAI's Whisper (run locally via Docker) and still route the transcript to Claude or a local Llama 3 70B. Same architecture, different transcription engine.
Voice Notes vs Competitors
Otter.ai: Transcribes live meetings and voice memos. Great for meeting recap, not deal-update extraction. No native pipeline integration. Charges per minute.
Fireflies.ai: Meeting recorder for Zoom/Teams. Same problem — designed for meeting recap, not in-field sales notes. No native deal-stage updates.
Rev.ai: Cheap API-first transcription. No AI summarisation or extraction. You have to build the deal-update logic yourself.
Velocity X embeds both transcription and extraction. One tap, one deal updated. That's the difference.
Frequently Asked Questions
What if the rep says something sensitive (prospect salary, personal info)?
Claude's extraction prompt has a PII filter. If the transcript contains salary, home address, or other personally identifiable info, the structured extraction skips those fields and logs a warning: "PII detected — manual review recommended". The transcript is still stored (for audit), but the structured fields sanitise it.
How long does transcription take?
AssemblyAI's async API typically returns within 30–60 seconds for a 30-second audio clip. The rep won't see the extracted summary instantly, but it lands in the deal record within a minute. If you want real-time, swap to OpenAI Whisper (5–10 second latency) or Google Speech-to-Text (similar).
Can the rep edit the extraction after Brain processes it?
Yes. The extracted fields land in an editable card at the top of the deal's voice-notes section. Rep can change the timeline, budget, or tags before they're committed to the deal record. Edits are logged (audit trail: "rep changed timeline from Q3 to Q4 on [timestamp]").
What if the rep's accent or background noise breaks transcription?
AssemblyAI's model handles regional accents pretty well. For heavy noise, consider pre-filtering: the browser-side recording can apply Web Audio's BiquadFilterNode to reduce background rumble before upload. If transcription quality is consistently low, the Function can trigger a Slack/email notification to the rep: "voice note confidence was 0.62 — consider re-recording".
Can you bulk-import old voice notes?
Yes. If you have audio files from another system, Netlify Function can batch-process them. Queue them to a job runner (Supabase pg_cron or Inngest), transcribe in parallel, extract, and back-fill the deal records. Useful for migration from Otter or another voice tool.
Does it work offline?
Recording works offline (Web Audio API is purely local). Sending and transcription require internet. The client can queue the audio file locally and retry upload when connection returns.
The Bottom Line
Field reps spend more time looking at their phone than anything else — except maybe the road. Voice notes turn that phone into a deal-capture device without splitting attention. Thirty seconds of talking, one tap, deal updated. No typing, no friction, no "I'll email you the notes later". The transcript and summary are searchable across the whole pipeline forever. It's the difference between "I think I talked to someone about budget" and "show me all deals from Q3 where we discussed bundling".
That's information management at scale. Velocity X's Brain makes it feel automatic.