---
name: contract_renewal_radar
description: "Run a calendar-driven vendor contract renewal system: build a renewal register, compute the real decision deadline (renewal date minus notice period), audit usage against spend, model savings from your own numbers, and prep renegotiation before auto-renewal locks you in. Triggers when someone mentions contract renewals, auto-renewal, notice deadlines, vendor renegotiation, SaaS renewals coming due, or wants to stop paying for contracts nobody reviewed."
---

# Contract Renewal Radar

## Purpose

Auto-renewal is the default way contracts survive without a decision. The renewal date printed in the contract is not the deadline that matters. The deadline that matters is the notice date: renewal date minus the notice period. Miss it and the exit right is gone, along with any seat cuts or price talks you planned to have.

This skill turns a contract list into a running system: one register, decision deadlines computed for every contract, tiered alerts ahead of each deadline, a usage versus spend audit at the right moment, a savings model built from the register's own numbers, and ready negotiation scripts. A one-off list of upcoming renewals goes stale in a month. The calendar system does not, because every renewed contract re-enters the register with its new deadline the day it signs.

## Workflow

1. **Build the register.** One row per contract in a CSV with these fields: vendor, contract, owner, backup_owner, annual_value, renewal_date (YYYY-MM-DD), notice_days, auto_renew, seats_paid, seats_active, proposed_increase_pct, risk (high or standard). Every contract gets a named owner and a backup. A contract with no owner is flagged at risk until one is set. Pull notice_days and the required notice method from the contract text itself, never from the invoice or the vendor's sales summary. A sample register sits at `references/sample-register.csv`.

2. **Compute decision deadlines.** Run the radar tool:

   `python3 bin/renewal_radar.py register.csv --as-of YYYY-MM-DD`

   It prints each contract sorted by decision deadline, with a tier (MISSED, CRITICAL, URGENT, WATCH, TRACKED), seat utilisation, and addressable value. Use `--format json` when another tool or a calendar import needs the data. The tool sets a work_start date for each contract: 90 days before the decision deadline for high risk contracts, 45 days for standard ones. Audits and negotiations happen between work_start and the deadline, not after the deadline.

3. **Run the radar on a cadence.** Monthly for the full register, weekly for anything in CRITICAL or URGENT. At each run, check acknowledgment: the owner confirms they have seen their contracts in WATCH or worse. No acknowledgment within a few days means the backup owner gets it, then the team lead. Test the cadence quarterly with one sample contract to confirm alerts still reach real people.

4. **Audit usage versus spend at work_start.** Follow the audit checklist in `references/negotiation-and-audit.md`: paid versus active seats at 30 and 90 days, feature use by tier, seats held by people who left, overlapping tools, SLA and support record, and at least one real alternative. Write the one-page renewal brief from the findings: current value, used value, addressable value, target outcome, walk-away point, approver.

5. **Model the savings from your own numbers only.** Addressable value per contract is unused seat value (annual value times the unused share of seats) plus the cost of the proposed increase (annual value times the increase percentage). Report the two parts separately. Never quote industry waste percentages as if they were this team's savings. If seats or usage data are missing, say the model is partial and name what is missing.

6. **Negotiate inside the window.** Open with the script in `references/negotiation-and-audit.md`, anchored on the usage data. Work the decision options in order: cancel, rightsize, renew flat, renew with better terms, or extend short. Ask for the proposal at least 10 business days before the decision deadline so there is time to give notice if it falls short.

7. **Protect the exit right.** If talks are not settled as the decision deadline approaches, send protective notice using the template in the reference file, following the notice method the contract requires, and keep proof of delivery. Notice preserves options. Silence removes them.

8. **Handle a miss honestly.** If a deadline already passed, read the renewed term and early termination terms before assuming anything, ask for a negotiated exit or short extension, log what the miss cost, and enter the next decision deadline into the register the same day.

9. **Close the loop on signing.** Every renewed contract goes back into the register immediately with its new renewal date, new notice period, new value, and any cap or term won in writing. The radar is only trustworthy if signing a contract and updating the register are the same task.

## Output Contract

Each radar run produces:

- A table sorted by decision deadline: tier, vendor, decision deadline, renewal date, annual value, seat utilisation, addressable value, owner, and the action due now.
- A total: annual value at stake and total addressable value, split into unused seat value and proposed increase cost when reporting in prose.
- A missed-deadline section when any contract is MISSED, stating that exit now needs vendor agreement and naming the next step per contract.
- For any contract inside its work window, a renewal brief: usage findings, target outcome, walk-away point, approver, and the date a vendor proposal is due.

## Operating Rules

- The contract text is the source of truth for notice periods, notice methods, renewal terms, and price clauses. If the text is not available, mark the field unverified and say so in the report. Do not fill gaps from memory or from a vendor's summary.
- Never invent benchmarks, savings percentages, dates, or clause terms. Savings figures come from the register's own numbers, computed by the tool or shown as arithmetic the reader can check.
- A price fight without usage data is a guess. Finish the audit before opening negotiation, unless the deadline forces protective notice first, in which case notice goes out and the audit follows.
- Do not recommend multi-year terms as a default discount move. A longer term trades away the next decision deadline, which is the asset this whole system exists to protect. Only take it when the cap and the exit terms are written down and the usage case is stable.
- This skill is process and negotiation support, not legal advice. Flag contracts with high value, personal data, SLA penalties, or liability exposure for legal review, and say plainly when a clause question needs a lawyer.
- Keep the register free of secrets: no credentials, no personal data beyond owner names used for routing, no full contract text. The register is an operational list, not an archive.
