Inspiration
Low-resource languages already have archives — recordings, dictionaries, field notes — but turning them into structured, trustworthy, queryable knowledge takes trained linguists most communities can't access. LLMs are tempting here and dangerous: a model will fluently "translate" a language it never learned. We wanted agents that do the tedious first pass without ever asserting a fact, and a decision layer a model is never allowed to touch.
What it does
- Ingests a mixed archive (audio, dictionaries, grammars, corpora), each source tagged with an access level.
- A Governance step in plain Python — not a model — blocks restricted or sacred sources from ever reaching an LLM.
- The Archive agent inventories the sources and proposes a workflow.
- The Transcription agent reads the audio bytes directly via Gemini 3.5 Flash-Lite multimodal input — there is no separate speech-recognition system.
- For each transcribed fragment, a plain-Python keyword search pulls candidate snippets from the archive's own dictionary, grammar, and corpus; the Evidence agent judges each one as supporting, contradicting, or merely related.
- The Linguist agent proposes a meaning — always labelled a hypothesis, never a fact.
- A Conflict agent on Gemini and a second Conflict agent on Gemma independently check for cross-source contradictions. A conflict either model raises is kept (union, not intersection).
- A Scoring engine in Python combines every signal into a final confidence and status: SUPPORTED, HYPOTHESIS, NEEDS VALIDATION, or CONFLICTED. Two hard rules the LLM is never trusted to apply to itself: a claim with zero supporting evidence can never auto-accept; a claim with an unresolved conflict always goes to a human, whatever its score.
- Human validation is recorded as provenance — who, what value, and when — permanently on the job. Resolving the last pending claim closes the job.
- Every claim keeps its evidence, source, and locator.
How we built it
- Google Agent Development Kit (ADK): every model-backed agent is an ADK LlmAgent.
- Gemini 3.5 Flash-Lite for transcription, evidence judging, linguistic hypotheses, and the primary conflict check.
- Gemma as an independent second model family for the conflict check.
- FastAPI + uvicorn backend, streaming the pipeline to the browser live over server-sent events; SQLite for job storage; plain-Python retrieval (no managed RAG engine).
- Pydantic schemas for every agent's structured input and output.
- Deployed on Google Cloud Run (request timeout raised to 900s); the Gemini key lives in Secret Manager, not an environment variable.
- 32 passing tests.
Challenges we ran into
- Keeping the LLM out of the decision. Every time the scoring logic drifted toward "let the model decide," we pulled it back into deterministic Python.
- Streaming a 2-5 minute multi-agent run to a browser without the request hanging: agent-call timeouts, an atomic job-claim to prevent double execution, and lost-update protection on human validation.
- Multimodal transcription of a real, noisy field recording with no dedicated ASR.
- Making the governance gate provably non-bypassable: the access-level check has to run before any content reaches a model.
Accomplishments that we're proud of
- The accept / hypothesis / escalate call is 100% Python. The model never grades its own work.
- Provenance on every claim, including the human step.
- Genuinely language-agnostic — demoed on Mapudungun, tested on English and Spanish with no code change.
- Two independent model families on the conflict check, with union semantics so a real disagreement is never silently dropped.
- A governance gate that respects Indigenous data sovereignty (CARE principles) by construction.
What we learned
- For high-stakes reasoning, the useful division of labour is: LLMs generate and judge candidates; deterministic code owns the final decision and the audit trail.
- "Route to a human" is a feature, not a failure — as long as it is recorded as provenance.
What's next for Language Recovery OS
- Richer retrieval so real archives surface more supporting evidence instead of deferring almost everything to humans.
- Batch mode for whole archive collections.
- Export to standard linguistic interchange formats.
- A community-facing validation UI with role-based trust levels.
One of four
One of four projects on the same spine — an LLM proposes structure, deterministic code decides the outcome, and every claim is grounded in an independent source. Here it's the archive's own dictionary, grammar and corpus; a point-in-time Wayback capture in The Promise Ledger, Mexico's SAT shell-company blacklist in Trusted Hire México, versioned business rules in ScopeCouncil.
Log in or sign up for Devpost to join the conversation.