---
name: account-scoring
description: Score accounts 0-100 on pain-point relevance with evidence and reasoning
---
# Static Account Scoring
Score accounts in an audience based on pain-point relevance and urgency.
## Conversation Flow
The agent MUST follow this sequence — do NOT skip steps.
### Step 1: List audiences for user to pick
- List audiences (see Runtime below for which tool to call)
- Present the list
- Ask: "Which audience would you like to score?"
### Step 2: User selects an audience
- Load the audience to get account IDs
- Confirm: "Got it — [audience name] with X accounts."
### Step 3: Present scoring models — MANDATORY, DO NOT SKIP
> Do NOT auto-score. Do NOT skip to results.
Present:
> How would you like to score these accounts?
>
> 1. **OpenFunnel Pain-Based Scoring** — scores each account based on how urgently they need what you sell
> 2. **Custom** — describe your own scoring criteria in plain language
- User picks 1 → proceed to Step 3a
- User picks 2 → user describes custom logic, agent interprets and applies
### Step 3a: Get pain description (Pain-Based Scoring only)
- Ask: "What pain-points does your product/service solve?
Example: 'We help companies migrate off legacy ERPs to cloud-native'"
- User provides pain description
- This is the lens through which ALL signals will be interpreted
### Step 4: Score each account
For each account_id in the audience:
1. Gather evidence (summary + timeline + full details — see Runtime)
2. Read the evidence against the user's pain description
3. Apply the pain-based scoring rubric below
4. Assign score (0-100) + reasoning (1-2 sentences explaining why)
Sort by score descending. Present as a ranked list.
---
## Pain-Based Scoring — How to Reason
**TIME IS THE MOST IMPORTANT FACTOR.** Pain has a shelf life. It emerges, it peaks, and if unaddressed it goes cold — the company either solved it, deprioritized it, or moved on. A perfect-fit signal from 90 days ago with nothing since is NOT a hot account. It's stale. Score accordingly.
Read the timeline as a narrative, not a list. A single signal is a hint. A sequence of signals over weeks is a story. Timestamps matter as much as content.
Given the user's pain description and the account's evidence, assess four dimensions. These are NOT mechanical point buckets — use judgment. The evidence may be rich or sparse; score what you see.
### 1. Pain Relevance
Does this account show signs of having this pain?
- Job post descriptions that describe needing to solve this problem (read the actual job content, not just the title)
- Social posts discussing the pain area
- Tech stack that creates or relates to the pain (e.g. legacy tool that your product replaces)
- Industry/vertical alignment with the pain
### 2. Temporal Signal
When did the pain surface, and is it still alive? Pain goes cold. **This dimension can override everything else.**
- A highly relevant signal from 90 days ago with no follow-up = cold. The pain may be solved, deprioritized, or abandoned. **Score LOW.**
- A weaker signal from last week = more valuable than a strong one from 3 months ago. Recency wins.
- **Velocity:** signals clustering in recent weeks = pain is active and building
- **Decay:** gaps in the timeline after initial signals = pain cooling off
- **Trigger → follow-through:** did the triggering event (new hire, funding, leadership change) lead to more activity? If yes = escalating. If no = stalled.
### 3. Buying Window
Can they act on it now?
- New leadership in relevant function (someone with mandate to change)
- Recent funding (budget to spend)
- Active hiring in the area (committed to solving, building team)
- Signal stacking: multiple signal types pointing at same pain (hiring + posting about the problem + using legacy tech = high conviction)
### 4. Story Coherence
Do the signals tell a connected narrative?
- Isolated signal = maybe noise, score conservatively
- Connected signals across time = real pattern, score higher
- Example: Jan — hired VP Eng → Feb — posted about migration challenges → Mar — started hiring cloud engineers = clear escalating story
- Counter-example: one social post 80 days ago, nothing since = low confidence
**The score should reflect: "If I were selling a solution to [pain], how excited would I be about this account RIGHT NOW — today?"**
Output per account: score (0-100) + reasoning (1-2 sentences).
---
## Runtime
| Step | Endpoint |
|------|----------|
| Step 1 | `POST https://api.openfunnel.dev/api/v1/audience/get-audience-list { limit, offset }` |
| Step 2 | `POST https://api.openfunnel.dev/api/v1/audience/ { audience_id }` |
| Step 4 | `POST https://api.openfunnel.dev/api/v2/account/batch { account_ids: [id] }` → full details + inline signal content (preferred) |
**Prefer V2 batch for scoring.** The V2 batch endpoint returns inline signal content — job posting text, social post content, context — so the LLM can read actual evidence without extra calls.
> **NOTE:** Large audiences (100+) will be slow.
All endpoints require headers: `X-API-Key`, `X-User-ID`, `Content-Type: application/json`.