All skills

Score

Qualifies and scores accounts against ICP and buying signals. Use for account fit, lead tiering, inbound signals, pipeline rescoring, re-engagement, and expansion potential.

SKILL.md
name:
score
description:
Qualifies and scores accounts against ICP and buying signals. Use for account fit, lead tiering, inbound signals, pipeline rescoring, re-engagement, and expansion potential.

Instructions

Setup state. Not yet configured for this org. Load the Readme sub-page and walk the user through configuring the qualification gate, persona authority, deal-size signals, tech-stack signals, signal weights, tier naming, and alert channels before scoring any accounts. (After setup completes, rewrite this paragraph via swan-update-skill to capture the configured rules so future runs proceed without re-checking state.)


The scoring frame

Every scoring run answers two questions:

Q1 — How strong is the intent or engagement? Assess signal quality, persona authority, and whether signals are first-party (the account doing something directly) vs third-party (external data about them). Person-level signals outweigh company-level signals. Recency matters.

Q2 — How large is the potential deal? Assess size, maturity, and expansion headroom against the org's deal-value signals. Reason from research until org-specific thresholds are baked in by Setup.

The tier is the intersection:

Large deal Small deal
Strong intent/engagement Gold Silver
Weak intent/engagement Silver Bronze

Bias toward visibility. When signals or deal size are ambiguous, default to the higher tier. Confidence in the lower tier should be explicit — not assumed. Reps refine from there; the agent's job is not to filter too aggressively.

Non-ICP accounts do not receive a tier — they exit before scoring.


Default signal hierarchy

Soft hierarchy — guides weighting, not numeric scoring. Override via signal weight preferences captured by Setup.

Key principle: first-party signals outweigh third-party. Person-level outweighs company-level. Weight signals in proportion to confidence that the person behind them is actually at the company and acting with intent.

  1. Direct inbound intent — form fill, demo request, direct reply to outreach. Deliberate and person-level.
  2. Meeting completed — both parties showed up. Extract topics, objections, stakeholder roles, new company intel not in public data.
  3. Product engagement — active usage. Proves behavior, not interest. Weight highest for product-led motions.
  4. Website visit — pricing and demo pages carry significantly more weight than blog posts. Depth and recency matter.
  5. Prior warm engagement — positive outreach reply, webinar/event registration, conference booth visit, hosted-event attendance. Stronger than a cold website visit; weaker than a demo request. Full weight within 90 days of the engagement; diminished beyond. A positive outreach reply sits at the strong end of this band; event registration at the weak end.
  6. Conversational interaction — weight by commercial specificity. A pricing question is strong; a generic intro is weak.
  7. Business event (third-party) — funding, leadership hire, tech-stack change, job postings. Signals a moment of change, not confirmed intent. Weight rises sharply when stacked with first-party signals.
  8. Social engagement — lowest weight. Meaningful only when stacked with other signals.

Stacking rule: two lower-hierarchy signals can outweigh one higher-hierarchy signal.


Step 0 — Pre-scoring checks

0.0 — ICP field sync. Every run, before anything else, set isInAnyTargetMarket on the company record. Pass → set true with the matched target market ID. Fail → set false. This keeps Swan's native qualification field aligned with the latest score — the company record stays the source of truth even as accounts are rescored over time.

0.1 — Vendor / partner check. If tagged vendor, partner, or equivalent non-prospect: stop. No score, no alert, no update.

0.2 — Hard floor check. Does the account fail a hard-floor rule baked in by Setup (bot traffic, no plausible use case, excluded industry/geo)? If yes: tag Non-ICP, write memory "Non-ICP — [reason]", sync to CRM, stop. Ambiguous cases pass through to the sub-skill.

0.3 — Credit efficiency gate (two-pass model). Before any enrichment, contact research, or sequence drafting:

  • Pass 1 — cheap qualification. Use only data already in hand: existing Swan company record, account memory, CRM record, the signal that triggered this run. Do not call enrichment tools. Make a preliminary ICP / Non-ICP call and rough tier estimate (Gold / Silver / Bronze / unlikely).
  • Pass 2 — full scoring. Run enrichment, contact research, and the relevant sub-skill. Only happens when the account is ICP-likely AND preliminary signals suggest Silver or above.

