All case studies
ProductSense AIDemo build · fictional business, simulated data

It read the scanned datasheet. And it can prove it.

OCR + vector search + chat over a messy industrial catalog — where the answer quotes a number that exists only inside a photocopied scan.

OCR extractionVector searchGrounded chatConfidence scoringPipeline observabilityReact + TypeScript

Live demos are password-gated — request access via WhatsApp, takes a minute.

ProductSense OCR split view: scan beside extracted blocks
ProductSense OCR split view: scan beside extracted blocksThe photocopied original — skew intactPer-block confidence: 96.4% on the spec row
The split view: the original scan, skew preserved, beside its block-level extraction.

The challenge

“Search our catalog” fails exactly where it matters: the stall torque is printed in a 2019 fax-quality scan, not in any typed spec sheet. If the system can’t read images, it can’t answer.

And OCR claims are cheap — the interface has to prove extraction happened, block by block, with confidence the buyer can inspect.

The solution — three decisions

01

Stage the “it read the image” moment

The hero answer quotes 4.2 kg·cm stall torque — a figure that exists only in the scanned KR-380 datasheet — and links straight to the split view that proves it.

02

Make the scan believably ugly

The rendered datasheet is skewed 0.4°, photocopy-speckled, typewriter-set. Everything around it is ruler-straight; the contrast is the point.

03

Confidence is a first-class value

Every extracted block carries its OCR confidence as a chip — 96.4% on the money row — because “trust me” is not an enterprise feature.

How it works

Flow diagram: the inputs listed first feed into the ProductSense pipeline engine in the middle, which produces the outputs listed last.

In

Scanned datasheetsfax-quality originals
Spec PDFs + photos300 catalog items

ProductSense pipeline

OCR extractionblocks + confidence scores
Embeddingsvector store · bge-m3
Grounded chatmatched-source answers

Out

Chat with proofone click to the scan
Semantic searchranked by meaning
Pipeline dashboardreconciling counts

The demo implements this shape end to end with a simulated service layer — the “extend for production” section below lists what swaps in for live deployment.

Product tour

Chat answer with matched scanned source
Chat answer with matched scanned source
The answer cites its matched source — type SCANNED, OCR confidence attached, one click to the proof.
Semantic search results with similarity scores
Semantic search results with similarity scores
“Small quiet motor for a conveyor belt” — ranked matches with similarity scores and matched-block snippets.
Extraction pipeline dashboard
Extraction pipeline dashboard
Uploaded → OCR → embedded, with 2,000+ text blocks that sum from the library itself.

What the demo shows

  • A scripted conveyor-duty question answered from the scan’s fine print
  • 300 catalog items across 80 products with pipeline states
  • Search that ranks by meaning, with a keyword fallback that also works
  • A re-OCR action wired into the low-confidence queue

Under the hood

  • The scan is CSS, not an image asset: skew, speckle, and print styling render a convincing photocopy that stays crisp at any size
  • Hero OCR blocks are hand-authored to match the scan exactly; other documents get plausible generated extractions
  • Search results derive from the product catalog, so every hit links to a real document view
  • Counts reconcile: library totals, pipeline KPIs, and block sums come from one dataset

Built as a demonstration — on purpose.

Voltbridge Components is fictional and labeled as a demo on every screen. Nothing here is presented as client work: no client names, no outcome metrics, no testimonials. The proof is the running product — open the live demo above (password on request) and check every claim.

What I’d extend for production

  • Real OCR (Tesseract/cloud) with layout-aware block detection
  • Embedding search over extracted blocks with hybrid keyword fallback
  • Supplier-email ingestion dropping attachments straight into the queue