Hey, I'm Stefan.
PM at Epic Games. I run side projects in parallel because shipping is how I figure out what's worth getting serious about. What's in flight is below.
Marquee
v0One platform for the whole event: RSVPs, schedule, photos, group chat. Built for weddings first, running live on ours this September.
stack Next.js · TypeScript · Supabase · Tailwind · Anthropic SDK · Resend · Vercel
Built this because the wedding-tech market is a junkyard and we were drowning in research tabs. Wanted to see if a single platform could carry the whole guest experience: RSVPs, schedule, photos, group chat. Shipping it for our own wedding in September is the deadline.
The live demo runs on fake events so no real guest data is exposed. The real thing is running privately for our wedding this September.
▸version history
- v0 first build. RSVPs, schedule, photos, group chat in one app. running live on our own wedding this September.
CivicSwipe
When you strip identity from politics, do shared values predict agreement?
Started this because political tools are either rage-bait or homework. Wanted to test whether a swipe-first format could move people from opinions to shares. There are two questions wrapped together here: can this thing distribute (growth metric), and is the underlying thesis even true (research metric).
Bandolier
v0.3.0Bandit-driven stock picker. Strategies that beat the S&P stick around. The rest get killed.
stack Python · pandas · numpy · yfinance · uv · pytest · GitHub Actions · Vercel Blob
Built this to see if a portfolio could be run the way an experimentation platform runs A/B tests. The strategies are arms of a multi-armed bandit; capital flows toward whatever's beating the S&P over a rolling window, and lagging strategies get pruned or mutated. The KPI is dead simple: portfolio return vs the index. If I'm under, I'm wasting time vs. just buying SPY. If I'm over, the strategy has signal.
▸version history
- v0.3.0 return-with-guardrails objective (a risk-adjusted bandit plus a hard drawdown breaker), an evolving agent population across a risk spectrum, and a live daily paper-trading track. headline reframed to the reproducible price-based core so the live number does not wobble on a scraped data source.
- v0.2.0.1 RegimeDefensive arm. real downside defense that parks in cash when the market rolls over, replacing the accidental protection a v0.1 bug had been faking.
- v0.2.0 engine rework. strategies with no signal now sit out instead of teaching the bandit fake zero returns, plus a shift timeline logging what moved between arms and whether the move paid off.
- v0.1 the alt-data arms: congressional trades (House + Senate) and Form-4 insider clusters. universe grew to 37 names, with real transaction costs baked in.
- v0 first cut. Thompson-sampling bandit over 4 price strategies, weekly rebalance, 5-year backtest. proving the allocation math before anything fancy.
Background processes.
amateur. mostly food, friends, and places I'm in. occasionally good.
weekly jam group in Seattle. not technically good but having a great time.
a buddy throws a backyard BBQ music festival every summer. I help him run sound.
pickup when I can get on the ice. more hustle than hands.
lifelong. Donkey Kong Country 2 is the GOAT, no debate. still chasing 102%.