masato

106 posts

masato banner
masato

masato

@masatobuilds

shipping AI products solo. next.js · supabase · claude api @USCviterbi MSCS · ACL 2025 co-author Tokyo → Los Angeles, the long way around. ↓ https://t.co/9OydJg8rb8

Tokyo, Japan Katılım Mart 2026
90 Takip Edilen35 Takipçiler
Sabitlenmiş Tweet
masato
masato@masatobuilds·
I'm Masato, a software engineer based in Tokyo. Heading to LA for grad school this fall. I grew up in Tokyo, spent a year in Australia, worked as a data engineer, then quit my job to study computer science in Budapest on a scholarship. Now I'm back in Tokyo, freelancing and building my own products on the side. I want to share what I'm building, what I'm learning along the way, and the life decisions I'm figuring out in real time. Nice to meet you.
English
2
0
3
195
masato
masato@masatobuilds·
next.js 15 routing pattern: co-locate components with routes. app/dashboard/page.tsx app/dashboard/_components/chart.tsx app/dashboard/_lib/utils.ts deletion stays safe. discovery stays obvious. #nextjs #webdev
English
0
0
0
0
masato
masato@masatobuilds·
my X engagement went up. my product MRR didn't. these are different funnels. following ≠ buying. attention ≠ conversion. still figuring out where the bridge is. #buildinpublic
English
0
0
0
0
masato
masato@masatobuilds·
supabase RLS pattern that's been working: 1 policy per access pattern, not per table. "users see their own rows" applies to read, write, update, delete across most tables. abstract early. RLS is part of the data model. #supabase #postgres
English
0
0
0
8
masato
masato@masatobuilds·
shipping the smallest version of one product today. not a launch. not a flagship. just one feature, end to end, working in production. momentum > perfection. #buildinpublic
English
0
0
0
9
masato
masato@masatobuilds·
my actual stack (3 products in production, 0 paying users): next.js supabase claude api stripe vercel resend monthly cost: ~$20. revenue: $0. build is solved. distribution isn't. #buildinpublic #saas
English
0
0
0
21
masato
masato@masatobuilds·
the muscle solo dev is hardest to build: deciding what NOT to build. every feature i ship is one i maintain forever. cutting feels like loss. it's actually focus. #indiehackers
English
0
0
0
7
masato
masato@masatobuilds·
claude code session pattern from this week: write the spec in markdown first. one feature per session. close the terminal when done. short focused sessions ship. open-ended sessions wander. #claudeai
English
0
0
0
14
masato
masato@masatobuilds·
reading patrick mckenzie's "don't call yourself a programmer" today. his point: companies hire problem solvers, not programmers. "i write python" < "i improved [outcome] by [number]." reframing how i describe my own work. #devlife
English
0
0
0
11
masato
masato@masatobuilds·
day 33. yesterday: picked 1 of 4 products to focus on. today: shipping the smallest version end to end. closing tabs is harder than opening them. #buildinpublic
English
0
0
0
12
masato
masato@masatobuilds·
end of day: picked 1 product to focus on. ran a claude code session that worked. posted ~20 things. mom test interviews tomorrow. small day. consistent. #buildinpublic
English
2
0
2
35
masato
masato@masatobuilds·
next.js routing pattern that's been helping: co-locate components with routes. app/dashboard/page.tsx app/dashboard/_components/chart.tsx app/dashboard/_lib/utils.ts deletion stays safe. discovery stays obvious. #nextjs #webdev
English
0
0
0
5
masato
masato@masatobuilds·
the unsexy part of shipping: every product is "almost ready" for 6 weeks. the last 20% takes 80% of the time. learning to ship at 80% and fix the rest in production. #buildinpublic
English
0
0
0
4
masato
masato@masatobuilds·
tools i'm using daily: - claude code (90% of dev) - supabase (everything backend) - next.js + vercel (deploy) tools i tried and dropped: - cursor (claude code does the same) - multiple email services (resend covers it) simpler stack = faster shipping. #indiehackers
English
0
0
0
39
masato
masato@masatobuilds·
stripe webhook handler pattern: every handler stores event.id first. returns 200 immediately if seen. stripe retries on any non-2xx. without idempotency, you process the same payment multiple times. #stripe #devlife
English
0
0
0
3
masato
masato@masatobuilds·
solo SaaS with $0 revenue: shipping the product was 30% of the work. finding users who care is the other 70%. i'm only realizing this 4 products in. #buildinpublic
English
0
0
0
12
masato
masato@masatobuilds·
reading the mom test before user interviews this week. the rule: never ask "would you use this?" people lie to be nice. ask "when was the last time you had this problem?" watch if they can even remember one. #indiehackers
English
1
0
0
9
masato
masato@masatobuilds·
the gap that keeps showing up: i can ship a feature in an hour. i'll postpone sending one cold message for a week. skill is not the bottleneck. something else is. #indiehackers
English
1
0
0
6
masato
masato@masatobuilds·
claude code session that worked today: spec written in markdown first. 20 minutes focused coding. done. vs sessions where i "just start typing": 2 hours, mostly fixing what i broke. short sessions, clear contracts. #claudeai #devlife
English
0
0
0
10
masato
masato@masatobuilds·
my X engagement went up. my product MRR didn't. these are different funnels. following ≠ buying. attention ≠ conversion. still figuring out where the bridge is. #buildinpublic
English
3
0
1
16
masato
masato@masatobuilds·
the choice today: ship 1 product to actual users this week or keep 4 at 80% complete forever. picking option A by tonight. posting which one tomorrow. #buildinpublic
English
1
0
1
12