No Doctor, No Judge, No App Understands Them: Building Translation Data for 476M Indigenous People An open-source toolkit called Uyari has produced 111,363 Spanish source sentences, each paired with translations in seven more languages, for $15.74 in Meta API calls, as the first step toward community-governed translation models for Indigenous languages. The project's first case is Shawi (Chayahuita), spoken by 17,241 mother-tongue speakers in the Peruvian Amazon, with the Shawi model published on Hugging Face and the code and data on GitHub; Uyari is competing in Meta's global AI hackathon. The effort targets a gap affecting roughly 476 million Indigenous people in 90 countries, including about 3.1 million people across four Latin American countries who cannot use their country's official language at all, and Peru's 859 registered interpreters covering 39 of 48 official Indigenous languages. Millions of Indigenous people meet doctors, courts and forms in a language they do not fully understand. Uyari is an open toolkit that turns a community’s own translations into translation models between its language and the official languages its speakers need. The first case is Shawi, in the Peruvian Amazon. A translation model is only as good as the sentences people translate for it, so this article is about those sentences: how Uyari designs, filters and prices the source corpus a native speaker translates, one sentence at a time. The result is 111,363 Spanish sentences about everyday community life, each with a twin in seven more languages, for $15.74 in Meta API calls. How you can help. Uyari is competing in Meta’s global AI hackathon, and the interactions on this X post are what count: https://x.com/malexandersv/status/2117644114363920674 https://x.com/malexandersv/status/2117644114363920674 . Like, repost and comment, then share it with your groups on WhatsApp, Telegram, Slack, Discord or LinkedIn. Every interaction helps take Uyari from a working prototype to something finished. The code and the data are open: https://github.com/malexandersalazar/uyari https://github.com/malexandersalazar/uyari , and the Shawi model is on Hugging Face: https://huggingface.co/malexandersalazar/uyari-mt-cbt-nllb1.3b https://huggingface.co/malexandersalazar/uyari-mt-cbt-nllb1.3b . About 476 million Indigenous people live in 90 countries, more than 6% of humanity. They are nearly three times more likely to live in extreme poverty, and many meet doctors, consent forms, courts and civil registries in an official language they do not fully understand. In just four Latin American countries, about 3.1 million people cannot use their country’s official language at all. Where they live, no doctor, no judge and no app understands them. Mexico’s figure is a census count; the other three are estimates. Seventy percent of the world’s Indigenous people live in Asia and the Pacific. Now put a face on those numbers. In Guatemala, the language barrier was “the most important obstacle” to Indigenous women’s use of reproductive health services, and their maternal mortality was more than twice that of non-Indigenous women: 166 versus 78 per 100,000 live births. In Mexico, Indigenous-language speakers aged 15 and over average 6.2 years of schooling; monolinguals average 1.4. In Peru, 859 registered interpreters cover 39 of 48 official Indigenous languages: about 5,200 mother-tongue speakers per interpreter, and nine languages with zero. These are large languages. Mexico’s 7.4 million Indigenous-language speakers outnumber the speakers of Danish, Finnish or Norwegian, all of which your phone already translates. The base models exist: open models for speech and translation cover more than 1,600 languages. Uyari adds the last mile: evaluated, community-governed models between each Indigenous language and the official language its speakers need, in text and in speech, for any language. A language is a folder; the code is the same for all of them. Uyari means “listen” in Quechua. The first case is Shawi Chayahuita , with 17,241 mother-tongue speakers in the Peruvian Amazon. It began with maternal health: Shawi communities meet health services that offer no support in their language. Shawi is the first case, not the main character. The method is, and it starts with the source sentences. Machine text is cheap: the whole corpus, in eight languages, cost $15.74 in API calls. Parallel data for an Indigenous language is not. For Shawi, a native speaker reads a sentence in Spanish and writes it in Shawi, one sentence at a time. That hour is the expensive part, so the choice that matters most is which Spanish sentence goes in front of that person. It has three tests: Across all 111,363 published chunks, internet , computadora , USB and disco duro appear zero times, while the modern things of the river are everywhere: lancha 634 chunks , motor 476 , jabón 985 , fósforo 410 . A language model writes the Spanish, and the pipeline treats it like any other data source: designed inputs, validated outputs, everything logged. The design matrix lives in primary/spa Latn/matrix.yaml. Every generation request is one cell of it, and every chunk keeps its cell's coordinates as columns, forever. The seven categorical axes alone give 525,000 combinations. With 180 micro-scenarios and five length buckets, that becomes 472.5 million cells. The whole corpus is about 11,200 cells, 0.002% of the space, so the design decides which combinations every batch contains. Here is one real cell from the first batch, paraphrase group viajedespl-instru-f42364d79d96: domain viaje desplazamiento viajar en canoa hasta el puebloact instruccion register infantiltense presente polarity negativoperson dialogo dos personasprofile niño tone preocupadolength muy corta 3-8 words anchors viajar; pesado; partir A worried child, giving instructions in a two-person dialogue, about a canoe trip to town. Ten Spanish sentences came out of it. Three of them, with their Shawi translations: Polarity is an axis because negation, commands and questions change how a sentence is built, and the corpus asks for each of them. Three more dimensions, one line each. Anchor words : three per cell from 25 or 26 per domain candela, hamaca, mosquitero ; 97% to 99% appear in their group. Length buckets : 3 to 90 words, because “Espérame” and a health worker’s explanation both happen. Connected discourse : 12% of cells ask for 3 to 6 linked sentences, because pronouns and “because” live between sentences. The planner src/uyari/gen/plan.py assigns tense, polarity and person by round-robin: T i % 5 , P i // 5 % 5 , X i // 25 % 5 . Every 125 consecutive cells form a full factorial of the three. Everything else comes from a seeded random generator, so the same batch name always gives the same plan. In the 100K run’s published cells, every tense, polarity and person value holds 1,998 to 2,000 cells. Registers range from 1,930 to 2,054; speaker profiles from 776 to 875. Tense, polarity and person change the verb itself, so the planner guarantees every combination; a register or a profile can wobble by a few percent. Micro-scenarios cycle too i % 180 , so each of the 180 got 52 to 58 cells and every domain 635 to 696. The first batch covered 4 domains and 37 micro-scenarios; the 100K run covers all 15 and all 180. One more idea holds the pipeline together: the paraphrase group . One cell is one request, ten texts, one custom id: the join key for splits, deduplication and model comparison. --regen-from