ADR-0003 — Mistral EU-first model policy; Meta/Llama excluded for minor data
Status: accepted Date: 2026-06-01
Context
pinky-ai is used in products that process data for EU end-users, including PLUTO_SCHOOL which handles data for minors. The US CLOUD Act allows US authorities to compel US-based cloud providers to disclose data processed on their infrastructure, regardless of where the data physically resides.
Meta's Llama models, hosted via AWS in Cortex, are subject to this risk. Using them as the default in a French B2B SaaS product aimed at schools introduces a legal exposure that is hard to explain to customers.
Decision
Model selection follows this hierarchy:
| Task type | Default model | Vendor | Rationale |
|---|---|---|---|
factual_simple, scoring_batch |
mistral-7b / mistral-large2 |
Mistral AI (FR) | GDPR-native, EU data processing, no CLOUD Act |
explanation |
claude-haiku-4-5 |
Anthropic | Quality-critical interactive path; Anthropic's DPA acceptable |
complex_reason |
claude-sonnet-4-6t |
Anthropic | Best reasoning quality for tutoring; used sparingly |
Meta models (llama3.1-8b, llama3.1-70b) are not used in any Pluto product.
This policy is encoded in PinkyAI.ROUTING_RULES and MODEL_MAP. Overriding to a Meta
model requires an explicit call-site argument and a documented exception.
Consequences
- Mistral AI pricing is comparable to Meta Llama equivalents in Cortex — no cost regression.
- Products outside the minor-data perimeter may relax this rule by overriding
task_typerouting at instantiation time. - When Snowflake adds a native EU-hosted Anthropic option, re-evaluate
claude-*entries. mistral-7bis used for internal summarisation (token compression, history résumé) since output quality is secondary to cost there.