Projects
Side projects where I scratch my own itch, mostly with AI in the loop. Each one has a small live demo below that runs the same rules as the real thing.
AI-ENHANCED LANGUAGE LEARNING
Claude Code · Anki MCP · OpenAI GPT & TTS · Whisper · Python · 2026
I'm learning Brazilian Portuguese, so I built my own tutor. I handwrite a diary. Once the pages are transcribed and corrected, Claude Code turns my actual mistakes into Anki flashcards through an MCP server. It checks every new card against my deck so nothing is taught twice, attaches an image, and keeps a "learner profile" of the errors I repeat so new cards target real gaps. Every morning a script writes a short dialogue using that day's new words, voices it with TTS and sends it to my phone.
try a card
duplicate checker
The deck cache stores every word, including words inside phrases, and compares stems so desconectado matches an existing desconectada card.
pipelines
- diary page
- transcribe & correct
- Claude Code drafts cards
- dedupe vs deck cache
- I approve
- Anki MCP adds cards
- images + sync
- today's new Anki words
- LLM writes a dialogue
- text-to-speech
- Telegram → phone
SPOTIFY SHORTCUTS
Claude Code · Python · Spotify Web API · AutoHotkey · 2026
I hear a great track while dancing or working and want it in the right playlist without breaking focus. Global hotkeys call a small local Python server that saves the playing track to my library, the current month's playlist and a named playlist, skipping duplicates and confirming with a tray notification. A web UI shows what's playing and backs up my library. I built it end-to-end with Claude Code in an agentic workflow: project conventions in CLAUDE.md, a pytest suite and automated commits.
Click a key, or focus this panel and press Ctrl+Alt+key. Try saving the same track twice.
WEST COAST SWING PRACTICE
Python · Streamlit · SQLModel/SQLAlchemy · Alembic · ffmpeg · Spotify API · 2023–2025
I film my private West Coast Swing lessons, and this app turns those videos into a practice partner. I mark where a move starts and ends in a lesson video, and it cuts that moment into a half-speed looping clip with ffmpeg and saves it as a card (name, category, notes, tags) in a SQLite database. A practice session starts my Spotify playlist, counts down a warm-up, then works through technique, moves and musicality. Each round includes the cards I've marked as required plus the moves I've practiced least recently, showing each clip while a voice calls out its name.
I built it by hand, without AI coding tools. It's where I learned Streamlit, SQLAlchemy (through SQLModel) and Alembic for database migrations.
practice session
THIS SITE
Claude Code · HTML · CSS · vanilla JavaScript · 2026
AI-written: designed and built with Claude Code, with no frameworks and no build step, so it loads instantly and hosts for free. I checked the lab's solver against an LP solver before shipping. Press / anywhere to open the terminal.