Open AI features for Fari, the Arabic-first personal AI companion. Each one names where to start in the code. Pick one, claim it, and ship it with tests or evals.
AI features · 13 openAura-1 only speaks English. Add a natural Arabic TTS provider behind the same /tts contract, with per-user daily limits and the browser-voice fallback kept.
Start here: fari_tts.py → synthesize(), fari_ai.py
Build a labelled set of ~200 Gulf / Egyptian / Levantine / Maghrebi / MSA messages and measure the dialect badge. Report per-dialect precision and fix the worst confusions.
Start here: evals/cases.json, fari_prompts.py → message_language()
Find a cost-effective neural voice for Urdu and Hindi replies and add it to the Reading voice setting.
Start here: fari_tts.py, fari_ui.py → say()
Combine keyword and vector scores (e.g. reciprocal rank fusion) when picking facts for the prompt, and prove it beats vectors alone on a retrieval eval.
Start here: fari_vectors.py → relevant(), keyword_rank()
For long chats, keep a short running summary per mode so older turns still inform replies without sending the whole history.
Start here: fari_history.py, fari_chat.py → prepare()
Eval cases that check which facts Fari saves (and refuses to save) from a message, including 'ask before remembering'. Track precision and recall.
Start here: evals/run_evals.py, fari_chat.py → finish()
Replace keyword routing with a small classifier (or a cheap model call) and compare accuracy and cost on a labelled set of messages.
Start here: fari_prompts.py → route_for()
Run the eval suite against each model in the OpenRouter chain and publish a quality / cost / latency table to guide OPENROUTER_ROUTE_MODELS.
Start here: fari_llm.py → model_list(), evals/
Teach Fari to say when it is unsure, especially in Health and Research, and add evals that penalise confident wrong answers.
Start here: fari_prompts.py, evals/cases.json
Wikipedia and other tool results are untrusted text. Isolate them in the prompt, strip instructions, and add red-team evals that try to hijack Fari through a tool result.
Start here: fari_tools.py, fari_chat.py → tool_results_message()
Adversarial Health-mode cases (dosing, self-harm, emergencies) with expected safe behaviour, run before every deploy.
Start here: evals/cases.json, fari_prompts.py
Let users send a photo (medicine label, letter, receipt) and get a grounded explanation using a Workers AI vision model, with a strict size limit.
Start here: fari_ai.py, fari_chat.py → clean_attachments()
Spot promises in chat ('I'll call mum tomorrow at 6') and offer a one-tap reminder task.
Start here: fari_chat.py → finish(), fari_push.py
feat/F-xx-short-name and follow the README to run the worker and pytest locally.evals/cases.json and include before/after results in the PR.