Weidong Shi.

AI in Action · Jul 24, 2026 · 10 min read

AI in Action #4: I Used to Lie to My Habit App

Streak theater teaches you to protect the chart. HabitCheck keeps week truth in code, puts AI behind consent, and coaches recovery — without fake completion.

I used to lie to my habit app — miss a workout, still tap Done; skip the reading, still protect the streak. The chart stayed green. I got worse.

That's streak theater — and most habit apps are built to make you play it. HabitCheck is AI in Action #4: a local-first weekly habit coach that asks what happens after you miss a day. Live at habitcheck.weidong-shi.com.

Wellness disclaimer: HabitCheck is wellness support only — not medical advice and not a medical device. Tracking Facts stay on-device; Coach runs only behind consent.

HabitCheck Facts vs Coach — week truth from code, optional AI behind consent
Facts come from code. Coach is optional AI — accept, edit, or dismiss.

Place in the series

Over recent weeks I built four very different AI-assisted applications. Each one taught something different:

  • RetireCheck — structured decision support and domain math
  • SleepCheck — product experience and privacy-first design
  • Readiness Advisor — production trust: scores from architecture, not the model
  • HabitCheck — a consumer coach OS: what happens after you miss a day?

Same methodology every time: Build → Validate → Improve → Document → Share. Four apps, four AI postures — HabitCheck's posture keeps Facts in code and puts Coach behind consent.

The problem

Most habit apps punish a miss with a broken streak — or invite fake completion to keep the chart pretty. That design teaches the wrong lesson: protect the streak, even if the habit story becomes dishonest.

I wanted the opposite: keep a small weekly plan honest, recover kindly after slips, and use AI where it helps restart — never where it invents checkmarks.

Design principles

  • Honesty before streak theater
  • Recovery before punishment
  • Facts (code) before Coach (AI)
  • Local-first before accounts
  • Consent before any model call
  • Narrow MVP before feature sprawl
  • Wellness language — never clinical claims

These principles became the constraints that guided every engineering decision and every AI prompt.

What shipped

MVP stays narrow on purpose:

  • At most three active habits
  • Flexible Mon–Sun weekly targets
  • Formal miss only after Sunday
  • Mid-week at-risk signals
  • Real recovery paths — a smaller version is not full completion
  • Pause when life happens
  • Weekly review + deterministic ±1 plan adjust
  • AI coach at key moments — Starter, Comeback, Review, Plan Adjuster, Monthly Reflection

Offline or declined AI still leaves a complete tracking app — capability is optional, honesty is not.

Facts vs Coach — the architectural decision

Facts come from code. Coach is optional AI — accept, edit, or dismiss. The model never rewrites week truth and never invents completion.

Local-first by default (Dexie / IndexedDB). Coach only through a privacy gate and POST /api/ai — versioned prompts, cost caps, fail-closed to Facts-only. That is the same trust pattern as Readiness, applied to a consumer habit OS: capability from the model, honesty from architecture.

HabitCheck architecture — browser PWA, Dexie Facts, Coach through privacy gate to /api/ai
Browser PWA → tracking Facts + Dexie; Coach only through privacyGate → /api/ai.

Engineer and AI Assistant

The engineer owns product direction, the Facts vs Coach boundary, recovery rules, the privacy gate, validation, and accountability. The AI assistant accelerates scaffolding, UI exploration, tests and docs assistance, and debugging support — never production judgment over week truth. Lint, typecheck, tests, and build run on every meaningful change.

The assistant proposes. Git and CI dispose — the same loop as the rest of the series.

Takeaways

Honesty beats streak theater. That is the foundation I want in a habit OS — and the lesson AI in Action #4 is meant to demonstrate.

If you've ever tapped “done” just to save a streak, you already understand why the architecture matters as much as the model.