agentsclimarketplace

Deal investigator

Skill elijeangilles/revops-skills/skills/deal-investigator

Produce a structured deal review for a single opportunity. Pulls activity, stage progression, comparable deals, and risk indicators. Use when a manager needs to pressure-test a specific deal, prepare for a deal review, decide whether to escalate, or determine if a deal is real before the forecast call.From its SKILL.md

Install
npx -y skills add elijeangilles/revops-skills --skill deal-investigator

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

8.6 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it

Deal Investigator

What this skill does

For a single opportunity, produces a structured review answering five questions a CRO would ask in a deal review:

  1. Is this deal real?
  2. Is the close date credible?
  3. What is the actual risk?
  4. What do comparable deals tell us?
  5. What is the recommendation: commit, best case, omit, or escalate?

The output is a one-page deal memo, formatted for a deal review meeting.

Upstream context

This skill is typically invoked by salesforce-revops-audit once per flagged opportunity when the audit's Deal Integrity dimension surfaces individual deals with 3+ risk flags. It can also be run directly when a manager wants to pressure-test a specific deal they have in mind. Unlike the other skills in this pack, this one operates on a single opportunity, so the audit will recommend running it multiple times in sequence when multiple deals are flagged.

When to invoke

Invoke when the user says any of:

  • "investigate this deal"
  • "deal review for [opp name or id]"
  • "is this deal real"
  • "pressure-test [opp name]"
  • "deep dive on this opportunity"
  • "should we call this in commit"

Do not invoke for:

  • Full-team forecast prep (use forecast-call-prep)
  • Pipeline-wide hygiene scanning (use pipeline-hygiene-audit)
  • Multi-deal portfolio analysis

Data sources, in order of preference

  1. Salesforce MCP: query the specific opportunity, its account, recent activity, and comparable closed opportunities (SOQL in Appendix A).
  2. CSV or JSON: read opportunities.csv and identify the target opp by id or name.
  3. Sample data: bundled synthetic dataset, with the user providing an opp_id from the dataset.

Column discernment

Real Salesforce exports rarely match canonical names exactly. Custom suffixes (__c), renamed fields, and different cases are normal. Before parsing any data file, read docs/column_mapping.md and use it to map the export's actual headers to the canonical fields this skill needs.

