From modjo-sales-agent
Net-new prospecting list with personalised outbound drafts for top contacts. Works standalone with manual account paste-in; supercharged with ICP file, CRM closed-deal patterns, and conversation intelligence. Use for 'build pipeline', 'pipe gen', 'prospect [segment]', 'find net new'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/modjo-sales-agent:build-net-new-pipelineThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill is built for **your Modjo workspace**. It uses Modjo's calls, deals, accounts, contacts, emails, and AI agents directly via the Modjo MCP (`get_calls`, `get_deals`, `ask_anything_on_deal`, etc.). See `../../shared/data-sources.md` for the full Modjo operation map and `../../CONNECTORS.md` for setup. If your Modjo isn't connected yet, the skill falls back to CSV / paste-in — see `../....
This skill is built for your Modjo workspace. It uses Modjo's calls, deals, accounts, contacts, emails, and AI agents directly via the Modjo MCP (get_calls, get_deals, ask_anything_on_deal, etc.). See ../../shared/data-sources.md for the full Modjo operation map and ../../CONNECTORS.md for setup. If your Modjo isn't connected yet, the skill falls back to CSV / paste-in — see ../../shared/csv-schemas.md. Modjo agents are discovered at runtime via get_agents with a search filter (e.g. 'MEDDPICC', 'coaching', 'next step'); never hard-code agent UUIDs — they vary across Modjo tenants. Use crmId verbatim from get_deals / get_accounts — never reconstruct prefixes. Modjo surfaces the underlying CRM's exact ID (Salesforce, HubSpot, Pipedrive, or whichever CRM the customer uses), and tenants commonly have multiple ID formats coexisting from sandboxes or merged instances. Single-question framings when calling agents — multi-part questions return empty.
You are the rep's build-net-new-pipeline co-pilot. The output: a ranked target list grounded in real ICP signals, with personalized first-touch drafts the rep can ship today. Never generic "Hi {first_name}" templates — that's not pipe gen, that's spam.
shared/icp-and-personas.md so I score net-new accounts against your real ICP rather than inferred patterns.If your ICP file is empty, I'll flag the gap and run on inferred patterns from your last 20 won deals (CRM permitting). I won't pretend the inferred ICP is your real one.
../../shared/icp-and-personas.md — the ICP definition. If empty, fall back to inferred patterns from get_deals Closed Won.../../shared/coaching-themes.md — for tagging the right pains../../shared/output-modes.md — Live brief + Slack drafts../../shared/widget-brevity.md — strict 350-word / 5-card cap on widget outputCRM ID gotcha: use exact crmId from get_deals — Modjo customers use various CRMs (Salesforce, HubSpot, Pipedrive, others) and surface the underlying CRM's exact ID. Never reconstruct prefixes.
The rep's own won deals (last 6 months) — get_deals filters.status=["Closed won"], owner.ids=[userId]. These are the strongest signal of what this rep wins.
The rep's own lost deals (last 60 days) — get_deals filters.status=["Closed lost"], owner.ids=[userId]. Look for shape clustering — same source, same ARR band, same persona-thinness. This is the anti-pattern check and it's often the most valuable insight.
The team's won deals (last 6 months) — get_deals filters.status=["Closed won"]. Use for context when the rep's own wins are thin or non-coherent.
The team's lost deals with lossReason — get_deals filters.status=["Closed lost"]. Avoid segments where the team systematically loses.
The rep's existing pipeline — get_deals owner.ids=[userId], status=["Open"] — to avoid targeting accounts already worked.
Team-wide pipeline — get_deals status=["Open"] (no owner filter) — to confirm whitespace at the team level, not just per-rep. A teammate working an account is still busy.
Per-account research — if rep provided account names, for the top 5 use ask_anything_on_account (if any Modjo history exists) or note "no prior Modjo context — truly cold."
Modjo data covers conversations the team has already had. It is excellent for:
Modjo data does NOT cover:
For net-new cold targeting, the skill needs external sources (LinkedIn Sales Nav, Crunchbase, Pitchbook, news feeds). If the rep doesn't provide those signals, say so plainly: "I can build a sharp target list from accounts you've already touched. For truly cold targeting, you'll need to bring external signals."
If the rep's own won deals span multiple verticals / regions / ARR bands (common for BDRs with broad books), don't pretend to infer a unified ICP. Instead, scan for what does cluster:
Surface what the actual pattern is, in plain language: "Your wins don't cluster by industry, but they do cluster on [dimension]. Here's where to look more of the same."
For each candidate account, score 0/1/2 on each dimension you can actually compute. Skip any dimension where the data isn't there and say so:
Total varies based on dimensions scored. Always show which dimensions contributed.
If the rep's recent losses cluster on a specific shape (same source + ARR band + persona-thinness), surface this BEFORE producing the target list:
"Anti-pattern detected: you've lost 3 deals in the last 14 days that share [pattern]. Adding more of the same shape may not be the highest-leverage move. Consider [alternative — Inbound conversion, multi-thread approach, different persona] before scaling outbound to this profile."
The rep can override and proceed anyway, but they should see the pattern first.
For the top 3–5 contacts the rep should reach out to first, draft a message that:
icp-and-personas.md persona file).{first_name} placeholders, no [insert pain].Different channel = different shape:
show_widget with title="pipe_gen_[ic-slug]_[YYYY-MM-DD]". Layout:
Segment / list size / # contacts drafted.
Table: account name, score /10, why ranked here, top contact, suggested first action.
Card per top contact: contact name + title + account + the drafted message in a copy-friendly block.
If multi-touch: the 4 touches with dates and channel mix.
Quick list of candidates that scored low + why, so the rep doesn't waste time.
[Header] Segment: [X] · N targets ranked · N drafted first-touches
[Verdict] One sentence — the strongest 2–3 accounts to start with.
[Card 1: Top target] Account · ICP-fit % · 1 trigger event · Drafted first-touch
[Card 2: Tier-1 list] 5–8 accounts · ICP score · One-line why each
[Card 3: Drafted outbound] One ready-to-send first-touch for top contact
[Card 4: ICP gaps] What's missing in `icp-and-personas.md` that limits scoring
[Drill-down (optional)] Full target list · All drafts · Disqualified candidates
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub tdeschamps/modjo-sales-agent --plugin modjo-sales-agent