文档

account-scoring

试用

Score every account against your ICP on a schedule: a deployed agent tiers each company in a Cargo model (tam-building's, or your CRM companies) A / B / C / disqualified against the ICP and rubric in workspace context, and the tier, a two-sentence reason and evidence are written onto the row and, optionally, the matching HubSpot or Salesforce company. New companies are tiered hourly; the book is re-scored weekly or on any window set. Triggers: "score our TAM", "tier the market we just sourced", "which accounts should the team work first", "why is this account tier A", "keep our accounts tiered as they arrive", "our lead scoring is a spreadsheet nobody trusts". Cargo project, defineAgent, webSearch, context, tam_companies, tier segments. Skip when: someone hands you a list and wants it scored once, which is score-leads; or there is no account universe yet, which is tam-building.

它能做什么

**State: to-be-approved.** Deploy-verified against a live workspace: not yet. Treat below as the acceptance test and review before deploying. Make no outcome claim for this skill until it is approved.

技能文档

Account scoring

State: to-be-approved. Deploy-verified against a live workspace: not yet. Treat Done when below as the acceptance test and review cargo-ai cdk plan before deploying. Make no outcome claim for this skill until it is approved.

The outcome

Every account scored against your ICP, tiered, and written back to the CRM with the rationale, so a rep can always see why an account is tier A. The criteria are not point weights in code: they are the ICP markdown in your context repo, versioned in git and shared with every other agent. Edit the ICP and accounts re-score against it as they come due.

Two failure modes worth knowing before you start. If the CRM properties do not exist, the run looks successful and the scores land nowhere, which wastes the whole batch. And cargo_score plus cargo_tier must be selected as columns on the accounts model, or the tier segments filter on a column they cannot see.

Put it in your project

This folder is a worked example: real CDK resources written for some other company. The job is to end up with the code your company would have written, in your project, and an agent does the adapting. If the cargo-cdk skill is in your session it carries the long form of this; if not, this is enough.

  1. Look first. grep -l '@cargo-ai/cdk' package.json says whether a CDK project already lives here; ls */models/*.ts */connectors/*.ts says what it already declares. If there is no project: cargo-ai cdk init --template blank && cd && npm install. That is the whole shell; this folder never ships one.
  2. Copy this folder in as a sibling of what is there, then reconcile: for every model or connector this example carries that the project already has (an accounts model keyed on website, a HubSpot connector, an OpenAI connector), rewire the imports to the existing one and drop the copy. Two resources with one slug is a collision at deploy. Append this folder's .env needs to the project's .env.example; never overwrite it.
  3. Adapt. Work the sections below in order: What should not change is what you argue back about (say what breaks, then do it if they still want it); What you can change is what you offer unprompted (nobody asks for a variant they do not know exists); What you will be asked is the floor, and you derive before you ask. If you are asking more than about four questions you have skipped lookups. Record what you changed and why under a ## Decisions section in your copy of this file.
  4. Plan, then stop. npm run typecheck && cargo-ai cdk plan. Show the diff. Deploy only on an explicit yes: cargo-ai cdk deploy. Never cdk init --force into a non-empty directory.
  5. Verify. Walk Done when line by line and report each with evidence. Deployed cleanly and produced nothing is the normal failure.

What you will be asked

Derive before you ask. An input with a lookup is looked up, not asked. Only the ones marked asked genuinely live in the operator's head.

InputKindHow it is answeredWhy it matters
icp (context/icp.md)generatedderived: If the workspace already has closed-won and closed-lost data, extract the industry, size, geography and stack that separate won from lost accounts and propose the ICP from it rather than asking cold.The criteria ARE the prompt. There are no point weights in code, so a vague ICP produces vague scores and the disqualifiers are what cap a bad account at 20.
languageModel (agents/scorer.ts)valuederived: whichever LLM connector is already authenticated in the workspaceScoring quality and per-account cost both live here.
crmScorePropertiesmanualderived: read the CRM's account schema through the CRM connector and report which of the four are missingThe play writes all four back. If they do not exist the run looks successful and the scores land nowhere, which is the failure mode that wastes a whole batch.
tierThresholds (segments/tiers.ts)valueaskedThe agent emits A, B and C but the skill ships segments for A and C only. Tier B accounts land in no segment unless you add one.

Checked before moving on, not after the deploy:

  • icp: the file names at least one disqualifier, not only fit signals
  • crmScoreProperties: all four exist, and cargo_score plus cargo_tier are selected as columns on the accounts model so the tier segments can filter on them
  • tierThresholds: every tier the agent can emit is either covered by a segment or deliberately excluded

What you can change

The code is a worked example. These reshapes are expected, and the agent offers them rather than waiting to be asked. Every one costs something; that is what makes it a variation and not the default.

VariationWhen it is rightHowWhat it costs
deterministic-scoringYou need fixed cost and exact reproducibility, or an LLM judgement is not acceptable to your teamSwap the agent call for the native scoring node, with criteria as {name, value, score} booleans in the workflow (agents/scorer.ts, plays/score-accounts.ts)The criteria move out of the ICP markdown and into code, so they stop being reviewable by non-engineers, and you lose the rationale entirely
skip-crm-roundtripYou want the score on the model directly and do not need it visible in the CRMWrite with the platform's native.modelUpsert({...}) in the workflow instead of going through the CRM connector (plays/score-accounts.ts)Reps lose the score and rationale where they actually work. The native's input is untyped, so confirm the field shape on the first run
no-crm-at-allYou have no CRM, or you do not want to hand this skill a CRM credentialTake skip-crm-roundtrip, then delete connectors/hubspot.ts so no CRM connector is registeredEvery other CRM-dependent skill you install later brings a CRM connector of its own; reuse one

What should not change

However far you adapt, these hold. Ask for one anyway and the agent tells you what breaks, then does it if you still want it, and records why under ## Decisions in your copy of this file.

  • The scorer looks the account up before judging it. (agents/scorer.ts) A score guessed from the domain name is unfalsifiable and the rationale cites nothing. The evaluator exists to fail exactly this, and a book scored that way is worse than an unscored one because people trust it.
  • ICP disqualifiers cap the score, they are not just negative weight. (agents/scorer.ts) Without a cap, a disqualified account with many fit signals still scores high and reaches a rep. The disqualifiers are the half of an ICP that actually protects the team's time.
  • cargo_score and cargo_tier are selected as columns on the accounts model. (segments/tiers.ts) The tier segments filter on a column they cannot see, so they come back empty while everything upstream reports success.
  • Every tier the scorer can emit is either covered by a segment or excluded on purpose. (segments/tiers.ts) The shipped segments cover A and C. The agent also emits B, so tier B accounts land nowhere and quietly disappear from the book.

Done when

  • a test account run shows the agent's lookups in the trace, not a score guessed from the domain name
  • the CRM record carries a score with a rationale citing real evidence and named ICP criteria
  • the evaluator scores at least 0.8
  • after the next model refresh the account appears in the matching tier segment

What it costs

One LLM call plus up to two Cargo database calls (matchBusiness, enrichBusinessFirmographics) per account, on arrival and again on the weekly sweep of accounts last scored three or more months ago. It scales with accounts in the model times re-scores, so a TAM built by tam-building scores at that size. Score a sample before the book.

Composes into

routing-engine (territories and capacity over the scored book), rep-cockpit, ai-sdr.

相关技能

以 AI 机器人身份加入视频会议,提供语音、虚拟形象与屏幕共享四种模式。

作者 johnpatternai22 次安装8 星标

诊断生产力系统反复失效的根因,给出最小干预——容量测算、瓶颈定位、可靠的本地记录。

作者 Iván855 次安装69 星标

把自然语言描述转为结构化 JSON,并由 mcp-diagram-generator MCP 服务生成 Draw.io、Mermaid 或 Excalidraw 图表文件。

作者 nssa.io1.0k 次安装47 星标

在本地磁盘以分类纯 Markdown 文件保存需要长期留存的事实,与智能体内置记忆并存。

作者 Iván559 次安装18 星标

从 AdMapix API 拉取广告创意、应用、榜单和收入预估等数据,原样返回结构化 JSON。

作者 fly0pants4.3k 次安装296 星标

cargo-ai 的更多技能

浏览全部技能

读写团队的 GTM 知识库——一个由 Git 管理的 Markdown 仓库,记录 ICP、人设、玩法、证据、异议等。

作者 cargo-ai16 次安装

用一个 CLI 表面执行、构建、绘制并查询 Cargo 工作流、动作、批量与 AI 代理。

作者 cargo-ai16 次安装

查找、认证并配置 Cargo 工作流节点所需的外部系统连接器。

作者 cargo-ai14 次安装

检查并修改 Cargo 工作区的数据模型,并对存储运行 SQL 查询。

作者 cargo-ai14 次安装

在 Cargo 上跑 B2B 拓客、联系人补全、线索打分与 CRM 同步,每一步都内置授权基础与抑制名单校验。

作者 cargo-ai13 次安装

通过 Cargo CLI 管理 AI agent、release、MCP server 与 memory。

作者 cargo-ai17 次安装