Install
$ agentstack add skill-elijeangilles-revops-skills-deal-investigator ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
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:
- Is this deal real?
- Is the close date credible?
- What is the actual risk?
- What do comparable deals tell us?
- 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
- Salesforce MCP: query the specific opportunity, its account, recent activity, and comparable closed opportunities (SOQL in Appendix A).
- CSV or JSON: read
opportunities.csvand identify the target opp by id or name. - 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):
- Normalize each header in the export (lowercase, strip
__c, replace_and.with space, drop noise tokens). - Score each header by token overlap against the canonical field's
header_tokens, subtracting forexclusion_tokenshits. - Confirm the top candidate with a value fingerprint (pull two or three sample rows and check the values against the catalog's
value_fingerprint). - 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 .
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.
| Indicator | Risk if | |---|---| | Stale activity | dayssincelastactivity > 14 | | Missing next step | nextstep is empty | | Close date plausibility | closedate 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 = LASTN_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 = '[OWNERID]' AND IsClosed = true AND CloseDate = LASTN_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.
## Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- **Author:** [elijeangilles](https://github.com/elijeangilles)
- **Source:** [elijeangilles/revops-skills](https://github.com/elijeangilles/revops-skills)
- **License:** MIT
- **Homepage:** https://revopseval.com
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.