The Ordinary

Find you.

When did you last feel like everything just worked?


Intro

I built this project with a ways of work between Miro -> Claude -> Cursor -> Github and a developer experience that involved several orchestrated agents that I would set to work each morning and debug each evening.

My experience of building with these agents was as invaluable as their experience of building with me. In each of the Q&A's that follow I've included my own views, but also the response each agent had - in the hope that you'd both, and the contrast between responses valuable.

Inspiration

How are you doing? Plenty of people ask that question. Few wait for the answer.

Today, we already measure everything. A wearable can keep a day you were too busy to write down. A recovery score can say how your body did. Few uncover the cause & effect relationships what drives each feeling, until now..

That gap, between what your devices remember and what you remember, is where The Ordinary lives. It sits in the whitespace between wearables (WHOOP, Oura, Apple Health) and personal AI (Bee). We aren't building a moonshot. We're building a way back to your own normal: the version of you that's firing on all cylinders.

What it does

A few minutes of speech on your phone. That's the check-in.

  • Bee supplies what was actually captured that day.
  • WHOOP supplies recovery, sleep and strain.
  • You tell the day in your own words.

The Ordinary compares your account with what was captured and gives you two numbers, kept deliberately apart:

  • Accuracy: how much of the day you recalled, and how little you invented.
  • Richness: how you told it.

The score is yours. It's measured only against your own earlier check-ins, and it never diagnoses anything. A membership chat sits alongside it to help you make sense of the trend. After you check in, your words can go back into Bee as a journal, a conversation or a confirmed fact, so your memory gets stronger the more you use it.

How we built it

App. Next.js on Vercel, with Neon Postgres in London. Members sign up, give health consent, and connect Bee and WHOOP.

Bee. Read from the developer API: profile, conversations, journals, daily summaries, facts and todos. Locally, that goes through the Bee CLI proxy. In production, the server calls app-api-developer.ce.bee.amazon.dev with a saved token and Bee's private certificate. Check-ins can be written back to Bee.

WHOOP. Standard OAuth.

Chat. Amazon Bedrock, using @aws-sdk/client-bedrock-runtime to send a Converse call to Amazon Nova Lite. The model sees a short brief and the recent thread, answers in plain sentences (capped at 700 tokens), and never writes back to Bee or WHOOP.

Scoring. A separate path from the chat. Accuracy only exists when Bee has something to be accurate about:

$$ \text{accuracy} = \mathrm{round}\Big(\mathrm{recall} \times \big(1 - 0.5 \times \mathrm{intrusion}\big) \times 100,\ 1\Big) $$

If the Bee snapshot is empty, accuracy is null, not zero. Richness is never blended into accuracy. The first three check-ins are practice and stay off the trend.

Warehouse. Built beside the app, not inside it: BigQuery in London, Dataform and Vercel workload identity. Pages never read from it. Speech never enters it.

Challenges we ran into

  • Bee facts are not flexible so many properties, but so little we could do with them.
  • Bee login hung on a machine with no system keychain. BEE_FORCE_FILE_STORE=1 got past it.
  • Pairing a device was hard. The connect link expires in about five minutes. On Android, Developer Mode stays hidden until a device is paired.
  • Two ways into one API. The Bee proxy can't run on Vercel, so local development and production reach the same API by different routes.
  • Safari drops speech recognition mid-sentence. The session restarts the recogniser and keeps the tail of what was said, so even a short talk gets saved.
  • Getting a model on Bedrock. The account check hit "account being verified", then "not available for this account". Nova Lite in the same region answered first time once the IAM policy named it, with no use-case form needed.

Accomplishments that we're proud of

  • A complete loop: speak → score → write back to Bee, running in production.
  • An honest score: null when there's nothing to compare against, never a fake zero.
  • Two numbers that stay two numbers. What you remember and how you tell it are never mashed into one.
  • A phone check-in that survives Safari.
  • A data warehouse your voice never touches.

What we learned

The Bee CLI is a great way into your own memory: bee login, start the proxy, and the facts, todos, conversations and daily summaries are right there. What it isn't yet is a sign-in for a hosted app. There's no member OAuth and no app_id to register, so a production app has to hold a developer token and trust a private certificate.

Bedrock taught a narrower lesson: the right model is the one that answers. For a short brief and a capped reply, Nova Lite is the right size.

What's next for The Ordinary

The check-in is the first turn of a flywheel:

Raw data → Features → Causal analysis → Nudges & benefits

  • Forecasting. Amazon Chronos-2 for probabilistic forecasts of your rhythm, so we can see a good day coming (or a bad one).
  • Causal nudges. Experiments that test which nudges actually change behaviour, not just which ones correlate with it.
  • Shared-values partners. Brands that fund rewards for the behaviours that work for you, and get paid out only when members are measurably better off.
  • Community. Happiness spreads through social networks (BMJ, 2008), so one member doing well can lift the people around them.

The ordinary life, for extraordinary individuals.

Find you.

Built With

Share this project:

Updates

Submission history