跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

procurement-optimizer

Cut software and services spend through seat-utilisation analysis, redundant-tool detection, and renewal-timing leverage. Use when auditing SaaS spend, preparing a renewal negotiation, or hunting a budget-reduction target.

文档与办公883business-operations/procurement-optimizer/SKILL.md

安装

把这段话发给 Claude Code、Codex 或 Cursor。智能体会先检查安全性,你确认后才安装。

读取 https://funcoding.ai/skills/borghei/claude-skills/procurement-optimizer/install.md ,按里面的步骤帮我安装这个 Skill。

SKILL.md

Procurement Optimizer

Most software spend reduction is not a negotiation problem. It is a measurement problem: organisations buy seats in round numbers, assign them generously, and never look at whether anyone logs in. The typical mid-size portfolio carries 20-30% reclaimable seat spend before anyone talks to a vendor, and the reclaim requires no concession from the vendor at all.

This skill works the levers in order of yield: stop paying for unused seats, then stop paying twice for the same capability, then negotiate price. Reversing that order — leading with a price negotiation on a bloated contract — is how organisations congratulate themselves on a 10% discount against 40% more seats than they need.

When to use this skill

  • A budget-reduction target has landed and software spend is in scope
  • A renewal is approaching and you need a defensible position before the vendor call
  • SaaS sprawl audit: nobody can say how many tools the company pays for
  • Post-merger consolidation where two portfolios overlap heavily
  • Building a renewal calendar so contracts stop auto-renewing unexamined
  • A vendor has proposed an uplift and you need leverage to counter it

Inputs the skill expects

  • Spend inventory: tool, category, annual cost, renewal date, contract term
  • Seat data: purchased, assigned, and — critically — active in the last 30 days
  • Contract terms: notice period, auto-renew flag, term length
  • Criticality per tool, and whether a capability alternative exists
  • Headcount, for per-head benchmarking
  • The as-of date, so renewal-window maths is reproducible

Clarify First

Before generating, confirm these inputs. If any is unknown or vague, ASK — do not assume:

  • Whether seat data is assigned or active — this is the single most consequential input. Assigned seats overstate usage by 30-60%, and an analysis built on them finds almost nothing
  • Notice periods and auto-renew flags — a contract inside its notice window is committed for another full term, so its "savings" are not available this cycle and must not be counted toward a target
  • Whether the goal is in-year cash or run-rate reduction — seat cuts at renewal reduce run-rate but may deliver nothing this fiscal year, which is the wrong answer to an in-year cash problem
  • Which tools are politically untouchable — if the CRM is the CRO's and cannot be cut, that changes which opportunities are worth analysing at all

Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.

Workflows

Workflow 1 — Find the wasted seats

Start here always. It requires no vendor conversation and no cross-team negotiation.

  1. Assemble the inventory with purchased / assigned / active-30-day seat counts. If you only have assigned counts, stop and get active counts — the analysis is not meaningful without them.
  2. Run the analyser. It compares active utilisation against a per-category benchmark (an LMS is not used weekly; a CRM is) and sizes reclaimable spend with a 12% safety buffer.
  3. Separate the two failure modes it reports. Over-licensed means cut seats. Adoption failure means seats are assigned to people who never log in — cutting seats there treats the symptom, and the tool may simply not deserve to survive.
python3 business-operations/procurement-optimizer/scripts/license_utilization_analyzer.py \
  --input business-operations/procurement-optimizer/assets/sample_spend.json --format text

Workflow 2 — Find the tools you are paying for twice

  1. Run the overlap detector. It groups by category and picks a survivor by displacement cost, not by price — moving 400 active users is expensive regardless of licence cost.
  2. Check the umbrella-label warnings first. If it flags a category as an umbrella, your tagging is claiming that a wiki and a chat tool are substitutes. Re-tag by the job the tool does and re-run before believing any number in the output.
  3. Treat the recovery figure as net of an assumed 20% migration cost. Consolidations that look marginal at 20% are usually negative in reality once you count the disruption.
