<!-- Markdown rendering of https://salesascode.com/docs/library/intent. The HTML page is canonical. -->

# Intent Queue · Docs · Sales as Code

[← All feature docs](https://salesascode.com/docs/library)

Feature docs · /intent

# Intent Queue

The ranked hot queue of accounts and contacts showing buying intent, with a safe-to-reach check on every row.

[Open Intent Queue →](https://salesascode.com/intent) [All docs](https://salesascode.com/docs/library)

## Overview

[Intent Queue](https://salesascode.com/intent) answers one question: who should I reach out to next, and is now actually a safe time. It reads the intent scores computed by the scheduled intent refresh (the same signal pipeline that feeds the dashboard's next-best recommendation), ranks every account and contact highest score first, and checks each one against the same outreach governance that governs every other send in the product. No separate inbox to keep in sync, this is the fuller, governed view of the same list.

The top few of these rows also reach the line on [Home](https://salesascode.com/home), ranked there against everything else in your line. Both read the same rows through the same reader, so the two cannot disagree about whether a contact is safe to reach. This page is the one that shows the drivers behind each score and whether the feed itself is live.

Because Home already carries the rows, this page sits under [Activity](https://salesascode.com/rollup) in the top nav rather than beside it, in the tab strip with Why this score and Benchmarks. An intent row on your line links straight here, and the URL is unchanged.

## How the score works

Every row's score (0 to 100) is built from weighted intent signals, page views, content engagement, pricing-page visits, and similar activity, each decayed by recency so a signal from this morning counts more than one from three weeks ago. The weights are not fixed: they learn per rep from which scored leads actually turned into real pipeline, so two reps working the same account list can see different rankings over time. The top 2 to 3 drivers behind a score are shown on each row (signal type and how many times it fired) so the number is never a black box.

## The sendability badge

Each row carries one of three states:

- **Safe to reach**, the contact clears the same outreach governance ledger (send caps, cooldowns, reply-aware pacing) used everywhere else in the product. Nothing new to learn, it is the one set of rules.
- **Hold, with a reason**, governance is blocking a touch right now, for example a 30-day contact cap. The reason string tells you exactly why so you know when it will clear.
- **Account-level, pick a contact**, the signal is tied to a domain or account, not a specific person yet. There is nothing to govern until a rep picks who to reach out to.

## No fabrication

The queue never invents a score or a driver. An account with no scored activity yet simply does not appear, and an empty queue reads "No intent signals scored yet." rather than showing placeholder rows.

An empty queue and a failed read are kept apart. If the queue cannot be loaded, the page says it could not load and gives the reason, rather than showing the same empty state a quiet week produces. The difference matters: an empty queue is a fact about your accounts and invites nothing, while a failed read invites a retry.

## When the queue is empty

An empty queue is not one situation, so the page tells you which one it is rather than leaving you to guess.

- **Nothing connected yet.** No source can produce a signal. Connect your CRM, inbox or calendar and the queue fills on the next pass.
- **A dry feed.** Sources are connected but no signal has reached the scorer in the last two weeks. That is something to fix, not something to wait out, and the page says so with a highlighted note.
- **A quiet window.** Signals arrived and scored, but none reached the bar you would act on. Nothing is wrong and nothing needs doing.

Only the first two are highlighted. A quiet week is a normal outcome, and a page that flags it as a warning teaches you to ignore its warnings.

The verdict is judged on signals *arriving*, not on what scored, and that distinction matters more than it sounds. A signal's weight halves every three weeks rather than vanishing, so a queue can go on showing high-scoring rows for a long time after the feed behind it has died. Reading health off the scores would call that healthy. When it happens you are told the feed is dry and that the rows still showing are stale and decaying.

When one kind of signal is missing the page names the likely cause: engagement signals (replies, meetings, site activity) point at a mailbox or calendar connection, trigger signals (job changes, third-party intent) at an enrichment provider, and both missing at the ingestion path itself.

## Related

- [Activity](https://salesascode.com/docs/library/rollup), your run history, including the intent refresh runs that populate this queue.
- [Agent activity & receipts](https://salesascode.com/docs/library/receipts), the per-account chain of touches that outreach governance draws on.

---

More for agents: [llms.txt](https://salesascode.com/llms.txt), [full reference](https://salesascode.com/llms-full.txt), [OpenAPI](https://salesascode.com/openapi.json), [sitemap](https://salesascode.com/sitemap.xml).
