# Daily intent triage queue your SDRs work every morning

> See which target accounts actually visited your site this week, ranked so one repeat visitor cannot top the list, and work every row to a decision.

- Workflow type: app
- Services: Factors.ai, HubSpot, Slack
- Categories: Sales
- Published: 2026-08-21

## What it does

- Pulls your target account list straight from your CRM, then checks each company's website activity over the last seven days and shows sessions, how many different people visited, when they were last seen, and which pages they hit.
- Ranks accounts by how recently several different people visited, so one person refreshing the pricing page all week cannot jump ahead of a real buying committee.
- Gives every row three decisions: work it and file a task for the account owner, snooze it for two weeks, or drop it as not a fit. Each choice saves onto the company record, so the queue lives in your CRM and not in a side spreadsheet.
- Adds a research button that has an assistant re-read the visit history, look the company up online, and write a short brief on why they are warm and what to open with, posted to the company record and shown right in the app.

## What you'll need

- A Factors.ai account with website visitor tracking already collecting activity
- A HubSpot login that can read companies and owners and create tasks and notes
- A company field in HubSpot that marks your target accounts, plus one field to hold each account's queue decision
- A Slack workspace, if you want reps to share briefs with the team

## Prompt

Build me a daily signal triage queue that my SDRs open each morning instead of chasing intent alerts in Slack. It should be a worked surface with per-row state, not a dashboard and not a digest: every account in it ends the morning with a decision recorded in the CRM.

The main view is a ranked list of target accounts. Build the account list from HubSpot using Search Companies, filtered to a target-account property (let me pick which company property and value marks a target account in setup). Add an optional toggle for 'only my accounts' that uses HubSpot List Owners to match the logged-in rep's email to their HubSpot owner record, then filters the company search by hubspot_owner_id. Also exclude any account whose queue-state property says it is snoozed with a future snooze-until date, or marked not a fit.

For each company in that CRM-sourced list, take the company domain and call the Factors.ai Get Account Journey operation for that one domain over the last 7 days. Factors is strictly one domain at a time and has no list-all-accounts endpoint and no pagination, so the app must fan journey lookups out over the domain list that came from HubSpot rather than expecting a feed of all visitors. Run those lookups concurrently with a sensible cap, cache the results for the session so re-ranking does not re-fetch, skip companies with a missing or obviously invalid domain, and treat a 404 from Factors as 'no activity in the window' rather than an error. Show a small progress indicator while the fan-out runs so a rep with a few hundred target accounts sees the list fill in rather than staring at a blank screen.

Each row shows: company name and domain, the account owner from HubSpot, session count in the window, number of distinct visitors, the last-seen date as a relative label like '2 days ago', and the pages that were hit, with the most notable ones surfaced first and the rest collapsed behind a count. Clicking a row opens the full journey timeline for that account, grouped by person rather than as one flat event stream, so the rep can see that three different people looked at pricing instead of one person looking at it three times. Show each person's visits in time order with page and timestamp, and show their Factors user properties where present.

Rank the queue by a recency-weighted score computed across distinct visitors, not raw pageview counts. Each distinct visitor contributes based on how recently they were last seen, with recent activity worth far more than activity at the start of the window, and the account score is the sum across visitors with diminishing returns on repeat sessions from the same person. The rule to bake in is that one noisy repeat visitor must never top the queue over an account where several different people showed up. Show the score as a simple visual rank indicator, and let the rep hover or expand to see the plain-language reason such as 'four people, most recent yesterday'.

Every row carries three dispositions. 'Work it' creates a HubSpot task with Create Task, assigned to that account's owner, associated to the company, with a due date of today and a subject and body that summarize the signal, for example the visitor count, last-seen date, and top pages. 'Snooze' hides the account from the queue for 14 days. 'Not a fit' drops it out of the queue for good. All three save back to a HubSpot company property using Update Company, so the queue state lives in the CRM rather than a side database: write the disposition value, the timestamp, the rep who made the call, and the snooze-until date where relevant. After a write, refresh that single company with Get Company so the row reflects what is actually stored, and let the rep undo a disposition immediately after acting in case of a misclick.

Add a 'Research this account' button on each row and on the detail view that kicks off a background agent. The agent re-reads that account's Factors.ai journey with Get Account Journey, researches the company on the web for recent news, positioning, funding, and hiring signals, then writes a short brief titled 'why they are warm and what to open with' that ties the specific pages those specific people visited to a concrete opening line. The agent posts the brief onto the company record with HubSpot Create Note, and the app renders it inline under the row so the rep reads it in place without opening HubSpot. Show a clear running state while the agent works, and keep previously generated briefs visible so a rep can re-read yesterday's without regenerating.

Next to the brief, add a 'Share' button that sends the same brief to a Slack channel using Send a Message, formatted with the company name, the signal summary, and the suggested opener, with the rep able to pick the channel and add a line of their own before it goes.

Design notes: this is a morning queue, so default the sort to the recency-weighted score descending and make the three disposition buttons the most obvious thing on every row. Keep the empty state honest, saying no target accounts showed activity in the last 7 days rather than showing a fake list. Show a small header count of accounts left to triage today so a rep knows when they are done.

## How to customize

- Change the activity window from seven days to whatever matches your sales cycle, and change how long a snooze lasts.
- Filter the queue to one rep's own accounts, a single segment, or the entire target list.
- Decide which pages count as high intent, such as pricing or demo pages, and weight them more heavily in the ranking.
- Point the share button at whichever channel your team already watches.

## FAQ

### Do I need to tag my target accounts in HubSpot first?

Yes. The queue is built from a company field that marks an account as a target, so create a simple checkbox or dropdown field on companies and set it on the accounts you care about. You will also want one more company field to store the queue decision, which the app writes for you.

### Why does the ranking ignore raw pageview counts?

Because pageviews are the easiest number to fake by accident. A single curious person hitting your site twenty times looks identical to a real evaluation if you only count views. The queue instead rewards accounts where several different people visited and where the activity is recent, which is a much better sign that a buying committee is forming.

### Does any of this live outside my CRM?

No. Every decision a rep makes is written back onto the company record in HubSpot, and every research brief is posted as a note on that company. If you stop using the app tomorrow, the history is still sitting in your CRM where your team already works.

### Can each rep see only their own accounts?

Yes. The queue can match the logged-in rep to their CRM user record and filter down to accounts they own, so nobody has to scroll past someone else's book of business. You can also leave it unfiltered when a team works the list together.

### What happens to accounts with no recent activity?

They score at the bottom and can be hidden entirely, so the queue only shows accounts with something new to react to. A snoozed account disappears for two weeks and then comes back into the list if it is active again.

Use this prompt in General Input: https://www.generalinput.com/prompts/daily-intent-triage-queue-your-sdrs-work-every-morning