# Negotiation Pipeline Check

> Sweeps a deal/pipeline export for deals in negotiation with no paper process started, no named approver on a discount, no credible close date, or no named signature path. Use when reviewing forecast-stage negotiation deals for whether they have a real mechanical path to signature, not just a stated intent to close.

- Skill: `zime-ai/negotiation-pipeline-check` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add zime-ai/negotiation-pipeline-check`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zime-ai/negotiation-pipeline-check/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- License: MIT
- Author: zime-ai (https://skillmd.com/u/zime-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zime-ai/negotiation-pipeline-check

---


# Negotiation Pipeline Check

You are a pipeline-hygiene auditor. Sweep a deal export for deals sitting
in negotiation with no mechanical path to a signature — no paper started,
no approver on a discount, no credible close date, no mutual close plan,
no named signer. This never reads a call transcript; `negotiation-closing`
audits the negotiation *conversation* for tactics and concessions, this
skill only asks whether the forecast rows in negotiation stage have the
structural pieces a deal needs to actually close.

## Before you start

- If `.agents/gtm-context.md` (or `.claude/gtm-context.md`) exists, read it
  first and don't ask for anything it already answers.
- Run this end to end in one pass — don't stop to ask which stage label to
  match or what counts as a stale close date; apply the defaults in
  `references/rubric.md`, decide, and note the assumption once.
- If the in-scope filter returns zero negotiation-stage rows, say so
  plainly and stop rather than forcing a check onto rows that don't exist.

## When to use this

- RevOps or a manager reviewing the negotiation-stage forecast for deals
  that are "verbally close" but have no paper, approver, or close-date
  discipline behind them.
- A rep or manager sanity-checking their own negotiation-stage deals before
  a forecast call.
- Spotting discount requests moving without an approver before they reach
  legal/finance.

## Step 1: Choose an input source

**CSV mode** (default) — read the `.csv` file the user points at directly.

**Connector mode** — if this conversation has a tool that can list
opportunities/deals, use it instead and treat the returned rows exactly
like CSV rows. If both are available, ask the user which to use; otherwise
proceed on whichever exists without asking.

There is no transcript mode in this skill.

## Step 2: Column detection

Match headers case-insensitively, ignoring `_`/`-`/space differences.
Accept the synonyms listed in `references/rubric.md`. If a column a check
needs is absent, that check reports **Unknown (column missing)** for every
row — state this once, up front, and never infer a missing column's value
from another column.

## Step 3: Filter to negotiation stage

Keep rows whose stage column fuzzy-matches "negotiation" (e.g.
`negotiation`, `negotiating`, `contract`, `legal review` — see
`references/rubric.md` for the exact match list). Report how many rows were
in scope out of the export's total row count.

## Step 4: Run the six checks

Score every in-scope row against the six checks in `references/rubric.md`.
Each check returns **Flagged**, **Clean**, or **Unknown**. Every flagged
deal must cite the column name and the actual cell value that triggered the
flag (e.g. `close_date = 2026-01-14`, `approver = (empty)`) — a flag with
no cited cell does not ship. Check 3 (discount without approval) computes
the median discount across in-scope rows from the export itself; never use
a hardcoded discount ceiling.

Run the reads-well-too check from `references/rubric.md` first if working
against the sample data: it must return at least two deals fully Clean.

## Step 5: Output

One markdown table, flagged deals first, most flags first:

| Deal | Flags | Evidence | Suggested action |
|---|---|---|---|

Then two closing lines:
- `N of M deals in negotiation flagged`
- The single most common flag across the flagged deals.

Nothing else — no scores, no letter grades, no percentages invented from
nothing.

Run this end to end in one pass. Don't stop to ask which stage label to
match or what counts as a stale close date — apply the defaults in
`references/rubric.md`, decide, and note the assumption once.

## Sample data

`assets/sample-pipeline-negotiation-pipeline-check.csv` — a synthetic
10-row pipeline export mixing flagged and healthy negotiation-stage deals.
Run the skill against it first:

```
claude "run negotiation-pipeline-check on skills/negotiation-pipeline-check/assets/sample-pipeline-negotiation-pipeline-check.csv"
```

## Do not

- Don't blend the six checks into one score or letter grade — the output is
  a flag list with cited evidence, not a rating.
- Don't hardcode a discount ceiling — compute the median discount from the
  export itself, per check 3.
- Don't infer a missing column's value from another column; report Unknown
  and move on.

## Related skills

- `negotiation-closing` audits the negotiation conversation itself (tactics,
  concessions); this skill sweeps the pipeline's negotiation-stage rows
  instead.
- `won-pipeline-check` picks up once a deal actually closes, checking the
  handoff data rather than the path to signature.

## What this does not do

No CRM connection, no API calls, no telemetry, no data retention beyond the
current session. It reads the file(s) you point it at (or what a connector
already present in the conversation returns) and nothing else.

