education · handwritten + typed document OCR + per-field confidence + validation rules + threshold decision + review queue

Turned handwritten and typed application forms into an approve, reject or review decision for a vocational training provider

Client snapshot

A vocational training provider running funded courses, with two admissions staff. Each applicant sends a pack of five to eight documents: a handwritten application form, a typed ID or residence document, a payslip or benefit letter, and certificates. Funding rules decide who qualifies: age, residence, income under a threshold and a prior qualification level.

The problem

Staff read every pack by hand and typed the numbers into a spreadsheet, then checked them against the funding rules. A pack took about 25 minutes. Handwritten income figures and dates were the weak spot: a misread 7 for a 1 could move an applicant across the income line, and audits found a few wrong decisions each intake.

What we built

A prototype first, on free tiers, tested on a sample of real packs.

  1. Read every document. Google Cloud Document AI's form parser reads both the handwritten and typed pages and returns every field with a confidence score. Claude then maps the raw text to one fixed schema: name, date of birth, postcode, monthly income, qualification level.
  2. Check before deciding. Plain code checks each field: dates are real dates, the income on the form matches the payslip, the postcode matches the residence document. A mismatch or a low confidence score sends that field to review instead of guessing.
  3. Apply the funding rules. The rules run in code, not in the model, with the thresholds in one settings table. Each applicant comes out as approved, rejected or needs review, with the reason for each.
  4. A simple screen for staff. A small Streamlit app shows each applicant, the decision and the flagged fields next to the document image, so a person confirms or corrects a field in seconds.
  5. Learn from corrections. Every correction is stored with the original value. Each month the corrected fields are added as examples, and accuracy per field is measured on a fixed test set, so the review threshold only drops when the numbers say it can.

Results, one intake in

  • Screening one applicant pack: around 25 minutes → about 3, mostly confirming flagged fields.
  • About 94% of fields read correctly with no person involved. The rest went to review, never straight into a decision.
  • No wrong decisions caused by a misread field were found in the intake audit.

Quote

"It doesn't guess. If it isn't sure about a number, it shows us the number and the page." Admissions lead

Build snapshot

  • Timeline: 1 week, about 12 hours
  • Stack: Google Cloud Document AI, Claude, Python, Supabase, Streamlit
  • Investment: $540
  • Who owned it: the admissions lead sets the funding thresholds and the review confidence level in one settings table.

The pattern

With handwritten documents, accuracy is not a single number: it is per field, and a decision is only as safe as its weakest field. Score every field, check it against the other documents, send the uncertain ones to a person, and let the rules decide only on checked data.


This is an illustrative composite drawn from operator engagements. Names, identifying details, and exact metrics are anonymised. The workflow, stack, and approach are real.

Looks like your situation?

A 30-minute call tells us whether the same pattern fits your operation, and what it would cost to ship it.