SapientIA
SapientIA — Inclusive Socratic Tutor The problem: Generative AI made answers free and learning rare.
Core trick
The tutor withholds answers until the learner reasons to them, tagging each concept as earned or told and grading hints from hint_1 to hint_3.
Description
SapientIA — Inclusive Socratic Tutor
The problem: Generative AI made answers free and learning rare. Students paste, they don't reason. The learners who were already underserved — blind, dyslexic, ADHD, motor-impaired — get hit twice: first by a tool that won't teach, and second by an interface that wasn't built for them.
What we built: A Socratic tutor that refuses to answer turn 1. It diagnoses, asks leading questions, and gives graded hints (hint_1 → hint_3). Final answers only land after the learner demonstrates understanding. Every concept earned through reasoning is tagged earned; every concept the tutor had to hand over is tagged told. The earned ratio is the headline metric — the first tutor that measures the difference between learning and Googling.
Why it's different: Accessibility is woven into the model's behavior, not painted on the UI. The learner's profile flows into both the system prompt (reading register, sentence chunking, single-question rule, define-on-first-use) and the interface (Atkinson Hyperlegible for dyslexia, ADHD focus-fade, dual ARIA-live regions, focus rings). Four axes — Visual · Cognitive · Learning · Motor — that compose orthogonally: a blind, dyslexic learner with ADHD can stack every layer and still get the same Socratic teaching, with no "lite mode."
Hands off the keyboard. Hold Shift+V, say "recap", "slow down", "minimize". Nine commands, no menus, no setup. Voice activation cancels in-flight TTS (barge-in) so a learner who can't reach a keyboard never gets stuck waiting.
README excerpt
# SapientIA — Inclusive Socratic Tutor A web tutor that teaches *any* topic through Socratic dialogue, adapted to four accessibility profiles (visual, cognitive, learning disabilities, motor / no-hands voice control). > **Earned, not told.** The tutor never hands you the answer on turn 1. It diagnoses, asks leading questions, and gives graded hints. Final answers only land after the learner demonstrates understanding — and every concept is tagged as either *earned* (you reasoned to it) or *told* (the tutor had to give it). The earned ratio is the headline metric. ## Why it exists Most AI tools optimize for *answering*. That's a bad pedagogy default — it offloads cognition instead of building it. SapientIA flips the contract: the model is given a 6-tool schema (`diagnose`, `ask_socratic_question`, `give_hint` with hint levels 1→3, `check_understanding`, `mark_concept_earned`, `deliver_answer`) and the prompt enforces escalation rather than capitulation. Accessibility is treated as a first-class axis, not a CSS skin. The learner's `AccessibilityProfile` flows into **both** the system prompt (reading register, sentence chunking, single-question rule) **and** the UI (font swaps, focus rings, ARIA-live priority, voice control). See [ADR-005](.claude/memory/decisions.md) for the rationale. ## Quick start You'll need an [Anthropic API key](https://console.anthropic.com), Python 3.11+, and Node 20+. ```bash # 1. Backend — FastAPI + SQLite cd backend python -m venv .venv && so