Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when reviewing a specific inbound deal before close — when sales has asked for a discount that exceeds AE authority, when the customer has redlined the MSA, when per-deal economics (margin after discount, multi-year payment shape, indemnity exposure) need to be quantified, or when discount approval needs to be routed to a named human approver (Sales Director, VP Sales, CFO, CRO, General Counsel). Covers deal review, discount approval routing, per-deal margin scoring, deal exception handling,
.claude/skills/alirezarezvani-deal-desk/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-25 | ✗→✓ | ▲ Improved | 570% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 128% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 108% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 65% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 321% | 0% |
Per-deal review and discount-approval routing. Scores deal margin + risk, routes discount approval to the right human, redlines T&Cs against commercial policy. Never auto-approves. Every output is a score plus a routing recommendation to a named human approver.
Deal Desk / RevOps / sales leadership live at the moment between sales-team-asks-for-discount and CFO/CRO/legal-signs. This skill quantifies the asks and routes them.
Three deterministic tools:
deal_scorer.py — Scores a deal 0-100 across 5 dimensions (margin, risk, strategic value, commercial fit, term shape) and assigns one of four verdicts: APPROVE / REVIEW / ESCALATE / DECLINE — each tied to a named approver chain.discount_approval_router.py — Maps a discount-percent + deal-size + tier to a named approver chain (AE → Manager → Director → VP → CFO/CRO) with estimated cycle days. Honors industry-tuned policy bands.terms_redliner.py — Detects 10 founder/seller-killer patterns in deal terms (uncapped indemnity, MFN, perpetual license-back, missing DPA, NET-60+, broad non-solicit, etc.) with severity + standard counter + named legal/commercial approver.Invoke this skill when:
Do NOT use this skill to: author the proposal (use business-growth/contract-and-proposal-writer), redesign the discount matrix (use the commercial-policy sibling skill), or do deep legal redline of full contract text (use c-level-advisor/skills/general-counsel-advisor).
assets/deal_intake_template.md with ARR, term, discount, payment terms, customer tier, strategic flags, and any customer-flagged term redlines (20-min fill-out).deal_scorer.py --input deal.json --profile {saas|enterprise-software|services|marketplace}. Read the composite + per-dimension breakdown + verdict.discount_approval_router.py --input deal.json --profile <same>. Get the named approver chain + estimated cycle days. Modifiers (enterprise floor, SMB fast-lane) are surfaced explicitly.terms_redliner.py --input deal_terms.json. Get ranked CRITICAL/HIGH/MEDIUM/LOW findings with the counter-language and the approver who must sign each.| Script | Purpose | Industry profiles | |---|---|---| | scripts/deal_scorer.py | 5-dimension scorecard with verdict + chain | saas, enterprise-software, services, marketplace | | scripts/discount_approval_router.py | Discount % → named approver chain + cycle days | saas, enterprise-software, services, marketplace | | scripts/terms_redliner.py | 10-pattern landmine scanner with counters | n/a (terms-driven) |
All three: stdlib-only, --help, --sample, --input <json>, --output {human,json}.
references/deal_desk_canon.md — Deal-desk operating practice: SaaStr playbooks (Jason Lemkin), Winning by Design (van der Kooij + Reichl), Forrester research, RevOps Co-op, OpenView benchmarks, Bridge Group AE comp, Salesforce Deal Desk best practices.references/discount_economics.md — Discount math + LTV impact: David Skok (For Entrepreneurs), Bessemer State of the Cloud, Tomasz Tunguz, OpenView NRR research, Pacific Crest + KeyBanc SaaS surveys, Insight Partners revenue ops. Includes worked margin math (a 30% discount on an 80% gross-margin product loses 37.5% of margin, not 30%).references/contract_landmines.md — 10+ named landmine patterns with example counter-language: YC startup library, Robert Klingberg (Founder's Guide to SaaS Agreements), Bowman + Brooke redline guides, IACCM/WorldCC commercial management research, Practical Law contracts library, Bradley Tusk on enterprise contracts, GC100 guidance.commercial-policy sibling skill for policy design.policy_thresholds in the input JSON to override.score_deal() and are easy to tune.APPROVE) names the human(s) who must sign. The output is a recommendation.UNCAPPED_INDEMNITY is still a DECLINE — critical signals override composite.c-level-advisor/skills/general-counsel-advisor/scripts/contract_risk_scanner.py.commercial/skills/pricing-strategist.| Sibling | Scope | Difference | |---|---|---| | commercial/skills/pricing-strategist | Sets the pricing model (per-seat vs usage vs tiered, list prices, packaging) | Operates at the strategy layer — not per deal | | business-growth/contract-and-proposal-writer | Authors proposals, SOWs, MSAs | Output is a document; deal-desk is the gate before signing | | commercial/skills/commercial-policy (sibling) | Designs the discount matrix and approval thresholds | Deal-desk applies that policy to one deal at a time | | c-level-advisor/skills/general-counsel-advisor | Deep legal redline + term-sheet analysis | Operates on full contract prose; deal-desk uses structured terms JSON | | c-level-advisor/skills/cfo-advisor | Burn rate, unit economics, fundraising models | Strategic finance; deal-desk is one-deal granularity |
bash# Score a deal python3 scripts/deal_scorer.py --sample python3 scripts/deal_scorer.py --input my_deal.json --profile enterprise-software # Route the discount python3 scripts/discount_approval_router.py --sample python3 scripts/discount_approval_router.py --input my_deal.json --profile saas # Flag the redlines python3 scripts/terms_redliner.py --sample python3 scripts/terms_redliner.py --input my_deal_terms.json --output json
The sample (a 28%-discount enterprise SaaS deal with uncapped indemnity + MFN) correctly DECLINEs at 52.7 / 100 composite — the 28% discount destroys 35.9% of the deal's margin dollars under fixed COGS — and routes to AE → Deal Desk → VP Sales → CFO → CRO → General Counsel.
Walked one at a time by /cs:grill-commercial or the Commercial orchestrator. Recommended answer + canon citation per question. Never bundled.
Recommended: model both. Refuse to approve until the AE can articulate the precedent risk. Canon: David Skok (For Entrepreneurs — discount math), Tomasz Tunguz benchmarks. Anti-pattern: one 40% precedent reshapes 3 quarters of pipeline.
Recommended: if outside, surface the policy exception explicitly and route to the named exception approver. Canon: OpenView discount benchmarks, RevOps Co-op playbooks.
Recommended: require a named, verifiable expansion or reference commitment in writing. Canon: SaaStr (Jason Lemkin) on logo discounts; Winning by Design on commitment language.
Recommended: required. Uncapped indemnity is a critical-signal override that blocks APPROVE regardless of margin. Canon: WorldCC (formerly IACCM) commercial management research, GC100 contract guidance.
Recommended: prefer NET-30; NET-45+ is a cash flow drag worth quantifying. Canon: KeyBanc SaaS Survey, Pacific Crest data — every 15 days of payment terms costs ~2% of effective deal value.
Recommended: multi-year prepay > annual prepay > annual auto-renew. Auto-renew without 60-day notice is a redline. Canon: Salesforce Deal Desk best practices, OpenView NRR studies.
Recommended: surface the name, not just the role. "VP Sales" is not an approver; "Maria Singh, VP Sales" is. Canon: Bridge Group SaaS AE compensation research — named approval reduces precedent drift by 50%+.
Walk depth-first. Lock 1-4 before opening 5-7. After all 7 are answered, invoke deal_scorer.py → discount_approval_router.py → terms_redliner.py in sequence.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-24 | fail→fail | 16,636 | 22,781 | +37% | 1 | 1 | 0% | 3,128 | 7,019 | +124% | 0 | 0 | — |
case-25 | fail→pass | 3,656 | 9,196 | +152% | 1 | 1 | 0% | 682 | 4,571 | +570% | 0 | 0 | — |
case-01 | fail→fail | 23,341 | 28,530 | +22% | 1 | 1 | 0% | 4,100 | 7,280 | +78% | 0 | 0 | — |
case-02 | fail→fail | 32,715 | 25,144 | -23% | 1 | 1 | 0% | 2,666 | 6,736 | +153% | 0 | 0 | — |
case-03 | fail→fail | 10,274 | 5,273 | -49% | 1 | 1 | 0% | 1,819 | 2,915 | +60% | 0 | 0 | — |
case-04 | fail→pass | 12,402 | 10,926 | -12% | 1 | 1 | 0% | 2,011 | 4,582 | +128% | 0 | 0 | — |
case-14 | fail→pass | 10,610 | 6,482 | -39% | 1 | 1 | 0% | 1,776 | 3,686 | +108% | 0 | 0 | — |
case-05 | pass→pass | 9,381 | 7,525 | -20% | 1 | 1 | 0% | 2,041 | 4,165 | +104% | 0 | 0 | — |
case-06 | fail→pass | 12,128 | 4,538 | -63% | 1 | 1 | 0% | 2,125 | 3,500 | +65% | 0 | 0 | — |
case-07 | pass→pass | 7,974 | 9,565 | +20% | 1 | 1 | 0% | 1,261 | 4,126 | +227% | 0 | 0 | — |
case-08 | fail→pass | 3,993 | 1,699 | -57% | 1 | 1 | 0% | 695 | 2,923 | +321% | 0 | 0 | — |
case-09 | fail→pass | 4,007 | 3,161 | -21% | 1 | 1 | 0% | 688 | 2,860 | +316% | 0 | 0 | — |
case-10 | fail→pass | 5,731 | 1,849 | -68% | 1 | 1 | 0% | 999 | 2,922 | +192% | 0 | 0 | — |
case-11 | fail→pass | 15,371 | 13,518 | -12% | 1 | 1 | 0% | 2,559 | 4,955 | +94% | 0 | 0 | — |
case-12 | fail→pass | 12,838 | 5,495 | -57% | 1 | 1 | 0% | 2,445 | 3,594 | +47% | 0 | 0 | — |
case-13 | fail→pass | 11,804 | 7,124 | -40% | 1 | 1 | 0% | 1,922 | 3,766 | +96% | 0 | 0 | — |
case-15 | pass→pass | 10,474 | 6,905 | -34% | 1 | 1 | 0% | 1,908 | 3,916 | +105% | 0 | 0 | — |
case-16 | pass→pass | 13,410 | 13,135 | -2% | 1 | 1 | 0% | 2,266 | 4,708 | +108% | 0 | 0 | — |
case-17 | fail→pass | 8,484 | 7,249 | -15% | 1 | 1 | 0% | 1,345 | 3,917 | +191% | 0 | 0 | — |
case-18 | pass→pass | 12,404 | 7,896 | -36% | 1 | 1 | 0% | 2,114 | 4,055 | +92% | 0 | 0 | — |
case-19 | fail→pass | 8,640 | 3,305 | -62% | 1 | 1 | 0% | 1,431 | 3,248 | +127% | 0 | 0 | — |
case-20 | fail→pass | 13,133 | 5,172 | -61% | 1 | 1 | 0% | 2,283 | 3,634 | +59% | 0 | 0 | — |
case-21 | fail→pass | 11,323 | 9,907 | -13% | 1 | 1 | 0% | 1,938 | 4,350 | +124% | 0 | 0 | — |
case-22 | fail→pass | 6,711 | 2,360 | -65% | 1 | 1 | 0% | 1,150 | 3,069 | +167% | 0 | 0 | — |
case-23 | fail→pass | 28,740 | 6,887 | -76% | 1 | 1 | 0% | 6,190 | 4,092 | -34% | 0 | 0 | — |
case-26 | fail→fail | 15,688 | 17,728 | +13% | 1 | 1 | 0% | 2,922 | 5,705 | +95% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 26 cases were attempted, and 25 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +62 percentage points is the difference between those two pass rates over the 25 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.