python3 business-operations/procurement-optimizer/scripts/tool_overlap_detector.py \
  --input business-operations/procurement-optimizer/assets/sample_spend.json --format text

Workflow 3 — Rank the opportunities against the renewal calendar

  1. Run the ranker with an explicit --as-of. It discounts each opportunity by how much leverage the renewal timing actually gives you this cycle.
  2. Work the shortlist top-down. Time-boxed items (inside the notice window or in the ideal T-120 to T-90 negotiation window) are promoted above higher-ROI items on distant renewals, because missing a window costs a full contract year.
  3. Read the locked_this_cycle figure to leadership before committing to a savings number. It is the portion of the opportunity that is genuinely unavailable this year, and discovering it after committing to a target is a bad conversation.
python3 business-operations/procurement-optimizer/scripts/savings_opportunity_ranker.py \
  --input business-operations/procurement-optimizer/assets/sample_spend.json \
  --as-of 2026-07-21 --top 10 --format text

Decision frameworks

Active seats in the last 30 days, divided by seats purchased. A single flat benchmark is the most common analytical error here — it flags an LMS as catastrophically wasteful when quarterly use is its normal pattern.

CategoryHealthy active utilisationWhy
Security / identity90%Near-universal deployment; unused seats are pure waste
CRM, chat, support desk85%Daily-use tools with a defined user population
Developer tools80%Daily use, but contractor churn creates real slack
Finance systems80%Small, well-defined user set
Design70%Licence-heavy tools with occasional-use viewers
Product analytics60%Genuine long tail of occasional queriers
Legal / contract tools55%Episodic use by a small team
Knowledge base50%Read-heavy; many users read without a seat action
Whiteboard40%Bursty, workshop-driven usage
LMS / HR training40%Quarterly or annual cadence by design

Renewal timing and leverage [PROVEN]

WindowLeverageWhat to do
T-180d and earlierLowToo early. Vendors will not discount against a distant renewal. Calendar the opening
T-120d to T-90dHighestThe ideal window. Open here. You have time to run an alternative evaluation, and the vendor's quarter-end pressure is still ahead of them
T-90d to T-60dModerateWorkable, but expect to trade term length for price
T-60d to notice deadlineLowServe notice to preserve optionality even if you intend to renew. Notice is not termination
Inside notice on auto-renewNoneCommitted for another term. Plan the next cycle

The most valuable single practice in software procurement is serving notice by default on every auto-renewing contract at the notice deadline. It converts an automatic renewal into a negotiation and costs nothing — vendors do not walk away from customers who serve notice, they schedule a call. Organisations that do not do this are negotiating with no alternative and the vendor knows it.

Which lever to pull

SituationLeverTypical yield
Utilisation below benchmarkSeat reduction at renewal20-40% of that contract
Utilisation healthy, price above marketPrice concession5-12%
Two tools, same job, both under-usedConsolidation60-80% of the displaced tool, net of migration
Seats assigned but nobody logs inFix adoption or kill the tool0% or 100% — there is no middle
Multi-year term offered for a discountUsually declineSee the anti-pattern below

Anti-Patterns

Counting Assigned Seats as Usage

Mistake: Building the utilisation analysis on seats assigned rather than seats active. Why it happens: Assigned counts are what admin consoles show on the front page; active counts often require an export or an API call. Instead: Insist on 30-day active counts before running any analysis. Assigned seats overstate real usage by 30-60% in typical portfolios, which is precisely the range of the savings you are looking for — an analysis on assigned seats finds nothing and concludes the portfolio is efficient.

The Multi-Year Discount Trap

Mistake: Accepting a 15% discount for a three-year commitment on a tool with 40% unused seats. Why it happens: The discount is concrete, immediate, and easy to report as a win. The locked-in waste is diffuse and shows up in someone else's quarter. Instead: Right-size the seat count first, then evaluate the multi-year offer against the corrected baseline. A 15% discount on 40% too many seats is a 26% price increase wearing a discount's clothing. Multi-year terms are worth taking only on tools you are certain of, where utilisation is already healthy, and where the discount exceeds 20%.

