paper-decoder / README.md
aleks-gotsa's picture
Paper Decoder v1: base model end-to-end (G1)
c796971
|
Raw
History Blame Contribute Delete
2.01 kB
metadata
title: Paper Decoder  Розшифровувач паперів
emoji: 📄
colorFrom: yellow
colorTo: gray
sdk: docker
app_port: 7860
pinned: false
license: apache-2.0
short_description: Ukrainian official-letter decoder for my parents.
tags:
  - backyard-ai
  - off-the-grid
  - llama-cpp
  - tiny-titan

Paper Decoder — Розшифровувач паперів

My parents in Uzhhorod receive official Ukrainian letters — utility debt notices, bank letters, tax demands — and "official-looking" scam messages. They can read every word and still not know what the letter wants from them, or whether it's real.

Paper Decoder takes a phone photo or pasted text of a letter and returns:

  1. a plain-Ukrainian summary (3–4 sentences, no bureaucratese),
  2. a "what you must do" action list,
  3. every date, deadline and amount, extracted,
  4. scam-pattern flags with the matched evidence quoted.

Why a small local model

These letters contain names, addresses, account numbers, debts. Sending them to a cloud API is exactly what I'd tell my parents never to do. Everything runs on this CPU Space: Tesseract OCR (ukr+rus) for the photo path, Qwen3-4B-Instruct-2507 at Q4_K_M served by llama.cpp. No external calls at inference time.

Model selection was gated, not assumed

Before building, three candidate models ran a 10-prompt Ukrainian spot-check on real letter types (scored 0–2 per prompt, blind rubric):

Model Score Verdict
MiniCPM5-1B (Q4_K_M) 0/20 Russian bleed, script corruption, empty outputs
Qwen3-1.7B (Q4_K_M) 11/20 Fluent Ukrainian, zero scam awareness
Qwen3-4B-Instruct-2507 (Q4_K_M) 14/20 Pass — shipped

A fine-tuned LoRA targeting the remaining failure modes (protective actions on scam letters, date fidelity in summaries) is in progress; the before/after eval will be published with the model.

Built solo by aleks-gotsa for the Build Small Hackathon 2026, Backyard AI track.