If Pass 1 lands at Non-ICP → sync isInAnyTargetMarket = false, log, stop. If Pass 1 lands at Bronze with no strong new signal → tag Bronze, log, stop. No enrichment, no contact research, no drafts. Otherwise → proceed to Pass 2.

Bronze and Non-ICP accounts never trigger enrichment. Credits are reserved for accounts worth the investment.


Step 1 — Route to a sub-skill

Route to exactly one. When ambiguous, route to the most downstream sub-skill the account qualifies for.

  • Customer or on trialExpansion/PLG scoring. Trial accounts use the same frame as customers — usage depth replaces engagement depth; expansion headroom is the same question.
  • Prior closed-lost deal + new signalRe-engagement scoring.
  • Prior warm engagement in CRM + new signal (not closed-lost)New business scoring with a warm-context flag. The sub-skill should treat the account as a re-entry: surface the prior engagement as a named signal alongside the new signal, factor the prior relationship into intent assessment and outreach framing.
  • Any other account — first signal, inbound, or in-pipeline rescore — → New business scoring. For in-pipeline rescores: pull CRM notes, meeting transcripts if available, and rep-logged intel before handoff. The sub-skill returns a change delta vs the prior score.
  • No stage set, or earliest funnel stage with no engagementNew business scoring (default).

Step 2 — Apply tier tag

Remove any existing tier tag. Apply the new one.

  • ICP-eligible accounts: Bronze is the minimum. Never leave an ICP account untagged.
  • Non-ICP accounts: tag Non-ICP, not Bronze.

Step 3 — Sync to CRM

If a CRM is connected and a tier field is configured, write the tier there. Always write a structured note to the CRM company record regardless:

[SCORE: Tier] [Mode] [Date] — [1-sentence reasoning]. Top signals: [2-3]. Deal size: [1 sentence].

The note is the human-readable audit trail.


Step 4 — Update account memory

Prepend a snapshot to the top of account memory. Preserve all history below.

[SCORE: Tier] [Mode] — [date]
Signals (strongest first): [type] — [description]
Persona: [Strong / Weak / Mixed / Unknown] — [reason]
Deal size: [1 sentence]
Change delta: [prior tier → new tier + what changed, or N/A]

Update the state summary: [SCORE: Tier] [Mode] — [what drove the score].


Step 4.5 — Score decay check

Before applying a new tier, check the last score date in account memory. If a prior score exists and no meaningful new signal has arrived since, apply lazy decay:

  • Gold scored >60 days ago, no new signals → downgrade to Silver. Memory note: Score decayed Gold → Silver — 60+ days, no new signals.
  • Silver scored >90 days ago, no new signals → downgrade to Bronze. Memory note: Score decayed Silver → Bronze — 90+ days, no new signals.
  • Bronze — no further decay. Bronze is the ICP floor.

Lazy means: this check only runs when the skill is triggered by a real new signal. No scheduled batch rescore. Dormant accounts age in place at zero cost.

Staleness flag. If the prior score was Gold or Silver and the account has been silent past the threshold, add to state summary: Score may be stale — last scored [X] days ago, no new signals. Surfaces visibility to reps without triggering a rescore.


Step 5 — Alert

  • Non-ICP / Bronze — no alert. Log only.
  • Silver — QA-style alert to the configured Silver channel: full signal stack and reasoning. Purpose is score verification, not action.
  • Gold — full alert to the configured Gold channel: tier, reasoning, signal stack, deal-size assessment, recommended next action.

Step 6 — Recommended next play

If the org has defined plays or GTM motions, surface the recommended next play based on tier and scenario. Otherwise: Gold → immediate rep notification or outreach; Silver → monitor or light follow-up; Bronze → log only.


Rules

  • MUST sync isInAnyTargetMarket on every run, before any other write.
  • MUST run the two-pass credit gate before any enrichment.
  • MUST drop Non-ICP and Bronze accounts before contact enrichment or sequence drafting.
  • MUST bias toward the higher tier when ambiguous. Visibility over filtering.
  • MUST write the memory snapshot and the CRM note — the audit trail is how reps and future scores reason about the account.
  • NEVER score before loading the rubric (ICP, persona authority, deal-size signals, signal weights, hard floors).
  • NEVER tag an ICP-eligible account as untagged. Bronze is the floor.
  • NEVER batch-rescore on a schedule — decay is lazy, triggered only by new signals.