Docs

How points work

What a point is, when one is spent, what "held" means on the billing page, and what happens when the balance runs out.

A point is the unit of one generation call. You buy points, and stages spend them.

The exact figures — price per point, the trial allowance, the top-up tiers, points per stage — are on the pricing page, which is kept in step with the code by a test rather than by anyone’s memory. This page is about the mechanics.

Why calls, not tokens or seats

Cost per generation call turns out to be remarkably stable. Across real projects the variation in total cost comes almost entirely from how many calls a project needs, not from how expensive each call was. So counting calls gives you a number you can predict before you start.

Tokens would be a number nobody can forecast. Project-size tiers would be wrong by nearly a factor of two between two projects that look the same size.

Estimates before you run, not bills after

Every stage shows what it will cost before you start it, as an upper bound.

Estimates marked with an asterisk are computed from the top of the scope band — the upstream artifacts do not exist yet, so the only honest assumption is the maximum. They tighten as upstream lands, usually to well below the first figure.

“Held” is not “spent”

While a job runs, the billing page shows some of your balance as held.

Held points are reserved by the running job for its worst case — every retry used. They are not money already taken. When the job finishes it settles on actual usage and the remainder returns immediately, so the real charge is usually well below what was held.

This is also what makes two projects running at once safe: reservation happens on the account row transactionally, so two jobs cannot both spend the same points.

When you are not charged

  • A call that failed on our side — a 5xx, a timeout, an output that hit the length limit — is not charged. That is our configuration problem, not your cost.
  • A stage that escalated without producing anything is not charged. Some stages write nothing until they converge; if that stage gives up, there is nothing to pay for.
  • A stage that escalated after writing some artifacts is charged for what landed. Partial delivery is real delivery.
  • A cancelled run: calls already completed are charged, in-flight calls are cut immediately rather than waited out, and the aborted portion is not billed.

Revisions are half price

Regenerating a dirty artifact costs half. This is not a discount, it reflects real cost — regeneration touches only dirty nodes and hits cache more often — but the reason it is worth stating is different: iterating is the point of this tool. Human-in-the-loop revision with dirty propagation is the part that is actually worth paying for, and a price that makes you flinch would destroy it.

Points do not expire, and price changes do not touch them

A point is a prepaid quantity, not a prepaid amount of money. If the price per point changes, that only affects what new points cost. Points you already bought are worth exactly what they were worth.

Every ledger entry stores the unit price at the time it was written, so a price change never reprices your history either — a bill from three months ago still reads at the price it was charged at.

Running out

Generation stops. Nothing else does.

You can still browse everything, edit it, diff it, approve it, and export the whole project as a git repository with its full history. A negative balance is a reason to stop spending our money on model calls; it is not a reason to hold your work hostage.

You will be told plainly that the balance is short, with the number you need and a way to top up — not a silent failure.