kizu
An invite-only space where a few friends share the movies and music they love. Live at kizu.app. I designed it, made every product call, and shipped it solo by directing AI development tools, for $0.
- Role
- Founder & Product Manager
- Duration
- 4 mo
- Type
- project
- Location
- Remote
Active friend groups
28 members, word of mouth, zero marketing
Page loads, was 1–2.5s
region co-location + parallelized queries
Total spend
free tiers only, 67 reviewed PRs
Overview
kizu is an invite-only space where a few friends share the movies and music they love. You drop a rec, friends save it, and you find out when it actually landed. Every Friday an AI reads the group's taste back. The feed ends on purpose: no algorithm, no ads, no doomscrolling. I designed the product, made every product call, and directed AI development tools through the build, with written specs, reviewed pull requests, and tests on every change. Live at kizu.app.
Inside the product
From the live app. Group members' names are blurred; the taste is theirs to share, not mine.






The challenge
An empty feed on day one, a rule against fake activity, a $0 budget, and a team of one.
A taste app is empty on day one, and faking activity would kill the trust it is built on
The feed had to end, even though endless feeds are better for retention
$0 budget: everything had to run on free tiers
One person doing product, design, code review, QA, and operations
Approach
One Metric Decides
Everything is judged by one number: recs that landed per group per week. Features that did not move it got cut.
AI Writes, I Decide
Specs before code, review before merge, 67 pull requests. The AI types fast. The judgment is mine.
Test Like a Team
Every change verified at desktop and phone sizes before it ships. A rule with no exceptions.
The Friday Ritual
Once a week, the AI reads the group's taste and sends one push. A low-frequency product needs an appointment.
Key decisions
The feed ends
Context
Endless feeds win on retention, but they turn your friends into content.
Outcome
The feed stops at "you're all caught up," and you close the app. That line is the brand.
No fake activity, ever
Context
The usual cold-start fix is fake activity. In a trust circle, that is the one lie you cannot walk back.
Outcome
A clearly labeled house curator shares five hand-picked recs a day until the group warms up.
Look at the data before building the fix
Context
Only 12% of saves got rated, so the watchlist looked broken. Split by source: saves people chose themselves landed at 67%.
Outcome
Killed the planned feature and shipped a simple "did you watch it?" prompt instead.
Fix the geography, not the queries
Context
Pages took over 2 seconds to load. The cause was not the code: the servers and the database were on opposite coasts.
Outcome
Moved them together and parallelized the slowest page. Loads now take about 200ms.
Results
Live at kizu.app: invite-only, with 28 members across 4 active friend groups grown purely by word of mouth and zero marketing, page loads around 200ms, total spend $0. Built through three product pivots on the same foundation, with the last of 67 pull requests merged on July 10.
Learnings
What did this teach me?
Slowness is usually geography, not code. Numbers that look like one pile are often two: self-chosen saves landed at 67%, auto-added ones at 12%. And the hard part of building with AI is not the typing. It is deciding what to build, what to kill, and what "done" means.
What would I do differently?
Validate with users before building. kizu went through two earlier concepts before this one; testing the core mechanic with a few friends first would have gotten to the right product faster, and that is how I start builds now. Same with performance: after the 2-second-load lesson, it gets watched from day one instead of noticed when it hurts.
Skills used
Product Strategy 0→1 · AI-Native Development · Next.js · TypeScript · Supabase · Playwright QA