# Fivos Lead Scoring

> Use this skill to qualify and tier a list of accounts or contacts. Runs a 10-row sample first with per-row reasoning so the engineer can audit accuracy before committing to a full run. Trigger when the user says 'score these accounts', 'qualify the list', 'run qualification', 'tier the leads', or after fivos-account-enrichment / fivos-contact-enrichment.

- **Type:** Skill
- **Install:** `agentstack add skill-fivosaresti-workflows-outbound-skills-lead-scoring`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [fivosaresti](https://agentstack.voostack.com/s/fivosaresti)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [fivosaresti](https://github.com/fivosaresti)
- **Source:** https://github.com/fivosaresti/workflows-outbound-skills/tree/main/lead-scoring

## Install

```sh
agentstack add skill-fivosaresti-workflows-outbound-skills-lead-scoring
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Fivos Lead Scoring

Qualification + tiering for accounts and contacts. Broad-then-narrow: source wide, filter down with a prompt. Scoring runs **in-session through Claude itself** - no external model needed today.

## How scoring runs (today)

- Claude reads the input CSV row-by-row (using the Read tool on a sample, then processing batches).
- For each row, Claude applies the validated qualification prompt and outputs a structured decision: `{tier, score, reasoning}`.
- Claude writes the scored CSV back to disk using Write/Edit.
- No external model wiring required. First-class, not a fallback.

If you have a dedicated local qualification model (via an MCP or API), this skill's Step 2 and Step 5 can be swapped to call it. The rest of the flow - sample, audit, two gates - stays identical.

## Hard rules

- **Two approval gates** per the TAM Mapping and Contact Sourcing Plan - 2026:
  - Gate 1: engineer approves / revises the qualification prompt after seeing 10-row sample results.
  - Gate 2: re-estimate full-run cost with the validated prompt, manager approval before scaling.
- **Every scored row carries reasoning.** Store `tier, score, reasoning` triples for audit - not bare tiers.
- **Re-scoring uses this same skill.** Never write custom scoring scripts outside this skill. If criteria change mid-campaign, re-invoke.

## Inputs

- **CSV to score** - account CSV (from `fivos-account-enrichment`), contact CSV, or both.
- **Qualification prompt** - engineer-provided. If missing, the skill suggests one from the template below.
- **ICP matrix** - from `fivos-icp-segmentation`. Gives signal weights and tier thresholds.
- **Tier thresholds** (optional) - override the default A/B/C cutoffs if the client has specific definitions.

## Outputs

1. Scored CSV with columns appended: `tier, score, reasoning, scored_at, scorer_version`.
2. Tier distribution report (counts of A/B/C/DQ, top disqualification reasons).
3. Audit trail: the prompt used, the gate approvals received.

## Prompt template

If the engineer didn't provide a prompt, start here and fill in the bracketed sections from the ICP:

```
You are qualifying 's outbound list. The ICP is:

- Industry: 
- Size: 
- Signals that raise fit: 
- Known disqualifiers: 

For each row you receive, decide tier A/B/C:
- A = strong ICP fit + at least one high-weight signal firing.
- B = ICP fit, no strong signal, or signal firing on a weaker-fit account.
- C = tangential fit. Keep only if volume is needed.
- DQ = disqualify (wrong geo, wrong industry, sanctioned, bankrupt, etc.).

Return JSON per row: {"tier": "A"|"B"|"C"|"DQ", "score": 0-100, "reasoning": ""}.
```

Always show the engineer the fully-rendered prompt before running.

## Workflow

### Step 1 - Prompt assembly

Render the template with the ICP doc's values. Show the rendered prompt to the engineer for a quick read.

### Step 2 - 10-row sample (in-session, Claude-driven)

Read the first 10 rows of the input CSV. For each row, apply the prompt and produce the structured output. Present results inline:

```
Row 1: Acme Corp (domain: acme.com)
  Tier: A
  Score: 87
  Reasoning: Strong industry fit; Series B within 45 days (high-weight signal);
  headcount in target band; no disqualifiers.

Row 2: Globex (domain: globex.io)
  Tier: DQ
  Score: 10
  Reasoning: Wrong industry (consumer retail); also HQ in sanctioned region.

...
```

### Step 3 - Gate 1 (prompt validation)

Ask the engineer:

```
10-row sample complete.

Distribution: A=X, B=X, C=X, DQ=X

Audit the reasoning. Do any look wrong?

Options:
  [approve] - proceed to Gate 2
  [revise]  - edit prompt and re-run sample
  [abort]   - stop, do not score
```

Iterate on the prompt until the engineer signs off. Common revisions: tightening a disqualifier, re-weighting a signal, adding a geo exclusion, adding an industry keyword.

### Step 4 - Gate 2 (full-run approval)

Once the prompt is validated, present the full-run plan:

```
Full qualification plan -  / 

Rows to score: N
Scorer: Claude (in-session)
Estimated time: ~M minutes (typical: 2-4 seconds/row in batched reads)

Manager approval required to proceed.
```

### Step 5 - Full run

Read the CSV in batches (50-200 rows per batch depending on row width), apply the prompt per row, append the scoring columns, write the result to `_scored.csv`.

```
scorer_version: "claude--"  # e.g. claude-opus-4-7-2026-04-22
```

### Step 6 - Distribution + anomaly report

```
Qualification complete -  / 

Total scored: N
Distribution:
  - A: X (X%)
  - B: Y (Y%)
  - C: Z (Z%)
  - DQ: W (W%)

Top disqualification reasons:
  1.  (X rows)
  2.  (Y rows)
  3. ...

Flags:
  - Unexpectedly high DQ rate (>25%) - review prompt tightness.
  - Tier-A concentration in one industry - possibly over-indexed.
```

### Step 7 - Handoff

Hand the scored CSV to `fivos-copywriter`. Tier drives copy depth: A = deep personalisation, B = signal-triggered, C = pattern-only.

## Cutover to a dedicated qualification model

If you wire a local or API-hosted qualification model:
1. Replace Step 2 + Step 5 with calls to that model.
2. Update `scorer_version` in the output CSV to reflect the model.
3. Everything else (sample → Gate 1 → Gate 2 → full run → report) stays the same.

No structural change to this skill is needed beyond swapping the two step bodies.

## Re-scoring

If prompt criteria change mid-campaign (new disqualifier, re-weighting), re-run this skill on the existing CSV. Always bump `scorer_version` and `scored_at` so downstream analytics can see the change.

## References

- `~/.agents/skills/gtm-meta-skill/writing-outreach.md` - scoring rubric examples, prompt patterns.
- `~/.agents/skills/gtm-meta-skill/prompts.json` - qualification prompt templates.
- TAM Mapping and Contact Sourcing Plan - 2026 (Google Doc).

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [fivosaresti](https://github.com/fivosaresti)
- **Source:** [fivosaresti/workflows-outbound-skills](https://github.com/fivosaresti/workflows-outbound-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-fivosaresti-workflows-outbound-skills-lead-scoring
- Seller: https://agentstack.voostack.com/s/fivosaresti
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
