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 backno consistency, no record for the AI to learn from.
  2. 2The patterns ring truerecognizably you, not horoscope-generic.
  3. 3The insight moves somethinga 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.