Why we built this

We got tired of habit apps that run on the honor system. You tap a checkbox, tell the app you worked out, and... that's it. Nobody's checking. We know ourselves well enough to know that a checkbox you can lie to isn't going to change your life.

So we flipped it. What if you had to actually prove you did the thing? And what if you weren't doing it alone — what if one person you trust was doing it right alongside you, seeing your progress in real time? That's DuoGrow. You pair up with one person, do real stuff — study, work out, solve the problem of the day — upload proof, and the AI checks it. You rise together or you don't. No faking your way through it.

What it actually does

You pair with exactly one partner and share a live dashboard, a streak, and a growth score. Everything the two of you do shows up side by side.

There are a handful of modules: Duo Wake (alarm-style wake missions), Duo Study (Pomodoro), Duo Workout, Duo Diet with calorie tracking, shared tasks, and a daily Problem of the Day pulled from a question bank you upload.

The core of it is the proof flow. You upload a screenshot, photo, or PDF, and the AI figures out what task it's proof of, matches it to something on your list or the POTD, and hands back a verdict with a confidence score. If it's confident, your progress just updates and your partner sees it within a few seconds. If it's on the fence, it asks you to confirm or tweak it before saving. If it really can't tell, it asks you to retake the shot or log it manually. The whole point is that it never just silently gets it wrong, and it never leaves you stuck.

On top of that there's an insights view — a growth score ring, a weekly report, and predictions like "you've got a high chance of skipping tomorrow's workout" based on your patterns.

How we built it

It's a Vite + React + TypeScript front end talking to a Hono API server, with better-sqlite3 for storage. Proof verification runs through the Claude API using vision and structured outputs, so every screenshot comes back as a strict, typed verdict — evidence, confidence, the works. Partners stay in sync with plain 3-second polling, and we scoped sessions per browser tab so we could run both sides of a pair in two tabs and demo the full loop ourselves.

We ship it as a single-origin build — one Hono process serves both the API and the built React app, so there's no CORS to babysit — and it auto-deploys to Render on every push.

We also built a demo mode with a deterministic fake verifier, so the entire flow works with no API key at all. That turned out to matter: if a live AI call ever falls over mid-demo, the app quietly drops to a "just confirm it yourself" card instead of dying on stage.

The hard parts

Honestly the confidence tiers were the thing we rewrote the most. Deciding when the app should just trust the proof versus when it should stop and ask you — get that wrong and it's either gullible or annoying. Finding a line that felt trustworthy took way more tuning than we expected.

Keeping two paired users actually in sync without overbuilding it, and making everything degrade gracefully when the AI wasn't available, were the other two we sank real time into.

What we learned

Proof changes everything about how a habit app feels. When you know something checked your work, the streak actually means something. And building for the moment the AI isn't there — the failure path — ended up making the whole thing feel way more solid than the happy path ever did.

Where it goes next

Deeper coaching with real memory of your history, better POTD generation straight from uploaded books and PDFs, a few more modules, and eventually going past just duos into small accountability groups.

Built With

Share this project:

Updates