Inspiration
I'm studying English (B2) and a bit of programming. Most study apps want my eyes on a screen; a voice assistant is perfect for short, hands-free practice, but today's assistants are single-turn: they answer one question and forget me. I wanted Alexa to behave like a real study buddy that plans, follows up, and remembers my mistakes.
What it does
- Plans a session: "I have an hour to study English" → 2 × 25-minute focus blocks with breaks, with a warm-up chosen from memory (due and weak cards first).
- One "yes", two actions: it starts a warm-up quiz and the first focus timer.
- Spoken quizzes with spaced repetition (Leitner boxes): irregular verbs, phrasal verbs, European capitals, JavaScript basics, or your own words. It forgives a one-letter slip ("brougt"), handles "I don't know", "repeat", "stop".
- Proactive: when a focus timer ends, Alexa speaks first and offers a 1-minute review of the cards you missed. The next day it greets you with "Welcome back, Alessio. You have 3 cards to review".
- Multi-intent: "Remember that ubiquitous means everywhere, then quiz me on my words" saves a card and starts the quiz in one sentence.
- Progress: streak, focus minutes, trickiest cards.
- An Echo Show-style screen with visual cards, a light ring, voice in (Web Speech API) and voice out (speech synthesis), plus a live Agent trace showing every tool call.
How we built it
Plain HTML/CSS/JavaScript ES modules, no backend. The agent (src/agent.js) splits an utterance into clauses, understands each one using dialog state (a question in progress, a pending offer), and plans a sequence of tool calls. Tools live in an MCP-shaped registry (src/tools.js): each has a name, description and JSON-Schema inputSchema, exactly like an MCP tools/list, and each call is logged as a JSON-RPC tools/call request/result. Memory (src/memory.js) implements spaced repetition, streaks and focus minutes in localStorage. I built it with an AI coding assistant as my agentic tool. 8 Node unit tests plus a Puppeteer end-to-end test that also recorded the demo video.
Challenges we ran into
- Making a multi-turn conversation feel natural: the same word ("yes", "next", "stop") means different things depending on whether a quiz, an offer or a timer is active.
- Speech recognition mishears short answers, so I added tolerant matching (one-letter edits for longer words) without accepting wrong answers like "goed".
- Letting the assistant start the conversation (timer done, reviews due) without being annoying: it only speaks at natural break points.
Accomplishments that we're proud of
It's genuinely multi-turn and proactive, it remembers you across sessions, and it's free and private: no account, no API key, nothing leaves the browser.
What we learned
How MCP tools are described (schemas, tools/list, tools/call), how spaced repetition works, and that designing a voice conversation is mostly about state and short, clear prompts.
What's next for Alexa Study Buddy
Move the tool registry behind a real self-hosted MCP server (spec 2025-11-25, Streamable HTTP) so Alexa+ can call it, add Alexa reminders for due reviews, and let teachers share decks.
Built With
- css3
- html5
- javascript
- localstorage
- mcp
- puppeteer
- speechsynthesis
- web-speech-api
Log in or sign up for Devpost to join the conversation.