# Contract tracker schema

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.

Define the fields every SaaS contract line needs so the tracker stays
consistent across vendors and runs.

## Method
1. List required fields: vendor, annual cost, seat count, renewal
   date, owner, contract document link.
2. Specify the format for each field (currency, date, integer seat
   count).
3. Validate every row in `{{contract_sheet}}` against the schema
   before using it downstream.
4. Flag any row missing a required field rather than treating it as
   zero-cost or non-renewing.
5. Keep the schema versioned so adding a field doesn't silently break
   existing rows.

## Rules
- Never treat a missing renewal date or cost as "no action needed" —
  flag it as incomplete instead.
- Every contract row must link to its source document in
  `{{drive_folder}}` for later cross-check.
- Required field list and formats (set on first run, then stored in
  memory).
- Normalize currency figures to one currency before any cost
  comparison.

## Output
A validated row set: `{vendor, annual_cost, seats, renewal_date,
owner, doc_link, complete}`.
