Ask five people in your company what counts as an open deal. You will get answers that mostly agree and differ in exactly the ways that matter.
Does it include renewals? Does it include the deals sitting in a stage everyone knows is a holding pen? Does it include the record type that finance uses for internal transfers? Does it include the opportunity a rep opened last week with no amount on it?
Your team resolved this years ago, in a report filter, in a dashboard, or in the shared understanding of whoever runs the forecast. It was never written down anywhere an agent can read.
What the agent does instead
An agent asked for open deals will guess. The obvious guess is IsClosed = false.
That guess is wrong for an org that excludes renewals from pipeline. It’s wrong for an org that counts only certain record types. It’s wrong for an org where “open” has always implicitly meant “open and forecast-relevant.”
And the guess is invisible. The agent returns a number. The number is plausible. It appears in a summary, or a briefing, or a Slack answer, and it quietly disagrees with the number in the dashboard by an amount nobody investigates because nobody knows to.
This is worse than an error. An error gets fixed. A plausible number gets repeated.
Prompts don’t fix vocabulary
The reflex is to explain the definition in the prompt. “When the user asks about open deals, filter to Stage not in Closed Won, Closed Lost and RecordType = Standard.”
That works for one agent, in one prompt, until any of four things happen: the definition changes, a second agent is built, someone edits the prompt for an unrelated reason, or the person who wrote it leaves.
Definitions in prompts are copies. Copies drift, and drifted copies don’t announce themselves.
Write the word down once
The alternative is to define the business word itself, in one place, and let agents ask for it by name.
A named filter is exactly that — open, committed, at_risk — a set of conditions with two pieces of writing attached that matter as much as the predicate:
- A description — what the filter means, so a person reviewing it can tell whether it’s right: “Deals still in play — not yet closed either way.”
- An instruction — the pragmatics an agent needs: “excludes renewals; sales ops trues forecast categories up weekly, so mid-week this can lag.”
That second one deserves attention. It isn’t the definition, it’s the caveat — the thing an experienced person would say out loud when handing over the number. Agents need it for the same reason new hires do.
What changes in practice
The agent stops inventing predicates. It passes the word, and gets your meaning.
Because the definition lives in one place and is referenced rather than copied, editing the conditions updates every consumer on its next call. And because filters compose, open and at_risk together mean what you’d expect without anyone writing a third definition.
The deeper benefit is organizational rather than technical. Writing these down forces the conversation your team has been having implicitly for years, and ends it with an answer that is visible, reviewable, and shared.
Start with the three words your team argues about most.




