Live systems and technical case studies spanning data engineering, retrieval, recommendation, evaluation, and applied machine learning.
If you read two, read Gamebot, a warehouse with tests, declared lineage, and a published package, and Ask Mindscape, question answering evaluated against recorded answers. Each project page opens with the business problem it shares its mechanics with.
How these projects connect
The Mindscape projects share transcripts from Sean Carroll’s Mindscape podcast. The Explorer lets you search and compare episodes, while Heart of Gold provides the passage retrieval. Mindscape Memory uses that retrieval system for more involved research questions; Ask Mindscape makes its answer-generation workflow public. The public AMA checker has a separate index of listener questions, which lets it return matches much faster.
The model experiments investigate whether adding layers from an older language model can recover correct answers that a newer version no longer gives. The Survivor and Oscar projects use film and television data to explore voting patterns, prediction, and changes in attention. Each project page explains my contribution, the methods, and what the results can establish.
Question answering
Answers built from retrieved passages, with a blind draft, a model review, and a reveal of the one passage the model was not told about. Both tools show their evidence and their verification notes; the Mindscape version is measured against listener questions with recorded answers.
Answers across podcast transcripts · inspectable AI workflow
Ask a question across Sean Carroll’s Mindscape podcast and watch an answer take shape, with source passages, verification notes, and a reveal of the unexpected connection.
In a business: A team searching its own policies or records needs answers it can check against the source. This project evaluates finding the right source and writing the answer separately, because a found source does not make the answer right.
Answers across encyclopedia entries · the Ask Mindscape workflow on a second corpus
Ask a question of the Stanford Encyclopedia of Philosophy and watch an answer take shape from entry passages, with a blind draft, a model review, and a reveal of the unexpected connection.
In a business: A document assistant that works on one archive can stumble on another archive's vocabulary. This project moves the Ask Mindscape workflow to an encyclopedia and keeps its evaluation separate, since results on the podcast do not carry over.
Live answers may take a minute or longer; one question runs at a time.
Data engineering
Gamebot is the warehouse the Survivor analyses stand on: a medallion lakehouse (Airflow, dbt, PostgreSQL) that turns the survivoR dataset into feature tables and two ML matrices, with a demo that runs SQL over every table in the browser. The pitch warehouse applies the same shape to 1.4 million MLB pitches for the player comps tool, the game feed warehouse to a season of nested JSON documents from MLB's public API, and Jobwatch to job postings read daily.
Data engineering · Airflow · dbt · PostgreSQL · 77 seasons of Survivor
A medallion lakehouse for the survivoR dataset: Airflow and dbt over PostgreSQL turn 22 bronze tables into 8 feature tables and 2 ML matrices, one row per castaway and season. The demo runs SQL over every table in the browser, draws the lineage, and shows one castaway’s row of the gold matrix.
In a business: Teams need reliable tables before they can trust a dashboard or train a model. This project builds that foundation with scheduled ingestion, SQL transformations, data tests, and documented lineage, then ships the data as a Python package analysts can use.
Data engineering · DuckDB · a jury of three models · 115 companies watched daily
A warehouse of job openings at 115 companies I would work for, read every morning from the public endpoints of their job boards and labeled by a jury of three language models. The page filters the 221 open data roles, runs SQL over the gold tables in the browser, and reports how often the jurors agree.
In a business: Many teams watch a market through public records, whether the records are prices, filings, or job postings. This project keeps full history, publishes how often its classifiers agree, and stops a bad run before it reaches the page.
Technical skills: SQL · Python · DuckDB · Data modeling (medallion layers) · LLM labeling with measured agreement · Data quality checks · Scheduling and deployment · DuckDB-WASM
Data engineering · dbt · PostgreSQL · 1,373,138 pitches of 2025 and 2026 through September 15
The warehouse under the player comps tool. Every pitch of 2025 and 2026 through September 15 lands from Baseball Savant in PostgreSQL as delivered, dbt builds the labeled pitches, the hitter seasons and the count matrix the model reads, with tests on every layer, and the page runs SQL over the tables in your browser.
In a business: Most data work starts with landing a source faithfully and testing it before anyone builds on it. This warehouse keeps raw data as delivered, does every transformation in SQL with its reason logged, and lets a reader click through the lineage.
Data engineering · dbt · PostgreSQL · 2,395 games of 2025 as nested JSON
Major League Baseball publishes one deeply nested JSON document per game. This pipeline lands every regular-season document of 2025 as delivered, unnests it in SQL into games, plays, pitch events, runner movements and fielding credits, tests every layer against what the feed says about itself, answers three baseball questions fixed before the first pull, and says in writing how it would run at ten thousand games.
In a business: Most integration work is exactly this: a partner delivers nested documents, and someone has to make them queryable without losing anything and say what happens when the volume grows a hundredfold. This pipeline lands the delivery as it came, unnests it in SQL with every step tested, and answers the scaling question in writing.
DuckDB loads in the browser on the first query (a few MB, once). The event-level tables are one sample week; the game-level and gold tables are the whole season.
Recommendation
Movie and book demos explore how a viewer or reader can change a recommendation while preserving their starting taste.
Movies and books · separate models, shared steering interface
Movie and book recommenders that start from your taste and let you change the mood of the list. Each catalog has its own model and evaluation, with visible dials, natural-language requests, and title-based steering.
In a business: Product teams need recommendations that follow both a customer's history and what they want right now. I measure whether a requested change takes effect and what relevance it costs against simpler re-ranking, so a team can pick an approach before running an A/B test.
Two catalogs, separate models and evaluations. Dials run in your browser; typed requests use a server.
Retrieval
These tools return passages and leave the judgment to the reader. Explorer and Heart of Gold share transcripts from Sean Carroll’s Mindscape podcast and retrieval infrastructure; the AMA checker searches a separate index of listener questions. Heart of Gold also runs over the Stanford Encyclopedia of Philosophy and supplies the passages for both question-answering tools.
Search Sean Carroll’s Mindscape podcast archive, compare episodes by topic, and find something to listen to. The site also reports what the transcript analysis suggests about the show.
In a business: Teams often hold thousands of documents without knowing which topics matter yet. This project turns a large text collection into searchable passages and topic views, so someone can find relevant material and sharpen their question.
Check whether Sean Carroll has answered a similar listener question on his Mindscape podcast, then follow the result to the original episode.
In a business: Support teams save work by finding an existing answer before they open a new ticket. On 50 paraphrased questions with known sources, the right source ranked first 49 times. That supports suggesting matches for a person to review. Closing duplicates automatically would need its own evaluation.
Search the Stanford Encyclopedia of Philosophy and explore additional passages connected to the results. A statistical test selects the connections; the reader decides whether they are useful.
In a business: Internal search has to handle exact terms and loosely worded questions, and it has to stay usable when one component is slow. This engine combines keyword and semantic search with reranking, time budgets, and fallbacks.
Open-weight model experiments for Apple silicon. A layer transplant nearly doubles factual accuracy on a PopQA sample, mostly because the model answers more often. Precision falls from 58% to 25%. Fine-tuned variants that regressed were not released.
In a business: A team adapting an open-weight model needs to know whether a higher score means the model knows more or only guesses more. This project measures correct answers, wrong answers, and abstention together, which is the evidence a model-release decision needs.
Technical skills: MLX · Hugging Face Transformers / PEFT · Model adaptation · Quantization · Regression evaluation
A prompting protocol built around task failure modes, examples of better behavior, and a structured self-audit. Work in progress, with no public quantitative results yet.
In a business: Teams that use a language model for a repeated task need instructions aimed at its specific failures and a way to test revisions. This is a prompting protocol and a review design for that job. It is still a proposal without quantitative evidence.
Survivor, through Gamebot, my warehouse of the show's statistics: who votes together in one season, and across 49 seasons, who goes home tonight and how long people last, with the models' evaluation fixed before they were fit.
Analytics · dbt · PostgreSQL · a topic model over 1,373,138 pitches · 2025 and 2026 through September 15
A tool that finds the MLB hitters who operate like the one you type, whatever their production. Every pitch of 2025 and 2026 through September 15 is a word, a hitter’s season is a document, and a topic model finds 6 recurring ways of operating. Each comp carries how many of 20 separate fits agree on it. The gates were fixed before the runs and the page shows what they found, including the fit that had to be thrown out.
In a business: Many teams need to find the entities that behave like a given one without confusing behavior with quality, from customers who use a product alike to suppliers that fail alike. Each comp here reports how robust it is, and the page says what the model could not test.
Technical skills: Python · SQL · dbt · PostgreSQL · Topic modeling (NMF, LDA) · Model selection with stated rules · Pre-registered evaluation · Data modeling (medallion layers)
Follow who votes together in Pearl Islands, a season of the CBS TV show Survivor, and see when their voting alignment changes. Includes the ballots behind every percentage.
In a business: Analysts often look for recurring relationships in event records, like accounts that transact together. This project defines what counts as a fair comparison and traces every percentage back to its ballots, so a stakeholder can check a pattern before acting on it.
At a tribal council on Survivor, who is about to be voted out? Two models trained only on other seasons rank the castaways who could go home, from challenge and voting records and the edit, with the evaluation fixed before fitting; a Cox model asks what makes a castaway last.
In a business: Churn and conversion models need probabilities a team can act on, and a ranked list is not enough. This project builds features from earlier records only, validates on whole held-out seasons, and checks that predicted probabilities match what happened.
A Survivor season simulator, built on a model of how each castaway votes, plays seasons out from the merge thousands of times. Handing a random castaway an advantage in each run measures what an idol, a vote steal, an extra vote or a nullifier is worth to its holder. It runs in the browser.
In a business: Simulation answers questions no historical table can, like what one more resource is worth to the person who holds it. This project randomizes the treatment inside the simulation, compares it with an exact baseline, and checks the design with a placebo before reading any estimate.
Technical skills: Python · scikit-learn · Simulation / Monte Carlo · Experimental design · JavaScript / Web Workers · Model validation
Runs in your browser; 500 runs of a season take a few seconds. Full-season spoilers sit behind a button.
Language and style
Star Trek dialogue through a ladder of masks: what a text classifier is really reading when it names the series, and a game that puts people against it on the hardest rung.
Text classification · masking ladder · 951 episodes of Star Trek
Can a bag-of-words model tell which Star Trek series a paragraph of dialogue comes from? Yes, four times in five, but mostly by reading names. A ladder of masks removes the lore one category at a time to find what the shows’ voices are worth on their own, and a game lets you try the hardest rung against the model.
In a business: A classifier can look accurate because it keys on names or other shortcuts. This project removes identifying terms in stages, holds out whole episodes, and measures how much of the accuracy the shortcuts supplied.
Precomputed model answers; nothing runs in the page. Passages can spoil their episode.
Experiments and causal inference
A pre-registered event study on MovieLens's own clock, and a blinded user study of the recommender: designs whose checks are reported before their estimates.
Causal inference · event study · pre-registered design
What does winning Best Picture do to how many people rate a film, against the nominees it beat? An event study on 32 million timestamped MovieLens ratings: a brief rise in rating activity, no sustained effect established, and differences before the award that limit what can be attributed to winning.
In a business: Marketing teams need to separate a campaign's effect from trends already underway. This project uses a comparison group, an event study, and forecast backtests, and it documents a leakage mistake I found and corrected.
Speaker-attributed transcripts from audio and captions: the missing column the Survivor models need, with the measurements so far and the idea that was tried and retired.
Speech · speaker identification · human-in-the-loop labelling · work in progress
A pipeline that turns Survivor episodes and their captions into transcripts that say who is speaking: source separation, word-level alignment, voice embeddings, a per-castaway voice bank, and a review interface for the lines the audio cannot place. Two episodes labelled; the numbers so far, and the idea that did not work.
In a business: Call and meeting analysis depends on knowing who said what. This project matches speech to speakers, reports accuracy beside the share of speech it can assign with confidence, and sends uncertain cases to a review screen.