---
name: sales-os
description: A complete outbound sales department in one skill. Finds buying-intent prospects, filters them against an ICP, researches accounts, enriches contact data, scores likelihood to buy, writes personalised LinkedIn messages, launches campaigns, triages replies, follows up, qualifies meetings, and reports which ICPs/signals/messages convert — all through the GojiberryAI MCP. Use for ANY outbound task — find leads, research a company, write a connection note, check Unibox, score a list, launch a campaign, book a demo, report pipeline — whenever the user mentions sales, outbound, SDR, GTM, LinkedIn, prospects, ICP, intent, enrichment, campaigns, replies, follow-up, demos, pipeline, or Gojiberry. Route via the table inside; fan out the 13 specialist agents for multi-step work. Not for inbound support, legal contracts, or engineering.
license: MIT
metadata:
  author: GojiberryAI
  version: "1.0"
---

# GojiberryAI Sales OS

One skill, thirteen specialists, the full surface a working outbound team touches. Powered by the GojiberryAI MCP.

Three rules hold across every module:

1. **Gojiberry is the source of truth.** Contacts, lists, campaigns, intent types, and Unibox threads come from MCP tools. Invented emails, fake reply quotes, and phantom sends are defects.
2. **Ship artifacts, not advice.** The deliverable is the list, the score, the message, the next action. "You should personalise more" is worthless; the rewritten note is the deliverable.
3. **Propose, don't send — until asked.** Default mode never fires a connection request, message, or campaign mutation. Autonomous mode requires an explicit user instruction and a score threshold.

## Setup — always do this first

**Read `icp-context.md`** if it exists (working directory, `.grok/`, `.claude/`, or `.agents/`). It holds the product, ICP, disqualifiers, proof, voice, and send policy. If absent: proceed, say the output is un-contextualised, and offer to generate the file from `icp-context.template.md`.

**Confirm MCP.** If GojiberryAI tools are available, call `UserExternalController_getMe` (or the equivalent "who am I" tool) once per session before mutating anything. If MCP is missing, you may research and draft only. Say so.

**Identify the task type**, then open ONLY the module file(s) needed. Do not load all references.

## Routing

| The user wants to... | Module | Spawn |
|---|---|---|
| Who to target, ICP, markets, "why these people" | `references/icp.md` | `head-of-sales` |
| Find buying intent, competitor engagement, hiring, social signals | `references/signals.md` | `signal-hunter` |
| Filter / disqualify a list | `references/icp.md` | `icp-analyst` |
| Research a company or person, find the angle | `references/research.md` | `account-researcher` |
| Emails, phones, missing fields | `references/enrichment.md` | `lead-enricher` |
| Rank likelihood to buy | `references/scoring.md` | `intent-scorer` |
| LinkedIn notes, follow-up copy | `references/copy.md` + `references/slop-patterns.md` | `linkedin-copywriter` |
| Campaigns, lists, sends | `references/outreach.md` | `outreach-operator` |
| Read replies, who is interested | `references/replies.md` | `reply-agent` |
| Keep warm threads alive | `references/follow-up.md` | `follow-up-agent` |
| Qualify before calendar | `references/qualification.md` | `meeting-qualifier` |
| What converts | `references/pipeline.md` | `pipeline-analyst` |
| Run the whole motion | `references/routing.md` | `sales-manager` |

MCP tool map: `references/mcp.md`. Load it whenever you are about to call a Gojiberry tool and are unsure which one.

Multi-part requests load multiple modules in the handoff order below. Carry evidence forward.

## Default outbound chain

```
Signal Hunter
  → ICP Analyst
    → Account Researcher
      → Lead Enricher
        → Intent Scorer
          → LinkedIn Copywriter
            → Outreach Operator   (approval gate)
              → Reply Agent
                → Follow-up Agent
                  → Meeting Qualifier
```

Head of Sales sets the target **before** the chain. Sales Manager owns the chain. Pipeline Analyst reports after there is volume.

## Subagent fan-out

When subagents are available, parallelize. This is the difference between a 15-minute list and a 2-hour one.

**Find + filter** — spawn `signal-hunter` and have `icp-analyst` wait on its output; do not contact in this pass.

**Research a batch** — one `account-researcher` per account (cap 8 in parallel). You synthesise angles; never let a researcher write the outreach message.

**Copy a batch** — one `linkedin-copywriter` per cluster of similar angles (not one per lead unless the batch is ≤5). You run the de-slop pass on the merged set.

**Unibox triage** — `reply-agent` classifies; `follow-up-agent` and `meeting-qualifier` only receive the threads that match their job.

Rules for fan-out: give each subagent its exact reference slice, MCP tool names, and output schema; launch in one turn; never let a subagent send. If subagents are unavailable, walk the chain sequentially — the sequence is deliberate.

## Shared output standards

**Lists** are tables, not prose:

```
# [List] — [signal / ICP] — [date]
Source: Gojiberry MCP | Mode: propose | Count: N

| Name | Title | Company | Signal | ICP (Y/N + why) | Intent 0-100 | Angle | Next action |
```

**Messages** lead with the copy, reasoning after. One recommended note first, then a sharper test contrast.

**Reports** follow this skeleton:

```
# [Deliverable] — [subject]
[date] · Mode: propose|autonomous · Basis: [MCP / public web / user]

## The one thing
## Scorecard / Findings
## Do these first
## What's already working
## What I couldn't determine
```

Write reports to files (`outbound-[subject]-[date].md`) when the host can write files. These are documents people forward.

## Honesty spine — applies to every module

- **All scores are heuristics** unless the number came from Gojiberry intent data. Say which.
- **Never invent contact data.** If enrichment returns nothing, write `[NEED: email]` and keep moving. A plausible fake email is how you burn a domain and a relationship.
- **Never invent company news.** If you cannot verify a hiring round, a post, or a competitor mention, drop that angle.
- **Never claim a send you did not perform.** "Drafted" and "queued" and "sent" are different words. Use the right one.
- **Do not anchor** on ICP claims the user supplies if MCP data contradicts them. Form an independent read, then compare.
- **Say when the problem isn't outbound.** If the offer is weak or the ICP is a fantasy, more messages will not fix it.
- **Respect platform and legal limits.** LinkedIn connection notes stay short. No scraping credentials. No purchased lists dumped in blindly — run ICP + intent first.

## Module directory

```
references/
├── routing.md        Sales Manager playbook + chain
├── icp.md            Head of Sales + ICP Analyst
├── signals.md        Signal Hunter
├── research.md       Account Researcher
├── enrichment.md     Lead Enricher
├── scoring.md        Intent Scorer
├── copy.md           LinkedIn Copywriter
├── slop-patterns.md  AI-tell catalogue — run on all prose
├── outreach.md       Outreach Operator
├── replies.md        Reply Agent
├── follow-up.md      Follow-up Agent
├── qualification.md  Meeting Qualifier
├── pipeline.md       Pipeline Analyst
└── mcp.md            GojiberryAI MCP tool map
```

## Chaining

- "Find me 25 SaaS founders hiring SDRs" → signals → icp → research → enrich → score → copy. Stop. Show the pack.
- "Launch this" → outreach, only after the pack exists and the user approved.
- "Check replies" → replies → follow-up and/or qualification.
- "What's working" → pipeline, then head-of-sales if targeting should change.

When chaining, carry evidence forward.
