Maxwell Grody

Projects

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.

Ask Mindscape

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.

Technical skills: Python · FastAPI · LangGraph · MCP · Retrieval-augmented generation (RAG) · Source-recovery evaluation

Live answers may take a minute or longer. A recorded example is available in the demo.

Ask the Stanford Encyclopedia of Philosophy

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.

Technical skills: Python · FastAPI · LangGraph · MCP · RAG · Corpus-specific prompt design

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.

Gamebot

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.

Technical skills: SQL · Python / pandas · Airflow · dbt · PostgreSQL · DuckDB / Parquet · Docker

DuckDB loads in the browser on the first query (a few MB, once). Full-season spoilers in the tables.

Jobwatch

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

DuckDB loads in the browser on the first query (a few MB, once). The data is as old as this morning's run.

The pitch warehouse

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.

Technical skills: SQL · dbt · PostgreSQL · Python · Data modeling (medallion layers) · Data quality tests · Resumable ingestion · DuckDB-WASM

DuckDB loads in the browser on the first query (a few MB, once). The two pitch-level tables are one sample week.

The game feed warehouse

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.

Technical skills: SQL · dbt · PostgreSQL · Python · Nested JSON unnesting · Data modeling (medallion layers) · Data quality tests · Idempotent, resumable ingestion · Docker Compose · DuckDB-WASM

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.

Steerable Recommender

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.

Technical skills: Python · NumPy / SciPy · scikit-learn · Collaborative filtering · Ranking evaluation · JavaScript

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.

Mindscape Explorer

441 episodes · 7.4M words

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.

Technical skills: Python · scikit-learn · sentence-transformers · Topic modeling · UMAP · Data visualization

Browse charts immediately once loaded; search results refine as passages are scored.

Has this been asked on Mindscape?

2,639 listener questions · 64 AMA episodes

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.

Technical skills: Python · FastAPI · Text embeddings · Semantic search · Retrieval evaluation

Search usually returns matches in under a second.

Heart of Gold

Search with unexpected connections · MCP server

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.

Technical skills: Python · PyTorch · sentence-transformers · SQLite · FastMCP · Hybrid retrieval / reranking

Initial search results appear first; refining their order can take 15 seconds or longer.

Model experimentation

Open-weight model experiments examine what changes after training or layer transplantation, including the costs of apparent improvements.

StargazerLabs models

7 open-weight MLX releases · ~3k downloads/month

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

Live model comparison. Responses stream as they are generated; requests may queue.

Counter-Attractor Prompting

A protocol built from failure modes

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.

Technical skills: Prompt design · Failure-mode analysis · Experimental design (proposed)

Analytics and prediction

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.

Player comps

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)

Everything loads at once, about a third of a megabyte, and the ranking runs in the browser. Defaults to the most recent season.

Pearl Islands voting coalitions

SQL · data validation · interactive analytics

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.

Technical skills: SQL · Python · Data validation · Metric definition · Interactive visualization

Interactive voting charts; no model wait. Full-season spoilers.

Who goes home?

Classification · calibration · survival analysis · 49 seasons of Survivor

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.

Technical skills: Python · pandas · scikit-learn / SciPy · Feature engineering · Classification / calibration · Survival analysis

Precomputed predictions; no model wait. Full-season spoilers.

What is an advantage worth?

Simulation · vote modeling · randomized experiments · 50 seasons of Survivor

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.

Which series is this?

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.

Technical skills: Python · pandas · scikit-learn · TF-IDF / logistic regression · Ablation studies · JavaScript

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.

The Oscar bump

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.

Technical skills: Python · pandas / NumPy · scikit-learn · Event studies · Uncertainty estimation · Forecast backtesting

Speech

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.

Who said that? Speaker-attributed Survivor transcripts

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.

Technical skills: Python · PyTorch · WhisperX / SpeechBrain · SQLite · FastAPI · Human review workflows