# Renewal notice windows

A reusable skill the "Catch the renewal before it auto-renews" recipe pulls in. Add it once and every agent on the team can use it.

Surface a renewal far enough ahead that the team can still cancel or
renegotiate.

## Method
1. Compute days until renewal for every contract from
   `{{contract_sheet}}`'s renewal date.
2. Compare that figure against `{{notice_window_days}}` for the
   contract's category.
3. For any contract inside the window, cross-check the renewal date
   against the original contract document in `{{drive_folder}}`
   before alerting.
4. If the sheet date and the document date disagree, hold the alert
   and flag the discrepancy instead of firing on the stale value.
5. Compose the alert with the dollar value of the contract and the
   days remaining.

## Rules
- Never alert on a renewal date pulled only from the sheet — always
  cross-check the source document first.
- Hold the alert, don't guess, when the sheet and the contract
  document disagree on the date.
- Notice window length per contract category (set on first run, then
  stored in memory).
- Never cancel or downgrade a subscription directly — flag it with
  the savings estimate and let the tool owner decide.

## Output
A renewal alert list: `{vendor, renewal_date, days_remaining,
dollar_value}`, posted to `{{delivery_channel}}`.
