PERSONAL PROJECTS

Side projects at the intersection of data, AI, and whatever I'm currently obsessed with.

Agentic Tools

AI tools that ship with a Claude Code skill, each with a hard line the model is not allowed to cross: the inbox stays read-only, a human writes the Wikipedia article, nothing gets deleted.

24/7politely retrying
Active

Internet Historian

aidata

A patient Wayback Machine archiver. It treats a busy Internet Archive as weather rather than failure and retries until your pages are actually preserved.

PythonSQLitelaunchdWayback MachinePyPIClaude Code skill
212women documented
Active

Wikipedia Gap Finder

datacommunity

Finds people from underrepresented groups missing from English Wikipedia and fact-checks every claim into a research dossier. The AI does the detective work; a human writes the article.

PythonMediaWiki APIWikidataClaude Code skillNo API keys required
read-onlyby design
Active

Inbox Catalog

aidata

A local-first, read-only engine that turns order emails into a structured catalog of what you own, what's coming, and what you spent.

PythonIMAPClaude Code pluginLocal-firstPyPI
8 yearsof waiting for API v4
Active

MyFigureCollection API

aifandom

Unofficial API for MyFigureCollection.net, written after eight years of an officially promised API v4 that never shipped. A Python library plus a local MCP server with 12 tools, covering item search, JAN barcode lookup, partner shop prices, collections, and clubs.

PythonMCP servercurl_cffiWeb scrapingPyPI
Hamster Wheels preview
17 agents
Active

Hamster Wheels

ai

17-agent AI system for personal life management, built in Craft on Claude MCP. Each agent owns one life domain: triage, career, finance, events.

CraftClaudeMCPAgentic workflows
autointel sweeps

Hamster Sweep

ai

Background intelligence sweeps for two domains: Japanese reading practice from live news, and structured job-opportunity cards. Results land straight in Craft via MCP.

PythonAnthropic SDKweb_search toolCraft MCP

Desktop Pet Rescue

Cute Windows-only desktop apps, given a second life on native macOS. The original developers did the hard, lovely work; I do the porting, credit them prominently, and send fixes back upstream.

3pets on your desktop
Active

Yaha-Pet for macOS

fandommacos

Native macOS port of gitChara-dot's Yaha-Pet: Usagi, Hachiware, and Chiikawa roam the desktop. Two bug fixes offered back upstream in an open PR.

PythonPyQt6PyInstallermacOS
5skins · 5 languages
Active

Desktop Chiikawa for macOS

fandommacos

Native macOS port of CookieElmo's wellness-reminder pet from itch.io, rebuilt on the official Godot runtime. It reminds you to drink water.

Godot 4.4GDScriptPythonmacOS

Data & Pipelines

Pipelines, sync engines, and the observability habits that follow me home from work.

25k+anime entries
Active

Anime Analyst

dataai

Natural-language query system over 25k+ anime entries: PostgreSQL, a local ReAct SQL agent, and a Streamlit frontend. CMU capstone, presented at Anime Boston 2026.

PythonPostgreSQLLangChainStreamlitOllamaReAct agents
Twitter Archive Pipeline preview
NLP

Twitter Archive Pipeline

data

ETL pipeline that turns Twitter/X export files into a searchable dataset with NLP sentiment and topic classification, built for longitudinal self-analysis.

PythonPandasspaCyDuckDBDagster
26,720likes, finally read

Digital Wellness Through Data

dataai

Interactive case study mining a decade of personal social media data (26,720 Twitter likes, 4,500 saved YouTube videos, 500+ LinkedIn connections) to reveal what the algorithm sees. CMU data mining final project, published as a scrollytelling site.

PythonPandasHuggingFace TransformersScikit-learnStatsmodelsReactRecharts
blankbeats wrong
Active

Earditor

dataai

Evidence-based music tagger for macOS that cross-examines three independent witnesses (Shazam, AcoustID + MusicBrainz, iTunes) into six scored signals and a verdict tier per file. Treats a cover as a first-class verdict instead of a wrong catalog match, and never writes a tag it can't prove.

