Why a model's number is already old news, and where the current one has to come from

You asked for a rate, and the model answered with a specific number as if reading it off a current table. The number turned out to be months out of date, because nothing about the question told the model otherwise.

Why rewording won't fix this

A model's knowledge comes from training, which has a cutoff date like any photograph has a date it was taken. Once a rate changes or a price moves, the model has no way to know, and it answers in exactly the same confident tone whether the number is current or long since replaced. Wording the prompt more carefully doesn't reach backward and update what the model learned. The fix is putting a current number in front of the model at the moment it answers, not asking it to already know one.

Training stopped on a specific day

Every model has a point where its training stopped, and anything that changed after that point never entered it. That cutoff applies across the board, so a rate that updated last month comes back exactly as it stood before the update, with nothing flagging that it's stale.

A newer version of a model pushes the cutoff forward, but it's still a fixed date in the past by the time you're using it. There's always some gap between training and now, and this is one of the few things in this space that can't be prompted away even partly.

Retrieval has to happen at the moment of the question

The fix is mechanical: fetch the current number from wherever it actually lives, a rate table or an API, and hand that number to the model as part of the prompt. The model's job becomes writing around a fact you already know, not supplying one from memory.

The model never supplies the number. It only explains the one it was handed.

function quoteRate(product) {
  const currentRate = fetchCurrentRate(product);   // live lookup, not the model
  const prompt = buildPrompt({ product, currentRate });
  return callModel(prompt);                        // writes around a known fact
}

A browsing toggle only shrinks the gap

Some chat apps can fetch a live page when asked, which looks like it solves this, and it often helps. But it depends on the model deciding to browse at all and picking a trustworthy source once it does, neither of which is guaranteed on every run the way a direct lookup in your own code is. If the number matters enough to act on, treat anything a browsing feature returns as a claim to verify against the source, the same discipline the playbook on not inventing facts covers for a document you already have.

See also: Coverage term the document never actually said

Cache it, but put an expiry on the cache

Fetching the live number on every single call is often unnecessary and sometimes slow or rate-limited. Caching it for a while, however long makes sense for how fast that number actually changes, is fine. What matters is that the cache carries an expiry the code actually checks, rather than a number fetched once and quietly reused forever.

What stays manual

  • Deciding how fresh a number needs to be for what you're using it for.
  • Spot-checking the source itself now and then, even after retrieval is wired up.
  • Any number feeding into a contract or a quote a client will see: confirm it yourself before it goes out.