Capture a Card, Get a Lead. No Third-Party OCR Vendor Required.
Business cards are supposed to be dead. We've been telling ourselves that since 2015. And yet: every trade show, every client meeting, every networking event — reps still come back with a stack of cardboard. Velocity X's mobile interface lets a rep snap a card photo and have the data in their CRM before they get back to the car. No scanning kiosk, no manual entry, no third-party OCR vendor. Just Claude Vision doing what it was built for.
Why Business Cards Refuse to Die in 2026
The reason is simple: a business card is the only piece of information transfer that works reliably offline. A contact form requires Wi-Fi. Email sync needs a server round-trip. A card? Handed to you in person. Zero friction. And for customers in regulated industries (insurance, commercial real estate, enterprise sales), a business card is often the only authoritative record of a contact's current title and employer — their LinkedIn might be months out of date.
The problem is what happens after: reps pocket a stack of 20 cards, drive to the next site, and the manual entry task dies in the backlog. Velocity X closes that gap by making card capture a reflex — snap the card, and the lead row appears in the CRM automatically. No batch-processing OCR job the next morning. No "I'll enter these when I get back to the office." Six seconds from shutter to CRM insert.
The Architecture: Camera → Base64 → Claude Vision → JSON → Supabase
The flow is straightforward. A rep opens the card-capture widget on their phone (a React component wrapping the device camera API). They frame the card and tap the shutter button. The image is encoded to base64 and sent to an edge function.
The edge function calls Claude Vision (3.5 Sonnet, the fast vision model) with a carefully designed prompt: extract the person's name, title, company, email, phone number, and any address information visible on the card. The prompt tells Claude to return JSON only — structured output, no prose:
{`{
"name": "Sarah Chen",
"title": "Sales Engineering Manager",
"company": "Acme Corp",
"email": "sarah.chen@acme.com",
"phone": "+61 2 9000 1234",
"address": "Level 5, 123 Hunter Street, Sydney NSW 2000"
}`}The edge function validates the JSON, checks whether the email domain matches any existing company in the CRM (using a Supabase join), and inserts a new lead row with the extracted data. If confidence is high (Claude returned all fields), the lead is marked status: 'ready'. If any field is missing (the card was blurry, or non-standard layout), status: 'review' and the rep sees a flag: "Check this one — some fields are blank."
The whole round-trip is 4–6 seconds on a good connection. The image is never stored — it's discarded after Claude processes it. The structured lead stays in Supabase.
Handling Edge Cases: Lighting, Multi-Card Photos, Non-Latin Scripts
Poor lighting. Claude Vision is surprisingly resilient to dim or harsh shadows, but the prompt includes guidance: "If the text is unclear, leave the field blank rather than guessing." A rep can instantly re-snap if needed. We don't auto-retry — the UX is simpler if a blank field means "try again" rather than "we tried three times and still failed".
Multi-card photos. If a rep accidentally snaps two cards in one frame, Claude detects this and returns "warning": "multiple_cards_detected". The rep then narrows the frame and taps again. We don't try to split multi-card images — that's an edge case not worth the prompt complexity.
Non-Latin scripts. Claude Vision handles Chinese, Arabic, Cyrillic, Japanese without issue. The extracted JSON uses UTF-8. Supabase stores it correctly. A rep with a stack of Shanghai-based contacts gets the same 6-second flow as a rep in Sydney.
The Cost Economics: $0.003 Per Scan
Claude Vision with Sonnet (the fast model) costs roughly $0.003 per image processed. A rep processing 10 cards a day, 20 work days a month, is 200 cards/month = $0.60/month. A 10-person field team is $6/month total. Compare that to traditional third-party OCR APIs (which typically charge $0.05–$0.10 per processed image) or to the manual-entry labour cost (a lead-processor at $25/hour taking 2 minutes per card entry is $0.83 per card). Claude Vision is the cheapest option and the fastest.
Frequently Asked Questions
What if the card doesn't have all the fields?
Claude returns what it can extract. Missing fields are left blank. The lead row is still created — reps can fill in gaps later if needed. If name is missing, the whole insert is rejected (you can't create a lead with no name), and the rep gets "Name not detected — try again" feedback.
Can it read handwritten cards?
Sometimes. If handwriting is clean and the light is good, Claude usually gets 60–70% accuracy. Printed cards are 95%+ accurate. We don't recommend it, but it works better than you'd expect.
What if someone hands you a card without an email?
The email field is optional (though Velocity X can be configured to require it if your workflow demands it). If the card has only a name and phone, that's valid. The lead row creates with what's available. You can follow up to ask for email later.
Does it work with digital contact sharing (AirDrop, QR codes)?
Velocity X's card capture is designed for physical cards only. For digital contact exchange, reps use the standard CRM import flow. No reason to run Vision on a QR code when you can just sync the contact file.
What about cards from companies you already have in the CRM?
The edge function queries your companies table. If the extracted email domain matches an existing company, the lead is linked automatically. If the company doesn't exist, a new company row is created with just the name and domain. Sales ops can merge duplicates later if needed.
Can the rep edit the extracted data before saving?
Yes. After the card is processed, the rep sees the extracted JSON in an editable form — same UX as manual lead entry. They can correct typos, fill in blanks, or add notes. The default is auto-save, but it's all editable.
Does it respect RLS (Row Level Security) in Supabase?
Yes. The edge function runs in the context of the authenticated rep. Leads are inserted into the rep's assigned territory/company scope via RLS policy. A rep at one branch can't accidentally create leads for another branch's CRM.
The Bottom Line
Business cards aren't going anywhere. Velocity X makes capturing them frictionless. A rep snaps a card, Claude extracts the data, and a lead appears in the CRM in 6 seconds. No third-party OCR vendor, no batch processing, no manual entry backlog. At $0.003 per scan, it's cheaper than asking your team to type. For field sales, that's a compounding advantage — 200 cards a month × 10 reps × 12 months = 24,000 leads captured automatically. See how it works at /pricing, or read more about Velocity X's AI features in AI Brain Follow-Ups.