Negotiating Without Serving Notice

Mistake: Opening a renewal conversation while the contract is set to auto-renew. Why it happens: Serving notice feels adversarial, and nobody wants to trigger an escalation with a vendor they intend to keep. Instead: Serve notice at the deadline as standard practice on every auto-renewing contract. It is a procedural step, not a threat, and vendors treat it as one. Without it you have no alternative to the renewal and no leverage, and the vendor's account team knows your notice window better than you do.

Consolidating on Price Instead of Displacement Cost

Mistake: Keeping the cheaper of two overlapping tools. Why it happens: The licence cost is the visible number and the comparison is easy. Instead: Keep the tool with more active users and higher criticality, even if it costs more. Migrating 400 active users costs far more in lost productivity and support load than the annual licence difference — and consolidations that displace the incumbent frequently fail outright, leaving you paying for both tools plus the migration.

Counting Locked Savings Toward This Year's Target

Mistake: Reporting the full portfolio opportunity as the savings commitment. Why it happens: The gross number is bigger, and renewal-window nuance is hard to explain. Instead: Report gross opportunity, realisable-this-cycle, and locked separately. Contracts inside their notice window on auto-renew are committed for another full term; their savings are real but arrive next year. Committing to a number that includes them guarantees a miss, and it is a miss you can see coming from the day you commit.

Files

FilePurpose
scripts/license_utilization_analyzer.pyScores seat utilisation against category benchmarks and sizes reclaimable spend
scripts/tool_overlap_detector.pyGroups the portfolio by category, picks consolidation survivors by displacement cost, flags umbrella labels
scripts/savings_opportunity_ranker.pyRanks opportunities by ROI per day, discounted by renewal-window leverage; builds the renewal calendar
references/saas-negotiation-levers.mdNegotiation levers, vendor tactics and counters, discount benchmarks, contract clauses
references/utilization-benchmarks.mdPer-category benchmarks, spend-per-head ranges, measurement methodology
assets/spend-audit-report-template.mdReport template for presenting findings and a committed savings number
assets/renewal-negotiation-brief.mdPre-call brief template: position, targets, walk-away, concession ladder
assets/sample_spend.jsonRunnable inventory used by all three scripts

相似的 Skill

pdf
anthropics/skills180k

pdf

Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.

文档与办公

discernment-nudge
anthropics/skills180k

discernment-nudge

After you give a substantive answer or draft that the user may act on — advice or recommendations, drafted artifacts such as goals, plans, pitches, proposals, or emails, estimates or projections, analysis or interpretation of data, factual claims they may rely on, or a multi-step argument — invoke this skill BEFORE finalizing your reply and then, if it applies, append 2-3 short follow-up questions, each tied to something specific in what you just produced, that help the user check key facts, probe the reasoning or assumptions, and notice missing context. Do this at most once per conversation. Skip it when the user asked a trivial how-to or simple lookup, wants a purely educational explanation, asked you only to format, convert, or assemble a file from content they provided, is writing code they will run, is doing creative writing or casual chat, or already asked you to double-check, cite, or review — the skill file explains these boundaries and the exact output format.

文档与办公

doc-coauthoring
anthropics/skills180k

doc-coauthoring

Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.

文档与办公

docx
anthropics/skills180k

docx

Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files) or Word templates (.dotx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', '.dotx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx or .dotx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.

文档与办公

pptx
anthropics/skills180k

pptx

Use this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates (.potx), layouts, speaker notes, or comments. Trigger whenever the user mentions "deck," "slides," "presentation," or references a .pptx or .potx filename, regardless of what they plan to do with the content afterward. If a .pptx or .potx file needs to be opened, created, or touched, use this skill.

文档与办公

canvas-design
anthropics/skills180k

canvas-design

Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.

文档与办公