presentation mode Β· current system + roadmap

AAC Analytics β€” a living architecture

child speaks β†’ data explains β†’ adults understand
currentfuture deployment
A child uses an AAC communication board. Events flow through a Next.js backend into PostgreSQL, a deterministic analytics pipeline creates explainable findings, and a scoped dashboard chatbot uses the shared MCP tool seam with cloud or future locally deployed models. EXPERIENCES APP SERVER + DATA GROUNDED AI events valid only scoped insights the question read-only outbound accounts Β· settings components/kid/board-app.tsx Β· lib/kid/log.ts (IndexedDB queue) Β· lib/kid/speech.ts KID APP / the communication board 🍎 πŸ’§ 🚻 βž• πŸ™‚ ❌ 🎨 πŸ”€ 🍎 βž• πŸ”Š πŸ“¦ IndexedDB queue Β· offline-safe πŸ§’ πŸ‘† tap πŸ—£ speak 🧭 nav πŸ”€ spell app/dashboard/* Β· lib/metrics.ts Β· lib/baseline.ts Β· components/insight-card.tsx Β· components/chat/* DASHBOARD /dashboard teacher Β· SLT Β· parent I4 I1 I8 baseline: 14d+40u πŸ’¬ Ask about Mia… ➀ πŸ§‘β€πŸ« app/api/* Β· lib/ingest.ts (grid-coord gate) Β· lib/access.ts (role + consent scoping) NEXT.JS SERVER one app Β· two surfaces /api/events β†’ ingest βœ…βœ‹ /api/chat β†’ ask agent /api/mcp β†’ HTTP door πŸ›‘ role + consent are filtered in the query layer β€” never in a component db/schema.sql Β· db/views_metrics.sql Β· db/views_insights.sql Β· lib/db.ts (4-statement WRITABLE whitelist) Β· tools/rollup.py Β· tools/run_rules.py Β· tools/verify.py DATA CORE aac_app.db accounts Β· passcodes Β· overrides aac.db analytics Β· PostgreSQL Β· WAL ✍ app writes: 4 statements only βš™οΈ PIPELINE rollup β†’ SQL rules β†’ fired_rules verify: 42 βœ“ lib/chat/ β€” agent Β· guard (forbidden actions) Β· tool bridge Β· settings πŸ€– ASK AGENT runs inside the server πŸ›‘ guard: no move / resize advice πŸ”§ tool bridge β†’ MCP tools answers must cite real numbers lib/chat/vertex Β· openai Β· anthropic Β· gemini β€” switch at /dashboard/settings MODEL PROVIDERS choose at /dashboard/settings ☁️ Vertex Gemini 3 ⭐ ☁️ OpenAI ☁️ Anthropic ☁️ AI-Studio Gemini πŸ”‘ keys stay server-side only mcp/ β€” server (JSON-RPC/stdio) Β· tools.ts (14 tools) Β· db.ts (query_only + deny-ATTACH) Β· app/api/mcp πŸ”Œ MCP SERVER one read-only tool surface Β· 14 tools doors: bridge Β· stdio Β· HTTP πŸ”’ query_only + deny-ATTACH 🚫 utterance text unreadable insights must cite a fired_rule_id Future: Gemma 3 4B on a separate device β€” outbound MCP client (docs/mcp-clients.md) πŸ’» GEMMA 3 4B local model Β· its own device connects outbound as an MCP client β€” reads metrics, writes rule-backed insights FUTURE