Home

Projects

Things I build on the side, mostly about agents, people, and the context between them.

CivicSim

A synthetic U.S. electorate for stress-testing policy before it meets the public.

CivicSim

Agents are instantiated from American Community Survey microdata and conditioned on demographic-opinion distributions from the Pew American Trends Panel. The aim is a synthetic electorate whose opinions track the real U.S. adult population, one demographic cell at a time.

Experiments benchmark demographic alignment between the census and survey corpora, and test how well opinions transfer across geographies.

The thesis: realistic policy simulation needs grounding in real population data, not just model scale.

BrainSquared

One interface for every app you use, run by an agent that knows your context.

BrainSquared

Most of a day goes to context-switching: Gmail, then Slack, then Notion, the calendar, a GitHub PR, and around again. Each app only knows its own slice.

BrainSquared connects them into a living knowledge base, a single Obsidian vault that an LLM keeps up to date like a wiki rather than a data dump. It surfaces what needs your attention, drafts replies in your voice, and closes tasks back into markdown.

Everything runs locally. There’s no cloud middleman, and your data stays yours.

brb

Take a break while Claude Code works. Get called back the moment it’s done.

brb

brb hangs off Claude Code’s own lifecycle hooks: no AI, no polling, no terminal scraping. When a turn runs long enough to be worth leaving, it offers a break and a short list of places to go on purpose.

When Claude finishes, brb checks whether you actually left and whether the turn earned a callback, then brings you back.

An optional menu bar app draws the panel and the callback natively, and keeps a running count of the turn.