Back to featured work

Daily Noodle · AI product

Rethinking mental wellbeing and growth with AI

A journaling app with a bet on mental wellbeing: one question a day teaches an AI your emotional and behavioral patterns, then reflects them back with concrete things to try. I designed and built it solo, with AI.

AI Product DesignApplied AI (LLM)Mental WellbeingAI-assisted Build0 → 1
Use the live product
ROLE
Product Design & Front-end
TEAM
Solo, designed & built
PLATFORM
Responsive Web App + PWA
SCOPE
Self-initiated 0 → 1 product
DESIGNED WITH
Pencil.dev
BUILT WITH
Claude Code · Supabase · Gemini · Cloudflare

What is Daily Noodle?

Daily Noodle started as a strategic bet: that the retention problem below is a matter of product shape, not willpower. The shape I bet on is a single daily loop — one question that teaches an AI your patterns over time, then reflects them back with something to try.

One questionNo blank page
You writeA minute, honestly
AI reads itMood & patterns
You see yourselfPatterns over time
You growSmall, real changes
Every day — and it compounds over a year
One question
No blank page
You write
A minute, honestly
AI reads it
Mood & patterns
You see yourself
Patterns over time
You grow
Small, real changes

Every day the loop repeats, and it compounds over a year.

Why it doesn't stick

The Problem

Self-understanding drives growth — and it's exactly what you can't see from inside a single day. Those patterns only surface over months, but journaling has a brutal retention problem: most people drop off within weeks, so the patterns never accumulate.

Still journalingMost quit within weeksThe payoff of reflectionWeek 1Month 6Year 1

Retention craters in weeks; the payoff only builds over months. The whole product exists to close that gap.

Most quit within weeksWeek 1Month 6Year 1
Still journalingPayoff of reflection

Retention craters in weeks; the payoff only builds over months. The whole product exists to close that gap.

Two forces kill the habit

The blank page. Deciding what to write is a tax you pay before a single word — and some days you just don't.

No visible payoff. Understanding yourself arrives months later; day four feels exactly like day three.

What “solved” would mean

  1. 1People come back — no consistency, no record for the AI to learn from.
  2. 2The patterns ring true — recognizably you, not horoscope-generic.
  3. 3The insight moves something — a behavior shifts; you feel more understood.

The Approach

A one-person product team, with AI as the execution layer

I set a constraint: ship a complete product solo, fast, without dropping the bar. So I ran it as a pipeline of AI tools — each owning a stage, my judgment on top. It's the same operating model I run with enterprise teams: own the direction and the quality bar, delegate the execution — except here the team was AI. Once execution is cheap, the scarce skill is deciding what to make and knowing when the machine is wrong.

Pencil.dev1
Prototyping & Design
Chose 4 mood families over 6
Claude Code2
Code Generation & Dev
Owned the architecture, not the syntax
GitHub3a
Version Control
50 of 66 commits, AI-paired
Supabase3b
Backend & Database
Designed the schema + privacy model
Cloudflare4
Deployment & Delivery
Deploys from the repo on every push

The tools are swappable. What shipped a good product is the calls they don't make — which four mood families, what to cut, when the convincing thing the model produced was wrong.

Pencil.dev1
Prototyping & Design
Chose 4 mood families over 6
Claude Code2
Code Generation & Dev
Owned the architecture, not the syntax
GitHub3a
Version Control
50 of 66 commits, AI-paired
Supabase3b
Backend & Database
Designed the schema + privacy model
Cloudflare4
Deployment & Delivery
Deploys from the repo on every push

The tools are swappable. What shipped a good product is the calls they don't make — which four mood families, what to cut, when the convincing thing the model produced was wrong.

Process · Design

Designing with Pencil.dev, deciding with judgment

Design started in Pencil.dev — fast exploration, with my judgment picking the direction. The clearest example is the mood system: ~45 moods are far too many to read on a calendar, so I compressed them into four families, ordered by intensity and colored for meaning.

~45 MOODS
gratefulhopefulenergizedproudcontentcalmnostalgiccuriousreflectiveanxiousunsurenervoustiredlonelyoverwhelmedstressedhappyexcited+27 more
by intensity & meaningHopeful & LightReflectiveMixed / UncertainHeavy / Struggling
~45 moods
gratefulhopefulenergizedproudcontentcalmnostalgiccuriousreflectiveanxiousunsurenervoustiredlonelyoverwhelmedstressedhappyexcited+27 more
by intensity & meaning
Hopeful & Light
Reflective
Mixed / Uncertain
Heavy / Struggling

Where judgment overruled the obvious choice

A before-and-after of the mood grouping: the same heatmap colored by six categories looks muddy, while colored by four families it reads cleanly. I reverted from six to four.
Six categoriesReverted

Muddy — hard to scan

reverted to 4
Four familiesShipped

Reads in half a second

Same year of entries, two groupings. Six categories muddied; four read in half a second — so I reverted. The git history still shows the arc.

Process · Build

Building with Claude Code

From design I moved into Claude Code and built the real thing — a typed React app, not a prototype. The split that matters for how I work: I architected the experience; AI executed the code.

And it ships continuously: Cloudflare deploys from the repo on every push, as an installable PWA, so every commit is a release and I iterate against the live product, not a local copy.

