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.

Know RAG Pipeline

  • 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.

tsr Pipeline

  • 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.

Canvas MCP Architecture

  • 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.

Walker Flow

  • 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.

Testudot Monitoring Flow

  • 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 uv for 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.