# Sales in Connect

Connect keeps a pipeline of opportunities against real people and companies, moves them under stage rules, schedules the follow-ups a deal needs and records what closed and why. What it does not do is invent commercial terms: a price, an SLA or a warranty that Knowledge does not support is refused and put in front of a person.

- **Status:** Available
- **Audience:** both
- **In the app:** #/pipeline, #/relationships, #/needs-you
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/docs/sales/

## What the section covers

Everything here runs on `sales.py` and its API, with `safe_sales.py` holding the boundary. The pipeline screen is `#/pipeline`; the same records appear on the deals sheet in `#/data` and against each person in their relationship view.

| Page | What it answers |
|---|---|
| [Opportunities](/docs/sales/opportunities/) | The record itself, every field, and what each is used for |
| [The pipeline](/docs/sales/pipeline/) | The stages, the board, and what moving a card actually does |
| [Stage rules](/docs/sales/stage-rules/) | What restricts a move and what a refusal looks like |
| [Next best action](/docs/sales/next-best-action/) | How one is chosen and what evidence sits behind it |
| [Price and terms](/docs/sales/safe-sales/) | What Connect may say commercially, and what it refuses |
| [Commercial escalation](/docs/sales/commercial-escalation/) | What lands in Needs You and what happens after a person decides |
| [Quotes and documents](/docs/sales/quotes-and-documents/) | What can be produced, from what, and where versions live |
| [Deal relationships](/docs/sales/deal-relationships/) | How a deal links to people and companies, and what a merge does |
| [Follow-ups on a deal](/docs/sales/sales-follow-ups/) | Triggers, channel choice and the duplicate rule |
| [Closing a deal](/docs/sales/won-and-lost/) | What each outcome records and changes downstream |
| [Owner and customer](/docs/sales/sales-owner-tenant/) | The identical pipeline, and the two operator-only screens |

## Three things to know before reading further

**Money is stored in minor units** — `money(value_minor, currency)` is the shape of every value. A deal worth twelve and a half thousand is stored as 1250000 with its currency, so nothing depends on a decimal point surviving a round trip.
**A refused move is a normal outcome** — `move` checks stage rules and can decline. A decline is information about the deal — something the next stage needs is absent — not an error to be worked around.
**Commercial invention is refused, not improvised** — This is the rule `safe_sales.py` exists to hold, and it is the one behaviour in this section that people most often mistake for a limitation.

## Where an opportunity comes from

Opportunities are not a separate world from the conversations that produced them. An opportunity is usually opened from an exchange that already exists — a call where somebody asked what something costs, an enquiry that named a quantity, a prospect who replied. The end-to-end path is written up in [creating an opportunity](/docs/workflows/create-opportunity/).

- From a conversation, by a person or by the Assistant's `create_opportunity`.
- From a call, where the outcome recorded a commercial intent.
- From prospecting, when a researched organisation replies and is taken on.
- By hand on `#/pipeline`, which is the right route when the signal arrived somewhere Connect cannot see.

Demos have their own small vocabulary alongside the opportunity — requesting, scheduling, completing and cancelling one — because a demo is a commitment with a time attached, and an intention with no date is not.

## What sits next to sales

Three neighbouring sections carry most of the questions that start here. [Follow-ups](/docs/follow-ups/) owns the dated commitments a deal creates. [What Connect may do](/docs/autonomy/) owns whether a reply on a reply on one goes out by itself. [Relationships](/docs/relationships/) owns the person and company an opportunity is attached to, and a merge over there changes what it points at over here.

## Everything in this section

11 pages, each with its own status and the date it was last checked against the running system.

| Page | What it covers |
|---|---|
| [Closing a deal: won and lost](/docs/sales/won-and-lost/) | What each closing outcome records, what it starts or stops downstream, and what to do with the commitments the deal made before it closed. |
| [Escalating a commercial decision](/docs/sales/commercial-escalation/) | What a refused commercial question looks like in Needs You, what the person deciding actually sees, and what happens to the customer afterwards. |
| [Follow-ups on a deal](/docs/sales/sales-follow-ups/) | What raises a chase on an opportunity, how the channel is chosen, and the duplicate rule that stops one customer being pursued twice for the same thing. |
| [How a deal connects to people and companies](/docs/sales/deal-relationships/) | The links between an opportunity, its person and its organisation — what each one is for, and exactly what a merge does to them. |
| [Opportunities: the deal record](/docs/sales/opportunities/) | What an opportunity holds — value in minor units, stage, the people it belongs to, the review flag — and what each field is actually used for. |
| [Price, SLA and warranty: what Connect may say](/docs/sales/safe-sales/) | Connect does not invent commercial terms. What counts as grounded, what is refused and escalated instead, and how a breach is caught on a live call. |
| [Quotes and sales documents](/docs/sales/quotes-and-documents/) | A quote in Connect is a file, not a special object: what can be assembled, which terms it may contain, and where its versions and provenance live. |
| [Sales for the Owner and for a customer](/docs/sales/sales-owner-tenant/) | The pipeline is one implementation serving both audiences. What a plan bounds, and why two commercial screens are correctly operator-only. |
| [Stage rules and refusals](/docs/sales/stage-rules/) | Why a deal will not move: the four shapes a stage restriction takes, what a refusal tells you, and why declining is a correct answer. |
| [The next best action on a deal](/docs/sales/next-best-action/) | How Connect picks the next thing to do on a deal, the records that evidence it, and what to change when the suggestion is wrong. |
| [The pipeline board](/docs/sales/pipeline/) | What the board shows, what dragging a card actually calls, and why a total on a board must be counted in the database rather than in the page. |

## Questions

### Can Connect close a deal on its own?

It can move one where the stage rules allow it and record an outcome a person confirms. What it cannot do is agree the terms that make it closeable — that decision reaches a person by design.

### Is the pipeline different for a customer workspace?

No. The same implementation serves both audiences; a customer's plan bounds volume rather than capability. Two commercial screens are operator-only because they are about running the platform, not selling with it.

### Where do I see every opportunity at once?

`#/pipeline` for the board, and the deals sheet in `#/data` for a grid you can sort, filter, group and export. Both read the same records through the service that owns them.

## Related

- [Opportunities: the deal record](https://connectbyjbrh.com/docs/sales/opportunities/)
- [The pipeline board](https://connectbyjbrh.com/docs/sales/pipeline/)
- [Price, SLA and warranty: what Connect may say](https://connectbyjbrh.com/docs/sales/safe-sales/)
- [Creating an opportunity, end to end](https://connectbyjbrh.com/docs/workflows/create-opportunity/)
- [Relationships in Connect](https://connectbyjbrh.com/docs/relationships/)
- [Follow-ups in Connect](https://connectbyjbrh.com/docs/follow-ups/)

## What this page is based on

- docs-source/sources/CHANNELS.md §6 — sales, money and safe_sales
- docs-source/sources/GENERAL.md §1 and §9 — two audiences and the data grid
- Connect capability registry (docs-source/facts.py)
