AnnouncementOctober 29, 20265 min read

Introducing Habits: decisions that get cheaper with use

A new System One primitive. Save a question once, ask it by name, and correct it when it's wrong. From its 101st decision, every answer costs half as much.

From the Habits team

Every agent, pipeline and inbox asks the same small questions over and over. Is this spam? Did the tool call fail? Which team owns this ticket? Does this email need a reply? System One models answer those questions quickly and in typed shapes your code can act on. Until today, though, the ten-thousandth time you asked a question cost exactly what the first one did, and it never got any better at your particular judgment.

The questions you ask most should be the cheapest ones to answer, and the best answered.

That's the idea behind Habits.

A question with a name

A habit is a System One question you save once, under your own name, like acme.email.archive. It has a type (noul, choice or score), a question and its possible answers. Then you ask it by name, next to any inline questions, in the request you already send:

{
  "state": "From: Robinhood <noreply@robinhood.com>  Subject: Discover what analysts are into",
  "questions": {
    "archive": { "type": "noul",   "habit": "acme.email.archive" },
    "kind":    { "type": "choice", "habit": "acme.email.kind" },
    "urgent":  { "type": "noul",   "instructions": "Does this need a reply today?" }
  }
}

Answers come back in the shapes you already parse, with the version that answered and what the answer cost:

{ "archive": { "noul": 0.96, "habit": "acme.email.archive@latest", "cost_usd": "0.0000062" } }

It learns your judgment, not your prompt

Some decisions are hard to put into words. You know which emails you'd archive, but writing that rule down precisely enough for a model takes weeks of prompt-tuning. A habit skips the description. It learns on its own from an intelligent model, and from you: point at any past answer and say what it should have been.

POST /v1/labels
{ "cases": [ { "request_id": "req_8f2c…", "question": "archive", "answer": false } ] }

We tested this on one person's archive-or-keep decisions, asking about 125 emails a habit had never seen. Three System One models answered on their own. The habit learned from that person's corrections:

Who answeredHuman inputAccuracy
d1none69.6%
Cloudflare clef-flashnone71.2%
Cloudflare clefnone76.8%
A habit50 corrections75.8%
A habit75 corrections77.6%
A habit97 corrections79.2%

Until a habit is confident, a System One model answers for it, so you start at the model's accuracy and only go up. With fewer than a hundred corrections, this habit was more accurate than every model we tried, because it had learned what that person actually does, including the parts they couldn't have written down.

Cost is built in

You never manage accuracy budgets, routing or models. A habit's first 100 decisions cost $0.04 per million input tokens, in line with other System One models. Every decision after that costs $0.02, however the habit arrives at its answer. You never pay full price for a miss.

$0.0124
per 1,000 decisions on a typical email, for a habit's first 100
$0.0062
per 1,000 decisions from the 101st on
$0.0130
TypeSafe jev on the same email, for comparison

Versions you can depend on

Every habit has @latest, which keeps learning as you use and correct it. You can reword it any time; it keeps your corrections. Once a habit has made its first 100 decisions, you can publish it: that freezes a numbered version, like @1, that never changes and never retrains. Anyone pinned to it gets the same answers tomorrow that they tested today.

Build a collection, or borrow one

Habits live in collections under your name: acme.email.archive, acme.email.kind, acme.support.route. Published versions can be asked by anyone, or forked and taught your own judgment.

To show what that looks like, we published a first public collection of email rules as three habits. habits.email.worth-replying asks whether a reply would make something good happen or prevent something bad. habits.email.ambiguous asks whether the ask is clear. habits.email.process spots recurring exchanges that belong in a process, not an inbox. Run on the last 100 messages of a real inbox, they found 99 that needed no reply, nine recurring exchanges worth turning into a process, and one worth answering once the sender said what they wanted. All 300 decisions cost less than a cent.

Get started

Accounts are opening now. Request access, create a habit in the console, correct a few answers, and watch it get better and cheaper.

Your most frequent decisions are about to become your cheapest.

Request access