Field Notes

Building flows with Watchflows AI now costs a lot less

The Flow Builder used to re-read the same 44,000 tokens on every turn, and you paid for it every time. Now it reads them once. Each turn after the first costs about 7% of what it did.

When you build a flow with the Flow Builder on Watchflows AI, you spend Sparks. Ask for a change, you spend a few more. Fair enough. The problem was what you were spending them on.

Before the Builder reads your message, it reads a long instruction sheet: every node in the app, how to wire them, how to answer. About 44,000 tokens. It is the same sheet every time. And until this week the model read it from scratch on every single turn, and you paid full price for it every single turn.

Now it reads the sheet once, and the next turns reuse that work. Nothing changed in how you use the Builder. It just costs less.

The numbers

We measured it on the real Builder, on Watchflows AI, three sessions of two turns each, same prompts every time.

beforeafter
First turn$0.092$0.113
Every turn after it$0.091$0.007
Six turns across three sessions$0.55$0.15
Fig. 1Grey is the old cost, green is the new. The first turn costs a little more because storing the sheet costs 1.25 times a normal read. Every turn after it, including the first turn of a new session, costs about 7% of before.

Two things worth knowing.

A turn that reuses the sheet costs about 7% of one that does not. The first turn is the only one that pays, and it pays about 25% more than before. From the second turn on you are ahead.

It survives quitting the app. The stored sheet lasts five minutes past your last turn, and every turn resets the clock. Come back within five minutes and the first turn of your new session is cheap too.

One of us spent $4.26 on 45 Builder turns the day before this went in. At the new rates the same day is about $1.20.

How it works

The sheet is still sent on every turn. What changes is the work. A model provider can remember the work of reading a prompt, and if the start of your next prompt is identical to the start of the last one, it picks up from there instead of reading it again. Anthropic calls it prompt caching. You pay a little extra the first time so the work is stored, then a tenth of the price on every reuse.

The Builder's instruction sheet never changes, so it is the perfect thing to store. Your message and your canvas change every turn, and those come after the sheet, so they are read fresh.

Over a day

Every turn resets the five-minute clock. An app update that changes the sheet, or switching the Builder to a different model, starts over the same way.

Who gets it

What we found getting there

Caching only works when the start of a prompt is identical, byte for byte, to the start of the last one. One character off and the provider reads the whole thing again at full price. It took four tries to get the numbers above. Each miss was something in our prompt that changed when we thought it did not.

  1. The provider decides where the reusable part ends, and by default it ran right through to your message. Your message is different every turn, so nothing ever matched. We now mark the end of the instruction sheet ourselves.
  2. The list of your other flows was written into the middle of the sheet. Create or rename a flow and the sheet changed, so the cache was thrown away. That list now comes after the sheet, with your message.
  3. Quit and reopen the app, and the first turn still paid full price. A byte-for-byte comparison of two launches found one example flow in the sheet whose wires came out in a different order each time. The order is fixed now.
  4. OpenRouter spreads requests across several servers, and the cache lives on the one that served you. The app now sends a session id so your turns land on the same server.

On Watchflows AI and OpenRouter, the cost you see in the app is now the provider's own figure, not our estimate. With your own Anthropic, OpenAI or Google key it is still our estimate, now priced with the cache discount applied. Either way, the run cost breakdown shows how many tokens were served from cache.

Fig. 2Settings, Cloud. Sparks are what the Builder spends. A turn that reuses the sheet spends about a fourteenth of one that does not.

Does it change what the Builder builds?

No. The model sees the same instructions in the same order, apart from your flow list moving to the end. The live Builder checks we run before every release ran on this build and passed. This is a cost change, not a behaviour change.