Skip to main content
The AI Score (also called Fit Score or ICP Score internally) is a 1–100 number rating how well a lead or account matches your Ideal Customer Profile. It powers the AI Score column on the Leads and Accounts tables, which renders a grade badge (A / B / C / D) and a heat icon + label (Burning / Hot / Warm / Cold), the sort order on Intelligence, and the priority queue in Win-Back. It is AI-generated, not a hand-tuned weighted formula. Every score comes from an LLM synthesis pass that reviews the enriched record and emits one composite number plus five sub-scores with reasoning.

How the Score Is Calculated

After enrichment populates company, contact, and research data, a single LLM call evaluates the record against five insight categories. Each insight gets its own 1–100 sub-score and a 2–3 sentence reasoning paragraph. The synthesis output is the headline fitScore plus the five insights. The model is free to weight insights differently per record: a recently-funded mid-market manufacturer that fits firmographically will score high even with weaker competitive signals; a perfect firmographic match in a saturated market won’t.

Where the Inputs Come From

The synthesis call uses whatever enrichment has already landed on the row:
  • Company data: industry, employees, location, description, funding stage, total raised, founded year, tech stack
  • Research findings: summary plus insights and source URLs collected during the research stage
  • Contact data: primary contact title and department (for the decision-maker insight)
Records with thin inputs get a fallback score of 50 and a neutral verdict so the row still sorts predictably. Re-running enrichment (or refilling firmographic fields via per-column Fill) recomputes the score on the next pipeline pass.

Score-to-Grade-to-Heat Mapping

The 1–100 score maps to a grade (A / B / C / D) and a heat tier (Burning / Hot / Warm / Cold) on the same thresholds. The AI Score cell renders both side by side. Grade and heat tier are stored as separate fields (grade and heat) but always agree because they come from the same thresholds. Sorting by AI Score descending matches “highest grade / hottest first.”

What You See in the AI Score Cell

Each row in the Leads / Accounts table shows a compact cell with three visible elements:
  1. Grade badge: a small filled box with the grade letter (A / B / C / D).
  2. Heat icon: a Lucide icon that reflects the tier:
    • 🔥 Flame for Burning (score ≥ 80)
    • 📈 TrendingUp for Hot (score ≥ 60)
    • 🌡 Thermometer for Warm (score ≥ 40)
    • ❄️ Snowflake for Cold (score < 40)
  3. Heat label: the word Burning / Hot / Warm / Cold next to the icon (hidden on compact density).
Empty rows (score = 0 and no whyThisAccount) render as a single -- placeholder.

Clicking the Cell

Clicking the AI Score cell opens a popover with:
  • Header: the heat icon + label, with “Score: N/100” as the description.
  • Score Breakdown: the five sub-scores rendered as labeled progress bars (Firmographic, Recent Activity, Pain Points, Decision-Maker Access, Competitive Landscape).
  • Why this account: the LLM’s narrative on fit drivers.
  • Why now: the timing signal narrative.
To refresh the explanations without re-running the full pipeline, use per-column Fill on whyThisAccount, whyNow, or priorityAction.

Where the Score Surfaces

Re-Computing the Score

Three ways to refresh:
  1. Re-enrich the row: runs the full pipeline; the synthesis pass is the final stage and recomputes everything
  2. Per-column Fill on any firmographic field (industry, revenue, employees, segment, funding, founded): the next intelligence recompute picks up the new inputs
  3. Per-column Fill on whyThisAccount / whyNow / priorityAction: refreshes the three intelligence explanations without rerunning the full synthesis. Use this when only the narrative needs updating.
Enrichment never overwrites existing values. If a firmographic field is already set, you need to clear it (or use per-column Fill, which intentionally re-asks the provider) before the synthesis pass sees the new value.

Customizing What “Fit” Means

The synthesis prompt is generic. It interprets “fit” against the enriched data and the natural-language description in your org profile. Two practical levers:
  1. Keep your org profile current. The “what we sell” and “who we sell to” fields anchor the firmographic insight. Vague profiles → noisy scores.
  2. Use audience segments (filter on Grade = A, Heat = Burning, or aiScore > 79 + your custom criteria) to define operational ICPs. The AI Score is the universal baseline; segments are how you slice it per campaign.
There is no per-criterion weight UI today. Scoring is driven by the LLM, not a configurable rubric. If you need a hard-coded business rule (e.g., “always exclude personal email domains”), enforce it with an audience segment filter, not by trying to express it in the score.

Troubleshooting

Synthesis fell back because inputs were too thin or the LLM call errored. Re-run enrichment after company/contact data lands.
Enrichment never overwrites existing values, but per-column Fill does. Use Fill industry / Fill revenue etc. for that row, then let the pipeline recompute the intelligence pass. Or run Enrich again with the field cleared.
The five sub-scores explain the gap. Open the drawer’s Intelligence tab. The most common cause is the Recent Activity insight (one had recent funding/hiring signals, the other didn’t).

Next Steps

Lead Enrichment

What the pipeline populates before the score runs

Account Enrichment

Account-side enrichment + AI Score how-it-works

CRM Sync

Push AI Score to your CRM as a custom field

Intelligence

The Intelligence tab where the five sub-scores live