I architected

  • The two-tier mood detection — an instant local keyword tag, with the AI classifier refining it in the background.
  • The observation engine — what counts as a strength, a challenge, a pattern, and how insight is framed so it feels earned rather than generic.
  • The privacy model — what's private, what's shareable, and the explicit per-entry toggles that draw the line.

AI executed

  • The React component layer, state management, and responsive behavior.
  • The Supabase queries, the edge functions, and the data plumbing.
  • The unglamorous 80% — wiring, types, and refactors that would otherwise eat the timeline.

66

commits to ship

76%

AI-paired

1

person team

0 → 1

live product

50 of 66 commits were paired with Claude (Sonnet 4.6, Opus 4.7 & 4.8) — the build is genuinely AI-made, and version-controlled to prove it.

A built feature, not a mockup: because the 366-question set repeats annually, your past answers to the same question resurface — the mechanic that makes the product compound the longer you use it.

Process · Decisions

The product calls that don't show up in a screenshot

Never make the writer wait — reflecting should never feel like it's buffering. That bar is what drove the whole instant-save design.

Sharing is always a deliberate, per-entry choice — never an accident.

Write before you sign up. The unsaved entry is held and auto-submitted after sign-in, so the value lands before the ask.

One shared question a day. Because everyone answers the same prompt, community stays a quiet, opt-in moment — never a feed you perform for.

Process · Privacy & data

Privacy was the starting constraint

Journal entries are the most personal data a person has, so privacy was the starting constraint: a Postgres schema with row-level security, private by default. The AI features run as edge functions so nobody's writing — or the API key — goes anywhere it doesn't have to. I owned the schema and security model; AI wrote the functions against it.

SUPABASE
Browserthe app you use
Authemail + Google
Postgres · row-level securityentries private by default
Edge functionsprompts + fallbacks in version control
GeminiAI — server-side only

The Gemini key — and your writing — never reach the browser.

Browser
the app you use
Supabase
Auth
email + Google
Postgres · row-level security
entries private by default
Edge functions
prompts + fallbacks in version control
Gemini
AI, server-side only

The Gemini key and your writing never reach the browser.

The Core · Product AI

The AI that learns who you are

This is the heart of the product — and mostly a design problem, because a tool about your inner life can't feel like it's buffering or sound like a generic chatbot. Two Gemini functions do the work: one tags the mood behind each entry the instant you save; the other — diagrammed below — reads a whole year of them to find who you are.

A year of entriesWhat you actually wrote
analyze-entriesOne AI pass, up to 80 entries
PatternsHow you feel & behave
Goals & identityWho you keep trying to become
4 observationsEach tied to a goal, with one thing to try
A year of entries
What you actually wrote
analyze-entries
One AI pass, up to 80 entries
Patterns
How you feel & behave
Goals & identity
Who you keep trying to become
4 observations
Each tied to a goal, with one thing to try

It learns the patterns in how you feel and behave and the goals you keep circling, then ties them together — here's what's recurring, here's how it relates to who you're trying to become, here's one thing to try.

The constraints are the design: grounded in your own words, capped at four observations so it reads as clarity not an audit, and responsible — when a heavy pattern persists, it points toward real help, not just another app screen.

The Result

A mirror that helps you grow

The output of all of this is a complete, live product with one job: helping a person see themselves clearly.

The daily question removes the blank page. The resurfaced past answers let you watch yourself change. And the Reflect page assembles a year of writing into a streak, a mood heatmap, the themes you keep returning to, and the AI's observations — understanding you earn just for showing up.

Nobody fills out a goals form or drags a mood slider. The picture is a byproduct of the habit — which is the order of operations mental growth actually needs.

Because everyone answers the same question each day, there's a natural shared moment — an optional, private-by-default community feed where you can read how others answered.

Responsive and installable: every surface reflows to a single column, and navigation drops to a thumb-reachable bottom bar.

Validation

How I know whether it worked

Here's where I'll be straight: as a self-initiated project, this hasn't run long enough for a clean retention verdict, and I'd rather show you my thinking than invent a number. So I'll measure it against the three criteria I set at the start — what's validated, and what's still a hypothesis with a test attached.

People come back

I use it daily — the person most likely to quit (me) hasn't.

In daily use

The patterns ring true

In my own use, the observations read as recognizably me. Needs a real n.

Anecdotal

The insight moves something

Instrument whether suggestions get read — and taken.

To validate

Return rate vs. a blank-journal baseline

Day-7 and day-30 return — the number that proves the bet.

To validate

Would it matter at scale?

Back-of-envelope unit economics: at a category-typical ~4% free-to-paid, every 10K active users is ≈400 subscribers — on the order of $30K ARR per 10K, and it scales with reach. The point is the model, not the figure.

Projected

Reflection

Execution got cheap. Judgment didn't.

I set out to build something genuinely personal — an AI that learns who you are and helps you grow — the way I now think product gets made: with AI as both the intelligence inside it and the team that ships it.

When a model can design the screen, write the code, and generate the insight, a designer's value doesn't disappear — it concentrates into the decisions: what to build, what to cut, how to make machine insight feel humane, and when the convincing thing the model produced is wrong. Here the delegate was AI; on a team it's engineers, PMs, and designers — the posture is the same: set direction, hold the bar. That's the version of this skillset I'd want a team to hire.