Projects
I build product-focused software across backend systems, developer tools, and applied AI. I like projects that ship: real users, real constraints, and clean interfaces.
Know · Local Semantic Search CLI
Hybrid search CLI with persistent vector store for local document search.
- Reduced re-indexing time by 67% through incremental indexing and chunk deduplication
- BM25 + RRF fusion for improved retrieval quality
- Persistent Chroma store for fast subsequent queries
PythonLlamaIndexChromaBM25
tsr · Terminal Transcription CLI
Local audio/video transcription via whisper.cpp with auto model management.
- Auto-downloads and manages Whisper models (
tiny->large) - Supports 12+ audio/video formats + any URL yt-dlp supports (YouTube, etc.)
- Outputs SRT subtitles, JSON, or plaintext
Pythonwhisper.cppFFmpegCLI
Canvas MCP · LLM Course Assistant
Model Context Protocol server enabling LLM clients to query Canvas coursework data.
- 12+ API endpoints for assignment-aware AI Q&A
- Enables Claude, GPT-4, and other LLM clients to understand coursework context
- Zero-config integration with Model Context Protocol
TypeScriptMCPCanvas API
Walker · Concurrent Link Validator
High-performance Rust CLI that validates URLs in parallel.
- Validates 500+ links in <10 seconds using Tokio async runtime
- Connection pooling with configurable thread count
- Published to crates.io
RustTokioreqwestCLI
Testudot · Course Seat Monitor
Backend service monitoring UMD course availability with automated alerts.
- Async monitoring with
asyncio.gather()for parallel scraping - State diffing algorithm detects new sections, seat changes, and removals
- Dual persistence: local JSON (dev) + Upstash Redis (prod)
- Dockerized deployment with
uvfor reproducible builds
PythonFastAPIRedisDocker
NoteRouter · LLM Note Organizer
LLM-powered CLI that automatically categorizes notes into a taxonomy.
- Structured LLM outputs using Pydantic models with JSON schema generation
- Interactive TUI with Textual: split-screen directory tree + markdown viewer
- Automated file reorganization with approval workflow
PythonGemini APIPydanticTextual
PlanetTerp Agent · Course Research Assistant
Chat-based AI assistant synthesizing course data from multiple sources.
- OpenAI function calling for structured tool use
- Multi-source aggregation: PlanetTerp API + Reddit sentiment
- Conversation persistence with JSON export
PythonOpenAI APIFunction Calling
PlanetTerp Client · API Client Library
Typed Python client for PlanetTerp API. Published to PyPI.
- Clean API:
course(),professor(),search(),grades() - Type-safe dataclass models
- Includes OpenAPI spec and demo scripts
PythonPyPIREST API
Other Projects
- Watch: Terminal-first show search + playback. A Textual TUI that searches TMDB, browses results, and launches ad-less playback.
- Rename: Batch renamer that walks a directory and asks a model for better file names.
- Snippet-Verse: Stateless code sharing via URL encoding. Deployed on Vercel.