← All projects
liveInternal Toollaunched Apr 2026

Business Card Scanner

Stack of cards in, structured contacts out

OCR pipeline that turns business card photos into structured contact records, with vCard and CSV export. Built so a coffee-break could empty the drawer of cards I keep meaning to type up.

Open the live app

problem

Manually typing a stack of business cards into a CRM is the kind of friction that makes you stop networking. OCR alone is not enough — the parsing problem is "is this line a phone number or a fax number".

solution

Flask app that runs OCR over uploaded card images, then a tuned parser pulls name, role, email, phone, and social handles into structured fields. A small admin UI lets you fix anything OCR got wrong before exporting.

architecture

Card image upl…OCR + parserFlask appSQLiteWeb UI

external → compute → store → ui

outcome

Stack of cards becomes a CSV in a coffee break. Round-trips through a CRM without manual cleanup.

stack

PythonFlaskOpenAI VisionImage processingDocker

capabilities

  • Image upload (single or batch)
  • OCR + structured parsing
  • Manual review and field correction
  • vCard and CSV export

lessons learned

  • 01OCR + a parser beats a "smart" all-in-one model, because you can fix the parser without retraining anything.
  • 02The hardest field to extract is "company" — every card lays it out differently, and the cue is layout, not text.
  • 03Letting the user fix one wrong field is worth more than getting 90% of fields right automatically.
← All projectsOpen the live app →