> Stefan Ruffini
platform PM · discovery & recommendations · 200+ experiments/yr · multiple millions/mo · Disney+, now Epic

Hey, I'm Stefan.

I build the platforms behind discovery and recommendations, the systems that shape what gets surfaced and whether it lands, a show worth staying up for, a game someone didn't know they wanted. At Disney+ and now Epic. Experimentation and data run underneath it. On the side I build my own products zero to one, because shipping is how I figure out what's worth getting serious about. What's in flight is below.

> currently building
> Event platform

Marquee

v0

One 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.

metric
DAU
target:
Audit in progress
metric
Group engagement
target:
Defining in Marquee audit

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.
> Civic engagement

CivicSwipe

v0

Strip the name off a voting record and people vote their values more honestly. That's the experiment.

stack Next.js · React · TypeScript · Tailwind · Framer Motion · Vercel Blob · Gemini image gen · Vitest · Vercel

Political apps are either rage-bait or homework. I wanted to actually test something instead of shipping another quiz. Same real voting records, shown three ways: the real politician, an attractive AI-generated face, or a cartoon animal. You swipe align or reject, and only at the very end does it unmask who you were judging and score how often you voted your own values. The bet is that the wrapper hijacks judgment, that the less identity you can see, the more honestly you vote your values. I pre-registered the cohort numbers before launch and they go live once real sessions roll in. Records are AI-generated and caveated hard. The point is the experiment, not the encyclopedia.

research metric
Values fidelity, blind vs named
The real question. Pre-registered call: people vote their stated values more faithfully as identity is stripped (animal ~82%, AI face ~72%, real politician ~60%). The live cohort bars replace my prediction once each arm hits 30 real sessions.
target: +22pp
Pre-registered, collecting
metric
Shares / DAU
Growth metric. Can a swipe-first civic tool actually distribute, or is it just a cool demo.
target: 0.20
Live, collecting

Voting records are AI-generated and can be wrong, the point is the experiment, not the source of truth. Two of the three identity skins are fully synthetic. We store only anonymous cohort counts: no names, no accounts, nothing personal.

version history
  • v0 first build. the blind-values experiment: same real voting records shown under three identity skins (the actual politician, an AI-generated face, or a cartoon animal), an end-of-deck unmask and a fidelity scorecard, with anonymous cohort counters running live on Vercel Blob.
> Consumer fintech

Bandolier

v0.5.0

Bandit-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. Twelve strategy sleeves are arms of a multi-armed bandit; capital flows toward whatever's earning on a risk-adjusted basis, and laggards get benched. The KPI started as raw return vs the index. v0.4.0 changed the objective: beat SPY without SPY's drawdowns. The book now gives up some upside and takes way less pain on the way down, and that's the trade I wanted.

metric
Return vs S&P 500 (5y)
Median 110% vs 84% over 2021-07 to 2026-07, price-based core, all 20 RNG seeds beat SPY. Less raw excess than the old six-arm build, on purpose: the twelve-sleeve cast trades raw return for risk control. Honest caveat: raw excess wins in only 2 of 5 twelve-month windows; drawdown wins in 5 of 5.
+25.8pp
target: > 0
Beating, 20/20 seeds
metric
Max drawdown vs SPY (5y)
SPY drew down -24.5% on the same window; the book stopped at -14.5%, worst seed -17.5%. Sharpe 1.29 vs the index 0.80, worst seed 1.13. The defensive sleeves carried about 78% of the book through the 2022 bear.
-14.5%
target: shallower than SPY
Beating, 10pp shallower
version history
  • v0.5.0 deal flow. an activist-stakes arm off 13D filings and a merger-arb arm off real deal spreads, validated on five years of EDGAR history. backtest-only for now: the live headline stays price-based until the filing pipeline is point-in-time clean.
  • v0.4.0 the cast rework. six arms became twelve sleeves, each a strategy plus a risk budget plus a mandate it cannot leave. the defensive sleeves flipped the risk profile: drawdown went from worse than SPY to 10 points better, for about 40 points of raw return. took the trade.
  • 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.
βγαθρ
> /ps -A · the other things running

Background processes.

01photographyongoing

amateur. mostly food, friends, and places I'm in. occasionally good.

view gallery →
02guitarweekly

weekly jam group in Seattle. not technically good but having a great time.

03bbq fest audioseasonal

a buddy throws a backyard BBQ music festival every summer. I help him run sound.

04hockeyweekly

pickup when I can get on the ice. more hustle than hands.

05video gamesongoing

lifelong. Donkey Kong Country 2 is the GOAT, no debate. still chasing 102%.

About: PM at Epic Games, ex-Disney and ex-Yahoo. I build a lot of stuff on the side because I get restless, and because shipping is how I figure out where I'd want to start something next. The processes above are the rest of who I am. If you're ever in Seattle, feel free to reach out.