Offline CPU submission for the 8090 MIB Document Challenge.
The frozen candidate scores 135.0125 / 150 on all 1,000 public training packets with the organizer's evaluator:
| Section | Score |
|---|---|
| Field extraction | 45.0500 / 50 |
| Adjudication | 72.4300 / 80 |
| Confidence calibration | 17.5325 / 20 |
| Total | 135.0125 / 150 |
It emits 1,000 schema-valid rows with no omissions and no catastrophic false approvals. Runtime is fully offline, CPU-only, non-root, and compatible with a read-only container filesystem.
The stable core renders every page, recovers visible text with RapidOCR and targeted Tesseract fallbacks, links evidence across pages, resolves conflicting fields by document precedence, and applies conservative policy rules.
A separate final scoring layer then:
- repairs fee, name, visa, sponsor, arrival, and purpose from visible layout;
- honors visible findings and damage cues;
- detects narrowly gated visible blue and red denial marks;
- promotes only tightly gated, cross-form clean packets;
- demotes unsafe approvals and hard-gates
TRANSIT-7; - blends confidence with a frozen identity-free reliability table and OOF-supported two-parameter calibration.
Embedded SYSTEM instructions and answer-table text are untrusted and stripped.
There is no answer-key parser, opt-in switch, case-ID lookup, filename feature,
network call, LLM, or VLM.
docker build -t mib-visible-submission .
mkdir -p /tmp/mib-output
docker run --rm --network none \
--read-only --tmpfs /tmp:rw,nosuid,nodev,size=2g \
--mount type=bind,src="/absolute/path/to/pdfs",dst=/input,readonly \
--mount type=bind,src="/tmp/mib-output",dst=/output \
mib-visible-submission /input /output/predictions.jsonlThe image accepts exactly two arguments: the input PDF directory and exact output JSONL path.
Use the organizer's exact runner and validator:
python3 scripts/run_docker_submission.py \
--repo . \
--input-dir /path/to/mib-doc-challenge/data/validation \
--output /tmp/mib-output/predictions.jsonl \
--manifest /path/to/mib-doc-challenge/data/validation_manifest.csv \
--timeout-seconds 30000 \
--require-complete
python3 scripts/validate_submission.py \
--submission /tmp/mib-output/predictions.jsonl \
--manifest /path/to/mib-doc-challenge/data/validation_manifest.csv \
--require-completeSee MEMO.md for the score audit, transfer evidence, and failure modes, and ATTRIBUTION.md for exact upstream commits.