LinguaForge: Gemma 4 LoRA across 204 endangered/low-resource languages (FLORES-200 + ChrEn)
# LinguaForge / 古韵 GuYun
> Offline AI for endangered language preservation, powered by Gemma 4.
> Submission for the **Gemma 4 Good Hackathon** (Kaggle, 2026).
## TL;DR
Every two weeks, the world loses a language. LinguaForge is an offline-first AI
companion that helps communities **Listen** to their elders, **Learn** from
preserved knowledge, and **Revive** their heritage by fine-tuning Gemma 4 on
their own corpus and shipping it through Ollama.
The whole submission rests on **one 169.7 MB LoRA adapter** that we trained on
**all 203 non-English languages in FLORES-200 plus Cherokee from the ChrEn
corpus** — 6 continents, 14 writing systems, 33,480 chat samples, 5 hours
on a free Kaggle T4.
## Highlights (real numbers from the eval kernel)
| Language | base chrF | +LoRA chrF | Δ |
|---|---:|---:|---:|
| Cherokee (`chr_Cher`) | 2.30 | **7.87** | **3.4× ↑** |
| Tibetan (`bod_Tibt`) | 19.14 | **27.05** | **+7.91** |
| Welsh BLEU (`cym_Latn`) | 3.90 → **6.13** | | +2.23 |
| Yoruba ⚠ | 21.65 | 11.10 | −10.55 (reported transparently) |
See `writeup/writeup.md` for the full panel, methodology, and a frank
discussion of the Yoruba regression.
## Project layout
```
A_Gemma4_Hackathon/
├── README.md # this file
├── STRATEGY.md # competition strategy, theme selection, plan
├── LICENSE # MIT (code); adapter weights are CC-BY-SA 4.0
├── requirements.txt # all Python deps
│
├── src/ # local Python implementation
│ ├── config.py # languages, models, paths
│ ├── llm.py # Gemma 4 client + tool-calling loop
│ ├── listen.py # Audio → LearningCard pipeline
│ ├── rag.py # Chroma vector store
│ ├── learn.py # tutor agent w/ native function calls
│ ├── revive.py # Unsloth fine-tune + Ollama export
│ └── agent.py # top-level fac …