Account scoring for a weekly queue needs two inputs: how well an account fits, and whether something has just changed at it. This guide shows revenue operations teams how to produce that ranking by joining fit to company-level intent data, how to put a reason a rep can read beside every account, and how to test whether the ranking earns its place.
The scores describe companies, so the ranking tells a rep which account to open and why, and your CRM or a contact-data provider supplies the name to approach.
What a Fokals intent score is built from
Intent Scores holds a score for one company, one topic and one closed week. It is computed from the dated signals of the 90 days to the week's end: a tool added to the company's website, a role opened on its job board, a filing, an announcement. Each signal's weight fades by half every 30 days, and the faded weights are summed and mapped to a scale of 0 to 100 that rises quickly with the first strong signals and flattens as evidence accumulates. A row is written for every topic that scores 5 or more.
Every input is something the company did in public, and every score carries the dated signals behind it. The scores are evidence-backed: a rep, an analyst or a model reviewer can open the signals and judge them.
Reading a row
Each row of Intent Scores carries the fields below.
| Field | Meaning |
|---|---|
topic, topic_label, topic_group | One of 69 topics, with its label and its group |
score | 0 to 100, from the signals of the 90 days to the week's end |
surge | True when the score is at least 50 and at least double the company's own average for the topic over the previous twelve weeks, or when it is a first strong week |
signals | The number of signals behind the score |
evidence | The five strongest signals, each with date, kind, source, weight and detail |
intent_version | intent-v2, frozen by name |
The surge flag marks an intent surge, a change from the company's own normal, which is not the same thing as a high score.
An illustrative row for Acme Robotics, an invented company, for the week starting 21 September 2026: topic is crm, score is 64, signals is 4, and surge is true because this is a first strong week for the topic. The evidence reads as follows.
| Date | Kind | Source | Weight | Detail |
|---|---|---|---|---|
| 2026-09-26 | posting_tool | careers | 2 | A role whose title names a CRM tool |
| 2026-09-24 | tech_added | site | 2 | A CRM tool added to the website |
| 2026-09-23 | dns_verification_added | dns | 2 | A new domain verification with a software vendor |
| 2026-09-22 | posting_selects_tools | careers | 1.5 | A role that selects tools |
The evidence is the reason a rep reads. Four signals from three sources in five days are a different case from one strong signal on its own, and the row shows which you have.
Choose topics before you rank
Each company carries a score for each topic, so the first decision is which topics answer to your product. List the topic_label values, pick the few that describe what a customer was doing when they bought from you, and rank each one separately. A product with a clear trigger, such as the adoption of a CRM, needs one topic. A broader product needs three or four, shown side by side, so that a rep reads "CRM, 64, surge" and not an average of unrelated things.
Your own won deals say which topics to pick. Company Signals holds every signal with its source, kind, topics and weight, and each is dated, so you can count the kinds of signal that sat in the 90 days before each opportunity opened. Start with the topics that match your product by definition and refine them against your own won deals.
Combine intent with fit
Intent says when and fit says whether, so rank on fit first. A surge at a company you cannot serve is not an opportunity.
Fit is yours to define from your closed-won accounts. The inputs can come from your CRM or from Fokals: the stated headcount in Employee Headcount, the technologies in Technology Stack (a complement present, a competitor absent) and the industry label of the website. Reduce them to three tiers, strong, possible and weak, and keep the tiers fixed between weeks so that the ranking moves only when the intent does.
| Surge, or a score of 50 and above | Score from 5 to 49 | No row | |
|---|---|---|---|
| Strong fit | Work this week | Watch, with a trigger rule | Keep in the plan |
| Possible fit | Check the fit, then work | Leave | Leave |
| Weak fit | Leave | Leave | Leave |
-- fit_tier: 1 strong, 2 possible, 3 weak
select a.account_id, a.fit_tier,
s.score, s.surge, s.signals, s.evidence
from accounts a
left join company_intent_weekly s
on s.company_id = a.company_id
and s.topic = 'crm'
and s.week_start = (select max(week_start) from company_intent_weekly)
order by a.fit_tier, s.surge desc nulls last, s.score desc nulls last;Two details decide whether this works. The first is the left join. An account matched to a company ID with no row scored below 5 for the topic, so treat it as zero. An account you have not yet matched to a company ID stays in your list with the label unmatched until you resolve it by website. The second is to rank by band and not by decimals, because the scale flattens as evidence accumulates and a few points near the top say little.
Use the evidence as the reason
Show the evidence in the rep's queue, as delivered, with its dates. It explains why the account is on the list this week and lets the rep judge the signal in half a minute. Add one gate of your own: let an account into the top band only when its evidence holds signals from at least two different source values among site, dns, careers, filing and news. A second source is a cheap check that something is happening. Treat the rule as a starting point and move it on the evidence of your own results.
For signals beyond the five strongest, Company Signals has every one with its observed_at, kind, topics and weight.
A weekly cadence
- Rank once a week. Scores are written once, after the Monday to Sunday UTC week closes, and are never revised. Run the ranking after the rows land and store each result with its
week_start, so last week's ranking is still there to compare. - Read falls as fading. A signal loses half its weight in 30 days, so an account that slips down the list has had no new signals. Alert when an account enters the top band, not when one leaves it.
- Use the days between. Signals arrive daily. Read new Company Signals rows for top-band accounts and add them to the queue as new evidence without re-ranking, because the scores of the week stand until the next week is written.
- Keep the version. Store
intent_versionwith every ranking. A breaking change to topics, weights or the scoring formula is released as a new version with at least 90 days' notice, and a ranking keeps one version so it compares from week to week.
Test whether the ranking works
Set the test before the quarter starts. Each week, hold out a random quarter of your strong-fit accounts and work them in your usual order, and work the rest in the order of the ranking. For each group, measure the share that reach a first meeting within 28 days and the share that open an opportunity within 60. Run it for eight weeks, leave the thresholds alone while it runs, and read the result by band and by topic.
A look-back over closed deals also works, because every score is point-in-time: read each opportunity's score as stored for the week before it opened. Whichever you run, record the evidence kinds on each account at the time of first contact. Over a few quarters that record shows which kinds of signal precede your meetings, and it tells you which topics to keep.
Reading the score
The score is a reading of public activity, so a company that publishes more produces more signals. Compare accounts within the same topic and band, and read the evidence before the number. The score is company-level, so it chooses the account and your own records choose the person. If none of the 69 topics describes your product, rank on the closest and tell your reps which one you chose.
How Fokals delivers it
The intent dataset holds Intent Scores, Company Signals and Company Funding, with scores weekly and signals daily. The methodology gives the signal weights and the scoring rule, and the article on how the scores are built follows one score from signals to row. Intent says when to call, and the stack and hiring data can suggest what to say: see finding accounts by the technology they run and timing outreach with hiring signals.
Frequently asked questions
What is a company-level intent score?
It is a number from 0 to 100 for one company and one topic in one week, computed from that company's own public actions in the previous 90 days: tools added to its website, roles opened, filings and announcements. Every score carries the dated signals behind it, so a rep can open the evidence and see why the account is ranked where it is.
How do you combine intent data with firmographic fit?
Score fit and intent separately and rank on both. Put accounts into fit tiers from your closed-won history, join each account to its intent row for the topics you sell into, and sort by fit tier first, then by surge, then by score band. Keep the tiers fixed between weeks so that the ranking moves only when the intent does.
What does an intent surge mean?
A surge is a score of at least 50 that is at least double the company's own average for that topic over the previous twelve weeks, or a first strong week. It marks a change from the company's own normal, which makes it more useful for timing than a high score alone. Read it together with the evidence behind it.
How often are intent scores updated?
Scores are written weekly, once, after the Monday to Sunday UTC week closes, and they are never revised afterwards. The signals behind them refresh daily, so you can read new evidence between scores, and the score for a closed week stays exactly as written.
What evidence comes with an intent score?
The five strongest signals behind the score, each with its date, kind, source, weight and detail, and the full set of dated signals for the company in a separate dataset. A rep reads, for example, a role that names a CRM tool, a CRM tool added to the website and a new domain verification, all within a week, and knows why the account surged.
The queries and code on this page are examples to adapt. Test them in your own environment before you rely on them.