Procedure (full detail in docs/column_mapping.md):

  1. Normalize each header in the export (lowercase, strip __c, replace _ and . with space, drop noise tokens).
  2. Score each header by token overlap against the canonical field's header_tokens, subtracting for exclusion_tokens hits.
  3. Confirm the top candidate with a value fingerprint (pull two or three sample rows and check the values against the catalog's value_fingerprint).
  4. If two headers tie above threshold, ask the user one question to disambiguate. If no header passes for a required field, ask the user to name the column. Do not guess.

Note the mapping in a one-line footnote at the bottom of the deal memo: Mapping: matched N of M required fields from <source>.

Process

Step 1: Identify the target opportunity

User provides either an opp ID (opp_0042), an account name ("Acme Industries"), or partial description ("the Acme renewal Diego is working on"). If ambiguous, list the top three matches and ask which one. If exact match, proceed.

Step 2: Gather the deal facts

Pull from the data source:

  • Opportunity name, account, owner, segment, amount, stage, probability, forecast category
  • Created date, close date, last activity date, days since last activity
  • Next step
  • Stage history if available
  • Activity history if available

Step 3: Identify comparable deals

Find 3-5 closed opportunities (won and lost) that share at least two of: same owner, same segment, similar amount band (within 50% of the target), same general industry signal from account name. These become the comparable set.

For each comparable, note: outcome (won/lost), days from creation to close, stage at which it was lost (if lost), final amount.

Step 4: Compute the risk indicators

Score each indicator. Each is a binary risk flag.

IndicatorRisk if
Stale activitydays_since_last_activity > 14
Missing next stepnext_step is empty
Close date plausibilityclose_date < today (already passed) or stage = Discovery with close < 60 days
Stage age vs typicaldays in current stage > 1.5x average for that stage for this owner
Amount vs comparabletarget amount > 2x typical comparable amount
Forecast category alignmentcategory = Commit or BestCase but probability < 40
Owner calibration historyowner is "optimist" profile AND deal is in Commit

Count the flags. 0-1 flags = healthy. 2-3 = at risk. 4+ = at high risk.

Step 5: Write the deal memo

Output using exactly this structure:

# Deal Review: [Account Name], [Opportunity Name]
[Opp ID] | [Owner] | [Segment] | $[Amount] | [Stage] | Close [date]

## The five questions

### 1. Is this deal real?
[2-3 sentences. State the position. "Yes, based on X." or "Maybe, but Y is missing." 
or "No, this looks like pipeline-padding."]

### 2. Is the close date credible?
[2-3 sentences. Compare the close date to typical deal cycle for this owner and 
this stage. Specify the realistic close date if the stated one is not credible.]

### 3. What is the actual risk?
[List the risk flags that fired, in order of materiality. Each one gets a single 
line. Do not pad.]

### 4. What do comparable deals tell us?
[2-3 sentences. State the owner's win rate on similar deals, the typical cycle 
length, and any common loss reason. Use the comparable set you identified.]

### 5. Recommendation
[Pick one: Commit, BestCase, Pipeline, or Omit. Then 1-2 sentences explaining 
the call. If Escalate, name who should drive it.]

## Deal facts
- Days in pipeline:                  N (created [date])
- Days in current stage:             N
- Days since last activity:          N
- Next step:                         [text or "MISSING"]
- Probability:                       N% (stage default: N%)
- Forecast category:                 [Pipeline / BestCase / Commit / Closed]

## Comparable deals
| Account | Amount | Outcome | Cycle | Notes |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |

## Risk indicators
- [✓ or ✗] Stale activity
- [✓ or ✗] Missing next step
- [✓ or ✗] Close date plausibility
- [✓ or ✗] Stage age vs typical
- [✓ or ✗] Amount vs comparable
- [✓ or ✗] Forecast category alignment
- [✓ or ✗] Owner calibration history

**Risk score: N flags. [Healthy / At risk / High risk]**

Step 6: Guardrails on the output

  • Do not soften the recommendation. If the call is Omit, say Omit. The manager needs the answer.
  • Do not list comparable deals if there are fewer than 2 in the dataset. Instead say "Insufficient comparable history for this owner / segment combination" and proceed.
  • Do not editorialize beyond what the data supports. Specifically, do not speculate on buyer intent, internal politics, or anything not in the data.
  • If the deal is in Closed Won, refuse the request and tell the user this skill is for open opportunities only. Offer close-won-analysis instead (planned future skill).
  • If the deal is in Closed Lost, refuse with the same message but offer a close-lost analysis instead.

What good output looks like

See examples/sample_output.md for a worked example against an opp in the bundled Northwind Cloud dataset.

What to avoid

  • Reasoning about things not in the data. If you do not know the competitor, do not speculate about competition.
  • Diplomatic recommendations. "It depends" is not a recommendation. Take a position.
  • Long preambles. Get to the five questions fast.
  • Restating the deal facts inside the prose. They are in the facts section at the bottom.

Appendix A: SOQL for Salesforce MCP

-- The target opportunity
SELECT Id, Name, Account.Name, OwnerId, Owner.Name, Amount, StageName,
       Probability, ForecastCategoryName, CloseDate, LastActivityDate,
       NextStep, CreatedDate, IsClosed, IsWon
FROM Opportunity
WHERE Id = '[OPP_ID]'

-- Recent activity on the target
SELECT Id, Subject, ActivityDate, OwnerId, WhatId
FROM Task
WHERE WhatId = '[OPP_ID]'
  AND ActivityDate >= LAST_N_DAYS:60
ORDER BY ActivityDate DESC

-- Comparable closed deals from same owner and segment
SELECT Id, Name, Account.Name, Amount, StageName, CloseDate, CreatedDate, IsWon
FROM Opportunity
WHERE OwnerId = '[OWNER_ID]'
  AND IsClosed = true
  AND CloseDate = LAST_N_DAYS:365
ORDER BY CloseDate DESC
LIMIT 20

If stage history is needed and the org has the OpportunityHistory object, supplement with a query against that.

What ships with it: 1 file

2.1 KB alongside SKILL.md

examples/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.