deal-investigator — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited deal-investigator (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
For a single opportunity, produces a structured review answering five questions a CRO would ask in a deal review:
The output is a one-page deal memo, formatted for a deal review meeting.
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.
Invoke when the user says any of:
Do not invoke for:
forecast-call-prep)pipeline-hygiene-audit)opportunities.csv and identify the target opp by id or name.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):
__c, replace _ and . with space, drop noise tokens).header_tokens, subtracting for exclusion_tokens hits.value_fingerprint).Note the mapping in a one-line footnote at the bottom of the deal memo: Mapping: matched N of M required fields from <source>.
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.
Pull from the data source:
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.
Score each indicator. Each is a binary risk flag.
| Indicator | Risk if |
|---|---|
| Stale activity | days_since_last_activity > 14 |
| Missing next step | next_step is empty |
| Close date plausibility | close_date < today (already passed) or stage = Discovery with close < 60 days |
| Stage age vs typical | days in current stage > 1.5x average for that stage for this owner |
| Amount vs comparable | target amount > 2x typical comparable amount |
| Forecast category alignment | category = Commit or BestCase but probability < 40 |
| Owner calibration history | owner is "optimist" profile AND deal is in Commit |
Count the flags. 0-1 flags = healthy. 2-3 = at risk. 4+ = at high risk.
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]**close-won-analysis instead (planned future skill).See examples/sample_output.md for a worked example against an opp in the bundled Northwind Cloud dataset.
-- 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 20If stage history is needed and the org has the OpportunityHistory object, supplement with a query against that.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.