Business Card Scanner — CardScan

Overview

← Back to outcome

Business Card Scanner — CardScan

Contract: OUT-2026-BCS-001 Build: bcs-20260624 Classification: Mobile Web Application (PWA)

What This Does

CardScan turns business card photos into phone contacts:

  1. Take a photo (or pick from gallery) on your phone
  2. Extract details — name, title, company, email, phone, website, address (on-device OCR)
  3. Review & edit — fix anything the scan missed
  4. Add to contacts — saves a vCard your phone opens in the Contacts app

No account, no cloud upload of card images. OCR runs in your browser via Tesseract.js.

Quick Start (Phone)

Option A — Same Wi‑Fi (fastest)

On your computer:

cd delivery-package/business-card-scanner/app
node server.js

On your phone (same Wi‑Fi), open the URL shown in the terminal, e.g. http://192.168.1.42:3850.

Option B — Deploy static hosting

Upload the app/ folder to any static host (Netlify, Vercel, GitHub Pages, etc.). HTTPS is recommended for add-to-home-screen.

Option C — Local only

cd delivery-package/business-card-scanner/app
node server.js

Open http://localhost:3850 on your machine.

Using the App

  1. Tap Take Photo and point at a business card (good lighting helps).
  2. Wait a few seconds while text is read from the image.
  3. Review the extracted fields and edit as needed.
  4. Tap Add to Phone Contacts.
  • iPhone / Android: Use the share sheet and choose Contacts, or open the downloaded .vcf file.
  1. Tap Scan Another Card to continue.

Tip: Add CardScan to your home screen (browser menu → Add to Home Screen) for quick access.

Package Layout

business-card-scanner/
├── app/
│   ├── index.html          # Mobile UI
│   ├── app.js              # Camera, OCR, save flow
│   ├── styles.css
│   ├── manifest.json       # PWA manifest
│   ├── server.js           # Local / LAN static server
│   └── lib/
│       ├── contact-parser.js
│       ├── vcard.js
│       └── image-prep.js
├── user-guide.md
├── run-deploy-instructions.md
├── verification-report.md
├── outcome-contract.md
└── DELIVERY-NOTE.md

Verification

With the server running:

node delivery-package/business-card-scanner/scripts/run-verification.mjs

Limitations

  • OCR quality depends on lighting, focus, and card design; always review before saving.
  • Fancy layouts, logos-only cards, or non-Latin scripts may parse poorly.
  • First scan downloads the OCR engine (~2–5 MB); needs internet once, then cached.
  • Saves contacts via vCard (standard on iOS and Android); does not write directly to the address book API (that requires a native app store build).

Excluded (By Contract)

  • CRM sync, team sharing, cloud contact storage
  • Batch scanning / card database
  • Native iOS/Android app store packages