PythonFlaskShazamAcoustID + MusicBrainziTunes Search APISQLite
15+publishers, daily
Active

MangaRelease

datacommunity

Automated open-data release calendar for licensed English manga, manhwa, manhua, and webtoons, forked from LNRelease's engine with a rebuilt VIZ scraper and historical calendar backfill. Daily and weekly GitHub Actions scrape 15+ publishers, auto-commit, and auto-deploy the site with no human in the loop.

PythonGitHub ActionsWeb scrapingrobots.txt complianceStatic siteOpen data
1,600+records synced
In Progress

Media Collection Sync Engine

data

Media-collection sync engine keeping 1,600+ records aligned between a REST API and cloud storage, using GPT-4o fuzzy matching with a human-in-the-loop review UI.

PythonFlaskOpenAI (gpt-4o + embeddings)MEGAcmdREST API
14 daysis all github remembers
Active

Repo Observatory

datasre

GitHub keeps only 14 days of repository traffic history, so a private pipeline snapshots every repo daily into permanent CSVs with a self-updating README dashboard. SRE habits, applied to side projects.

GitHub ActionsPythonmatplotlibCSV

Fandom & Community

Tools that exist because a community needed them, or because I did.

2,800years of retellings
Active

Which Odyssey?

community

Recommendation quiz that matches readers, viewers, and listeners to the right Odyssey adaptation. 24 static pages covering 17 versions (translations, film, novels, albums, games) with structured data and FAQ content built for search and AI answers.

Static siteCloudflare WorkersSEOJSON-LDGA4
one enginemany stories
Active

Which Adaptation?

community

Hub for a family of adaptation guides built on one recommender engine and one catalog model. Every story gets its own property, quiz, and comparison matrix, with structured data and FAQ content built for search and AI answers.

Static siteCloudflare PagesSEOJSON-LDRecommender
RAGdiscord bot

Uma Musume Q&A Bot

aifandom

Citation-first RAG Discord bot for Uma Musume game mechanics, answering with page-level source attribution from a 200+ page community reference doc.

PythonLangChainOpenAI EmbeddingsFAISSDiscord.py
face AIcon buttons

K-Pop Button Maker

makerai

Desktop GUI that turns K-pop idol photos into convention-ready 1.5" button designs: automatic face detection, production-spec cropping, bleed margins.

PythonCustomTkinterInsightFaceOpenCVPillow
$0price of everything listed
Active

Campus Freebies

community

An agent-maintained catalog of free student and alumni perks: searchable list, campus map, weekly link checker. Live for Dartmouth and CMU; forkable for any school.

AstroSupabaseVercelGitHub Actions

Odds & Ends

Research, writing, and one very effective decluttering app.

livenewsletter
Active

Data Gremlin Go Brr

writing

Substack newsletter on AI tools and data systems for practitioners: the intersection of technical work with everyday life.

SubstackTechnical writingData storytelling
pre-ChatGPTDartmouth thesis
Legacy

GPT-3 Mobile Gaming Research

airesearch

Dartmouth senior thesis running experiments on GPT-3 months before ChatGPT's release, analyzing mobile-gaming monetization and player behavior.

GPT-3PythonNLPSentiment AnalysisMachine LearningQuantitative Social Science
15zones tracked

Home Zone Tracker

data

React SPA for tracking apartment decluttering zone-by-zone: 15 zones, sprint mode, deadline countdown. Built for real use before a trip.

React 19TypeScriptViteTailwindlucide-react
Fn+Ctrltap, speak, tap
Active

Osier

maker

Notch-native dictation for macOS, and a hard fork of OpenSuperWhisper. Tap Fn and Control, speak, tap again, and the transcription lands in whatever field was already focused. The upstream project owns the engine; this fork reshapes the trigger and the interface.

SwiftSwiftUImacOSWhisperOn-device ML