Two months ago I was about to ship a crypto signal product. It "worked technically" but I had zero
signal on whether anyone would subscribe.
So I wrote 12 fictional user personas as markdown files — a burnt veteran trader, a hostile compliance
officer, a YC partner, a noise-allergic fund manager — and built a Python harness that fed each one my
actual product transcripts and asked: "what would you actually do?"
The answers were brutally helpful. They killed features I'd spent weeks on. I open-sourced the harness
as personalab (MIT).
## Then I pointed it at 3 real products
1. personalab itself — yes, I tested my own tool with my own tool. 0/8 simulated B2B SaaS buyers
said they'd pay $99/mo. The case study became my own roadmap.
2. PostHog — 6/12 personas said "yes I'd pay" after reading a 7-day product transcript. Same 12 over
5-day agentic simulation: 0/12 sustained. The "yes" was first-impression optimism; the "no" was
multi-day reality.
3. Cal.com — 8/12 yes at $5-20/mo. And here's the gold: 75% of complaints converged on ONE thing —
the free-plan "Powered by Cal.com" branding makes recipients suspect spam. 8 distinct personas
independently nailed the same conversion lever.
## A pattern emerges
After 3 case studies, the number of dominant friction clusters in a personalab run seems to correlate
with PMF stage:
- Pre-PMF: 4-5 diffuse complaints (my own tool)
- Mid-funnel: 5 distinct friction clusters (PostHog: price / learning / UI / compliance / privacy)
- Late-funnel: 1-2 clean conversion levers (Cal.com: branding)
If this holds in case study #4+, personalab becomes a free PMF-stage diagnostic from a $1 LLM run.
## Honest disclaimer
The default personas accidentally encoded personalab-specific preferences, so some quotes leak when
reused on other products. I kept the bug in the case study writeup rather than rerunning with clean data
— it surfaces persona design as a real engineering concern.
## Try it
bash
git clone https://github.com/g16253470-beep/personalab
cd personalab && pip install -e .
personalab run --mode static --personas ./personas --adapter your_adapter --llm gemini:gemini-2.5-flash
40-line adapter, 12 default personas, MIT licensed.
Repo: https://github.com/g16253470-beep/personalab
Two questions for DEV
1. What product would you point this at first?
2. Real PMF business or just an OSS curiosity?
Tell me where this falls apart — that's the next case study.
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.