Projects
Nom or Not
A full-stack web app for tracking whether your cats actually eat their food โ log each feeding (๐ ate / ๐ one bite, left / ๐ refused) and turn it into insights like favorite flavors, most-refused foods, eating trends, and a Picky Meter ranking. There’s no separate backend: the analysis runs inside the database and the app just plots the results, with Row-Level Security enforcing privacy per user at the data layer. It also supports multi-cat logging and CSV import. Built with Next.js 16, React 19, and Tailwind on Vercel, backed by Supabase (hosted Postgres). ๐ Give it a spin ยท See the example dashboard ยท Read the blog post
Semblance 2.0
A research tool for exploring drug sensitivity in cancer cell lines โ not patients, and not a clinical tool. It runs on 487,799 harmonized GDSC2 + CTRP drug-response measurements merged with CCLE multi-omics across 810 profiled cell lines, and is built around being explicit about what it can’t predict. Every prediction is scored against a baseline that ignores the molecular profile entirely, which separates the drugs a cancer type is generically sensitive to from the drugs matched to an individual line’s expression signature; the second tier is shown only where it survives a permutation null, and is labelled exploratory throughout. The underlying benchmark found broad-spectrum potency to be a within-tissue property, with whatever personalization survives concentrated in a well-powered minority of drugโtissue pairs rather than spread evenly. A second tab matches an uploaded GSEA program against an 1,824-signature enrichment atlas, reusing Semblance’s comparison core. Everything here is meant for hypothesis generation rather than decision-making. Static frontend on GitHub Pages; CPU-only FastAPI engine on Cloud Run that scales to zero. ๐ Try it live ยท Read the preprint ยท Code ยท Data + code archive
Semblance 1.0
A multi-agent system that semantically compares GSEA enrichment results โ matching biological programs rather than overlapping gene-set names. Four LLM agents (preprocessor, orchestrator, interpreter, verifier) act as an MCP client calling a deterministic MCP server that owns all the math, so the model interprets and verifies but never computes the similarity itself. It embeds pathways with a biomedical language model, adds RAG-grounded cross-ontology explanations, and re-checks every claim against the engine’s numbers as a hallucination guard. Built with Gradio, FastMCP, and Groq on Hugging Face Spaces. ๐ Try it live
Board Game Finder
A conversational board game recommender powered by a Retrieval-Augmented Generation (RAG) system: it embeds your query, runs a similarity search over 20,000+ BoardGameGeek titles in Pinecone, then uses Llama 3.3 70b versatile (via Groq) to pick the best matches and explain why. Built with LangChain and Gradio on Hugging Face Spaces. ๐ Try it live
Chinese Folk Music
Exploring what gives Chinese folk music its regional “accent.” Most of it is built on the same pentatonic scale (ๅฎซๅ่งๅพต็พฝ), yet northern and southern tunes can sound worlds apart โ so this project quantifies the melody itself, measuring the semitone distance between every consecutive pair of notes and visualizing it as a color-coded melodic contour and an interval-distribution histogram. The headline finding: Northern Shaanxi (้ๅ) tunes spring oscillating wide leaps (upโdownโupโdown) for a bold, far-carrying sound, while Jiangnan (ๆฑๅ) tunes stay smooth and stepwise โ gentle and delicate โ with Shandong (ๅฑฑไธ) sitting in between. ๐ Explore the interactive comparison ยท Try the jianpu ็ฎ่ฐฑ player, a proof-of-concept that reads numbered notation and plays it back in the browser.
Variations on a Theme of Folk Songs from Shaanxi.
Beso Elite Music Academy
Website for Ms. Sophia’s piano studio. ๐ Visit the site