# Connect would not give a price

A price, an SLA or a warranty that Knowledge does not support is refused and escalated to a person rather than improvised. That is `safe_sales` working. The fix is not a setting — it is a grounded fact in Knowledge, after which Connect will quote it. Until then, a person answers the commercial question and Connect handles the rest of the thread.

- **Status:** Available
- **Audience:** both
- **In the app:** #/knowledge, #/needs-you
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/docs/troubleshooting/connect-refused-to-quote/

## What you are looking at

A customer asked what something costs, how quickly it will be done, or what is covered. The reply Connect produced answers everything else and hands the commercial part to a person, or the whole reply is waiting in Needs You with the question attached. On a call, the voice says it will have somebody confirm the figure rather than naming one.

This looks like a gap and is a rule. `safe_sales.py` exists precisely so that the one thing a business cannot afford — an invented price, an invented delivery date, an invented warranty — is not the thing an autonomous worker is free to improvise. A quote that turns out to be wrong is worse than a quote that arrives an hour later from a person.

## Why it happened, most likely first

1. **Knowledge holds nothing on it.** The commonest cause by a distance. Nobody has given the workspace a price list, a rate card or a service-level statement, so there is no grounded fact to quote from.
2. **Knowledge holds something adjacent but not this.** A price for one variant, a lead time for one region. Adjacent is not support: the rule refuses to interpolate, because interpolating a price is exactly the failure it guards against.
3. **Two sources disagree.** Where Knowledge contains conflicting figures, refusing and escalating is the only honest move; picking the newer or the larger would be a guess wearing a timestamp.
4. **The question is about JBRH's own pricing rather than yours.** That lives in `commercial.py` and is deliberately operator-only. A customer workspace does not quote JBRH's prices, and Connect will not either.
5. **The customer asked for a discount or a bespoke term.** No amount of Knowledge makes a negotiation a lookup. This escalates by design.

## What Connect completed

- It read the thread or heard the call, resolved the person, and drafted or spoke a reply covering every part of the question that was not commercial.
- It identified the commercial part specifically, rather than refusing the whole message.
- It raised the question for a person — on the pipeline this is what `raise_for_review` marks, and on a thread it appears in Needs You with the message it belongs to.
- It recorded the refusal, with its reason, in the decision record. A refusal is a decision and is audited like one.

## What Connect did not complete

- It did not send a figure, and it did not send a hedged one. There is no 'approximately' path.
- It did not add anything to Knowledge. A refusal never writes the missing fact — that would be the invention it refused, one step later.
- On a call it did not stay silent about the gap: the caller was told a person would confirm, which is a promise, so check that a follow-up was scheduled to keep it.

> **Note** On the realtime voice path this rule can only live in the instructions, so a breach is **detected rather than prevented**. `price_spoken` counts the lines the voice priced, using the same expression the carrier path checks each sentence with, so the two paths agree on what counts as a price. If that finding appears against a call, a figure was said aloud and needs checking against what you would have quoted.

## What you can do now

1. Answer the commercial question yourself, on the held reply rather than in a separate message.
   - Result: The customer gets one answer, and the thread keeps its history instead of splitting into two conversations.
2. Add the figure to Knowledge as a grounded fact — the rate, what it covers, the currency, and any condition attached to it.
   - Result: The next identical question is answered without you, and the answer cites the source it came from.
3. If the deal is on the pipeline, clear the review once the question is settled.
   - Result: The deal stops carrying an open commercial question, which is one of the things that blocks a clean close.
4. Check the call or thread for a promise that now needs keeping.
   - Result: "Somebody will confirm the price" is a commitment; a follow-up with that as its reason is what stops it being forgotten.

## What an administrator can do, and when to escalate

An administrator owns Knowledge, so the durable fix belongs to them: a current rate card in the workspace's sources, conflicts resolved rather than left for the rule to trip over, and regional or variant differences written as separate facts instead of one fact with a caveat.

Escalate beyond the workspace only in two cases. The first is a refusal on a figure that Knowledge plainly does contain and states unambiguously — that is worth reporting, with the thread and the source. The second is the opposite and more urgent: a figure that was quoted and should not have been, on the realtime voice path, where `price_spoken` is the finding to look for.

> **Careful** Do not try to route around the rule by writing the price into a standing instruction or a memory as though it were a behaviour preference. Knowledge is where a fact belongs; instructions and memory shape how Connect works, not what is true about your prices.

## Questions

### Can I turn the refusal off?

No, and there is no autonomy mode that grants it. Autonomy decides whether Connect may act without asking; it does not decide whether Connect may invent a commercial term. Supplying the fact is the only route to a quote.

### Connect quoted a price last week and refuses today. What changed?

Either the source it quoted from has been removed, edited or has expired, or today's question is a variant the source does not cover. Compare the two questions word for word before assuming the rule changed — 'installed' and 'delivered' are different products to a price list.

### Does this apply to dates as well as money?

Yes. Service levels, lead times and warranty terms are commercial commitments in the same sense a price is, and are refused on the same basis when nothing grounds them.

## Related

- [Price, SLA and warranty: what Connect may say](https://connectbyjbrh.com/docs/sales/safe-sales/)
- [Escalating a commercial decision](https://connectbyjbrh.com/docs/sales/commercial-escalation/)
- [Claims Knowledge does not support](https://connectbyjbrh.com/docs/knowledge/unsupported-claims/)
- [Connect said it does not know](https://connectbyjbrh.com/docs/troubleshooting/knowledge-insufficient/)
- [The reason on a follow-up](https://connectbyjbrh.com/docs/follow-ups/reason/)

## What this page is based on

- `docs-source/sources/CHANNELS.md` §6 — `safe_sales` and `price_spoken`
- `docs-source/sources/PHONE.md` §10 — promises made on a call
- Connect capability registry (docs-source/facts.py)
