# The numbers above the list

Six numbers sit above the prospect list: organisations discovered, contacts, contactable, qualified, already contacted, and ready to send. Each answers a different question and they are not meant to add up. All six were once derived from the newest five hundred rows, which made them agree with each other and disagree with the database.

- **Status:** Available
- **Audience:** both
- **In the app:** #/prospects
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/docs/prospects/prospect-counts/

## What each number means

| Number | Counts | Does not count |
|---|---|---|
| Organisations | Distinct organisations discovered or imported | The people at them |
| Contacts | People attached to those organisations | Organisations with nobody named yet |
| Contactable | Prospects with at least one address that came from a source or from you | Prospects whose address would have to be guessed — there are none |
| Qualified | Prospects that passed scoring against your brief | Prospects still being researched |
| Already contacted | Prospects that have received at least one outbound message | Replies, which are counted on the conversation |
| Ready to send | Qualified, contactable, compliant, and not yet written to | Anything held by suppression, readiness or allowance |

A researched prospect with no address is counted under organisations and may be counted as qualified, and is deliberately absent from contactable and from ready to send. That gap between qualified and ready is not a fault to be closed; it is the visible price of not inventing addresses, and it is worth looking at, because it is a list of businesses worth reaching by some other means.

## The defect: counts that stopped at the page size

`prospect_summary` read the newest five hundred contacts and the newest five hundred discovered organisations, then derived every headline number from those two slices. The limit was a paging default that had leaked into an aggregate. Nothing about the screen suggested a limit, because the numbers were not labelled as a sample and there was nothing to compare them against.

**What was measured.** A workspace was driven with 540 contacts, of which the 40 already contacted were the oldest rows. Both the reported figures and the database's own answers were recorded for the same instant.

| Number | Reported | Actual |
|---|---|---|
| Organisations | 500 | 530 |
| Already contacted | 0 | 40 |

The two failures are different, and only the first is obvious. A count that saturates at a round number looks suspicious to a careful reader. A count that reads zero because every qualifying row fell outside the newest five hundred looks like a true and rather encouraging fact — a fresh list nobody has touched — and it is the one that would have been acted on.

> **Careful** **The limit of that measurement.** It establishes that the counts were wrong and by how much on one shaped workspace. It does not establish the error for any other shape, and it cannot: the size of the error depends entirely on how many rows a workspace has and how the affected ones are distributed in time. Any workspace under five hundred of both saw correct numbers throughout, which is why this survived.

## How they are counted now

- Organisations are counted by the database. Counting is what a database is for, and no page size is involved.
- Contacts are walked in batches, so memory does not grow with the list, and each batch's research is fetched in one query rather than per row — the same fix pattern used against the query-cost defects elsewhere in Connect.
- The derived numbers — contactable, qualified, already contacted, ready to send — are computed over every row rather than over a slice.

The general lesson generalises past prospecting: an aggregate must never inherit a listing's page size. Anywhere a count and a list share a query, the count is the one that will be silently wrong, and it will be wrong in the reassuring direction.

## Checking a number you do not believe

1. Open the prospects sheet in the Data grid and filter for the same condition.
   - Result: The grid reads the records through the owning service, so its count and the headline are two routes to one answer. Disagreement is real and worth reporting.
2. Compare 'already contacted' with the activity trail for the period.
   - Result: Outbound messages are recorded there independently of the prospect record.
3. Check whether the gap you are looking at is qualified-minus-contactable.
   - Result: That difference is the no-address population, and it is expected rather than missing data.

## Questions

### Why do the numbers not add up to each other?

They are overlapping answers to different questions, not slices of one pie. A single prospect can be counted under organisations, qualified, contactable and already contacted at the same time, and a prospect with no address is counted under two of those and not the other two.

### My workspace shows exactly 500 of something. Is this the old defect?

Not by itself — five hundred is a possible real number. The check that settles it is whether a second route to the same figure, such as the Data grid, agrees. The defect's signature was several unrelated counts all landing on the same round number at once.

### Does 'already contacted' include replies?

No. It counts prospects Connect or a person has written to at least once. What came back is on the conversation and on the relationship timeline, because a reply belongs to the exchange rather than to the prospect record.

## Related

- [Prospecting in Connect](https://connectbyjbrh.com/docs/prospects/)
- [Contactability](https://connectbyjbrh.com/docs/prospects/contactability/)
- [Connect does not guess email addresses](https://connectbyjbrh.com/docs/prospects/no-guessed-email/)
- [Headline numbers that stop at the page size](https://connectbyjbrh.com/research/counting-past-the-limit/)
- [What prospecting costs](https://connectbyjbrh.com/docs/prospects/prospect-costs/)
- [Files and data in Connect](https://connectbyjbrh.com/docs/files-data/)

## What this page is based on

- `docs-source/sources/CHANNELS.md` §4 — the `prospect_summary` counting defect
- `docs-source/sources/GENERAL.md` §11 — measured facts
- `MEASURED` in `docs-source/facts.py`
- Connect capability registry (`docs-source/facts.py`)
