I wanted to see how far I could get building a real product with AI doing most of the coding. FamigliApp is a household app that's actually live: it has real users, it charges money, and the login has to work at 3am when someone's adding milk to the shopping list.
✓ 1,150 commits in 46 days
✓ 9 core product features
✓ 10/10 email deliverability
"I noticed that many households are disorganized, no one really knows where the money goes or how tasks, events and expenses are being coordinated. This creates a mental load that gets distributed across family members."
Every screen below is the actual FamigliApp UI, pulled straight from the live production routes. Click any image to see it full size.

The dashboard is meant to answer one question: are we OK? It shows pending tasks, what we've spent this month, what's coming up, and anything running low, with tasks and shared expenses next to each other.

The inventory turns "where did we put it?" into a searchable list of the household's stuff, labeled and located, so nobody buys something that's already in the closet.
Tap the bubble. Ask anything about your home: expenses, the shared calendar, what's running low.
The butler pulls from the same data as your dashboard and answers instantly, in plain language.
"The app acts as an AI-powered household manager, making it easier to live together under one roof. That is the problem my product is solving."
Amount, category, who paid, how it splits.
The new-expense sheet is built to use with one hand while you're standing at the checkout.
If logging an expense takes more effort than the expense is worth, people stop after the first try.
Most of the work here went into keeping that habit alive past the first week. Making it look nice was secondary.
With Claude Code, Figma MCP and other AI Tools in my design workflow, the ability of going from a design idea to something users can touch and interact is real. All this help me to avoid of manual tasks. dev handoffs and keep the big picture of all the project.



A $150 test over 30 days (Apr 30 to May 29), pointed at the Spanish open beta. Small budget, but enough to learn something.
Each bar is one working day. The pace eased off on purpose toward the end, as I shifted from building the product to polishing it and setting up the commercial side: landings, SEO, billing, reactivation emails.
One funnel for everyone · Translate everything but keep one gate · Two locales, two purposes.
Test the app with real users from Argentina, while sharing an english version for Hiring Managers.
These two audiences want opposite things, and one shared funnel would've done a bad job for both.
Keep V2 and A/B test copy · One landing per ad campaign · Bento system with reusable cards per persona.
With the bento template, every persona page has to use the same pieces, so I stopped piling up design debt.
Forcing every persona onto the same components is the only reason the design stayed manageable as it grew.
The confirmation emails just weren't showing up. I spent May 17 to 19 pulling out the email setup and redoing it from zero.
I moved sending all my transactional emails with, and switched from a magic link to a 6-digit code.
I'd filed this as a minor bug, and it was actually stopping people from signing up at all. I almost left it for later.
Shipping a product is mostly not coding.
SEO, launching in multiple locales (Spanish open beta and English gated demo),
This is all design work, and it's what decides whether people stick around.
Terms, privacy and data handling, billing, taxes, invoicing.
This is the part I am most curious about long-term.
A three-layer token architecture. Primitives never touch the UI: they flow up into semantic, theme-aware tokens, which are the only thing components consume. Change a primitive and the whole system re-themes.
Every gray is the same ink hue at different opacities, coherent by construction, not arbitrary hex. Never pure white.
Geist, the typeface behind the famigli.app product and website: a clean, low-contrast grotesk from Vercel. Highly legible, precise, engineered over decorative. Fallback: Geist Fallback, ui-sans-serif, system-ui, sans-serif.
Three weights only, 400 / 500 / 600. Hierarchy comes from size + letter-spacing, not weight. 400 body / UI · 480 special display · 600 headings.
Negative letter-spacing scales with size: -1.5 at 60 → -1.2 at 48 → -0.9 at 36 → normal at 16. Headlines compress; body stays open.
Primary carries the signature multi-layer inset shadow (white top hairline + dark ring), pressed-into-surface, not floating. Ghost = secondary, Cream = tertiary, Pill / Icon = toggles & quick actions.
Ten reusable blocks composed from the primitives above. One bento grammar, five persona voices, zero one-off layouts.
Sections breathe at spacing/24–/32; cards pad at spacing/8; text gaps at spacing/3–/4. Depth stays shallow: borders contain, the dark-button inset is one tactile shadow, and a single lift (0 24px 60px -24px rgba(28,28,28,.25)) floats hero and photo cards.
Accessibility is built into the tokens, not bolted on. The system targets WCAG 2.1 AA in both light and dark.
outline:0 is never used without a replacement.prefers-reduced-motion.Computed with the WCAG relative-luminance formula. Target AA (≥4.5:1 body, ≥3:1 large), most pairs clear AAA (≥7:1).
This is still early, so I'd rather end on the open questions than a victory lap. I still think narrowing the audience down to couples was the right call, but I haven't actually proven it converts better yet.
What I want to do next is measure the couples loop properly: where people drop off in the task and expense flows, and how it compares head to head against the old version.
