OCR document analyzer — waste-manifest ticket intake
A vision-LLM system that reads ~50 WhatsApp scale-ticket scans a day and replaces manual re-typing with validated extraction and one-click export.
- Role
- Full-stack AI engineer
- Timeline
- Production system in daily use
- Stack
- React / Vite · FastAPI · EasyOCR · Kimi K3 (vision) · Tesseract OSD · Supabase · Docker · PWA

A live system in daily operation for waste-management ticket intake — this page embeds the running demo.
What was broken
A waste-management operator receives ~50 photos of scale tickets (boletas de báscula) over WhatsApp every day. Operators re-typed folio, client, weight and cost from each photo into spreadsheets — slow, error-prone, and impossible to audit at volume.
How it was fixed
Built a preprocessing pipeline that normalizes EXIF orientation, detects document rotation with Tesseract OSD, and crops each photo to the ticket region before OCR. Extraction runs on a vision LLM (Kimi K3) with parallel batch processing and per-file failure isolation; results are saved to Supabase and cross-validated (weight, cost expectations, folio duplicates) before operators approve or edit inline.
Constraints
- Photos arrive rotated, skewed and mixed with WhatsApp UI chrome — the input is messy by default.
- Weight fields must cross-validate (Neto vs Toneladas x 1000) or a dropped decimal silently inflates a bill.
- Operators are not power users: upload a batch, get a validated table, export to Excel.
Tools in the system
- React / Vite
- FastAPI
- EasyOCR
- Kimi K3 (vision)
- Tesseract OSD
- Supabase
- Docker
- PWA
What changed
The daily intake flow that took hours of re-typing now runs as upload → validate → export. Batches of 50 scans are processed in minutes with sub-minute per-file extraction, and cross-field validation catches the decimal and unit errors that used to slip into invoices.
What carries forward
- 01A dropped decimal in '2.240' vs '2240' changes the bill by 1000x — validation guards are as important as the model.
- 02Rotation and cropping before OCR matter more than the model choice; the pipeline made the model's reads reliable.
- 03Operators trust the tool when every value can be edited inline and every export is auditable.
Related case studies
All work- AI & Agents · 2026Self-hosted GPU inference platform — 36B MoE, voice AI and a 70-GPU farmA fully self-hosted AI stack: a 36B MoE model served concurrently with embeddings, ASR and TTS on a single 24 GB GPU — later scaled to a 70-GPU, 10-node farm that a bad VBIOS clock state nearly took down.
- AI & Agents · 2025Retrieval-augmented support agentAn LLM agent that drafts answers from the company's own docs and hands off when unsure.