Your Personal AI English Speaking Coach — a 45-day program that trains spoken English for professional situations: speaking, thinking in English, spontaneous response, fluency, pronunciation practice and interview readiness.
Roughly 80% speaking, listening and conversation; 20% grammar and explanation.
Say "I am working here since five years." and it will identify the error, explain it in one line, give you the natural version, ask you to say it again, ask a follow-up so you keep talking, record the pattern, and steer future conversations back to it until you have used it correctly several times in a row.
It remembers what you got wrong yesterday and builds today's lesson from it.
Every metric carries its provenance — measured, estimated, or unavailable —
along with the method used and the sample size. Speaking rate needs a timed
recording; pause analysis needs word timings; pronunciation needs signals a
transcript cannot provide. Where the evidence is missing the app says "Not
enough data" rather than showing a number that means nothing.
That rule is enforced structurally: a metric row cannot be stored without its
confidence and method, and there are tests asserting each metric is unavailable
when its inputs are absent.
cp .env.example .env # set SECRET_KEY
docker compose up --build # http://localhost:8080Or without Docker, with no database and no API key:
cd backend
python -m venv .venv
.venv/Scripts/python.exe -m pip install -e ".[dev]"
.venv/Scripts/python.exe -m app.seed
.venv/Scripts/python.exe -m uvicorn app.main:app --reloadThe default providers are mock (a real rule-based coaching engine, not a stub)
and the browser's own speech APIs — so the whole product works offline, free, and
with audio never leaving the device.
FastAPI · SQLAlchemy 2 · Alembic · PostgreSQL (SQLite for dev) · Redis · React 18 · TypeScript · Tailwind · Vite · nginx · Docker
Provider-independent throughout: AI_PROVIDER accepts mock, openai,
anthropic, ollama or custom; speech accepts browser, Whisper, or cloud.
cd backend && .venv/Scripts/python.exe -m pytest -q # 393 tests
cd frontend && npm run typecheck && npm run test:e2eIncluding a 146-case English error suite that tests false positives as hard as corrections — an English coach that "corrects" correct English teaches errors.
| Document | Contents |
|---|---|
| ARCHITECTURE.md | System shape, data model, coaching loop |
| docs/SETUP.md | Getting it running |
| docs/DEVELOPMENT.md | Layout, conventions, extending it |
| docs/DEPLOYMENT.md | Production, scaling, cost control |
| docs/API.md | Every endpoint |
| docs/DATABASE.md | Schema and the two tables that matter |
| docs/AI_ARCHITECTURE.md | Providers, agents, fallback |
| docs/AI_PROMPTS.md | Editing coaching prompts live |
| docs/SPEECH.md | STT/TTS, and what each metric requires |
| docs/SECURITY.md | Controls |
| docs/PRIVACY.md | What is kept, what is not, your controls |
| docs/TESTING.md | Suites and what they guard |
| docs/USER_GUIDE.md | For the learner |
| docs/ADMIN_GUIDE.md | For the operator |
| docs/TROUBLESHOOTING.md | When something misbehaves |
| docs/45_DAY_CURRICULUM.md | The program itself |
| SECURITY_REVIEW.md | Findings from the last review |
| PROGRESS.md | Build status |
After 45 completed days you get a certificate carrying your real statistics. It records completion of a practice program and says plainly that it is not an English proficiency qualification.