# Discovery returned nothing

An empty result almost always means one of four things: the brief describes a category rather than a business, the location scope excludes the candidates, everything found resolved to organisations you already know, or paid research was refused by the budget. The decision trail distinguishes them in about a minute.

- **Status:** Available
- **Audience:** both
- **In the app:** #/prospects, #/activity, #/billing
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/docs/troubleshooting/no-prospects-found/

## What you are looking at

The run completed. The counts above the list did not move, or moved by a handful. No error is shown, because from Connect's point of view nothing went wrong — a run that finds nothing and a run that finds two hundred organisations take the same path and end the same way.

That is why the useful evidence is not on the prospects screen. It is in the activity trail, where the run recorded what it did and what it refused, and in Plan & Usage, where a budget refusal is visible.

## The four causes, most likely first

| Cause | How it looks | What to change |
|---|---|---|
| The brief describes a category | Candidates collected, almost none qualified | Name the constraint that actually decides — what the business does, not what industry it is in |
| The location scope is wrong or too tight | Very few candidates collected at all | Widen the scope, or check that the place resolves to where you think it does |
| Everything resolved to existing relationships | Candidates collected, prospects not created, matches recorded | Nothing is broken. You already know this market; the brief is describing your own customers |
| Paid research was refused | The run stops partway, with a refusal recorded | Check the AI budget in Plan & Usage; research resumes rather than restarting |

A fifth possibility exists and is rarer than people assume: the sources genuinely have nothing to say about businesses of this description in this place. It is worth considering only after the first four have been ruled out, because three of those four look identical from the list itself.

## What Connect completed

- The run executed and is recorded, with its brief and its scope.
- Candidates that were collected were recorded before research, so the activity trail shows how far it got.
- Identity resolution ran, and every match it made is recorded as a decision with a reason.
- Any spend that occurred is booked to the ledger — an empty result is not necessarily a free one.

## What Connect did not complete

- No prospect records were created beyond those you can see.
- No message was sent to anybody, on any channel; discovery does not send.
- Where the budget refused, research on the remaining candidates did not run and those candidates were not scored.
- No address was generated to make an unreachable organisation look contactable — this remains true on every path, including a disappointing one.

## What to do, and who does it

1. Open the activity trail for the run and read what it recorded.
   - Result: Candidates collected against prospects created separates cause three from causes one and two immediately.
2. If candidates were collected but nothing qualified, rewrite the brief with the deciding constraint in it.
   - Result: A brief that would match half a directory produces candidates that fail scoring, which is the correct behaviour and a poor experience.
3. If almost no candidates were collected, check the location scope first.
   - Result: Scope is the cheapest filter and therefore the one that most often removes everything by accident.
4. If the trail shows a refusal, look at Plan & Usage.
   - Result: An administrator can raise the AI budget or wait for the period to reset; a customer workspace's ceiling is its plan's.

An administrator additionally has the option of checking whether the workspace's relationships already cover the market being described. When cause three is the answer, the productive next move is usually not another discovery run at all.

> **Note** Escalate when the trail shows candidates collected, no matches, no refusal and no prospects created. That combination is not one of the four causes and is worth reporting with the run's time and the brief you used.

## Questions

### Does an empty run cost anything?

It can. Collecting candidates and reading sources is where most of the spend happens, and that occurs before scoring decides nothing qualifies. A run that collected nothing at all costs close to nothing.

### Should I just widen the brief until something appears?

Widening produces candidates that fail scoring, which costs research and still returns little. Changing the deciding constraint works better than removing constraints, because scoring is comparing against what you wrote.

### Could my own customers really be the whole market?

In a specialised business, often. Discovery describes an ideal customer, which is a description your existing customers satisfy by definition, so identity resolution removing most of a run is a meaningful answer rather than a fault.

## Related

- [Describing who you want to reach](https://connectbyjbrh.com/docs/prospects/discovery-criteria/)
- [Location and scope](https://connectbyjbrh.com/docs/prospects/location-scope/)
- [Discovering prospects, end to end](https://connectbyjbrh.com/docs/workflows/prospect-discovery/)
- [Resolving a prospect to an existing relationship](https://connectbyjbrh.com/docs/prospects/prospect-identity/)
- [What prospecting costs](https://connectbyjbrh.com/docs/prospects/prospect-costs/)
- [Troubleshooting](https://connectbyjbrh.com/docs/troubleshooting/)

## What this page is based on

- `docs-source/sources/CHANNELS.md` §4 — discovery, resolution and cost routing
- `docs-source/sources/GENERAL.md` §4 and §5 — metering and the audit trail
- `backend/app/prospecting.py`, `backend/app/prospect_identity_resolution.py`
- Connect capability registry (`docs-source/facts.py`)
