# Transaction Milestone Tracking

Turn a signed contract into a dated board of milestone tasks and escalate anything at risk of missing its deadline. This keeps contract-to-close moving without anyone having to remember every date by hand.

## When to use

- A purchase contract or listing agreement is signed and needs its key dates (inspection, appraisal, loan commitment, closing) turned into tracked tasks.
- A deadline is approaching or has passed and a human needs to be alerted before it becomes a risk to closing.
- Someone asks for the current status of a transaction's milestones.
- A milestone date changes and downstream tasks need to be rescheduled.

## Tools

- `create-task`
- `check-task`
- `list-tasks`
- `schedule-task`
- `send-message`

## Playbook

1. When a contract is signed, break out its key dates (earnest money due, inspection period end, appraisal deadline, loan commitment date, closing date) and open one board task per milestone with `create-task`, each carrying its due date and the transaction/property reference.
2. Use `schedule-task` to set a recurring daily check (e.g. `schedule-task` for "0 8 * * *") that reviews all open milestone tasks for the active transactions.
3. On each run, call `list-tasks` filtered to the transaction milestone tasks to pull current status and due dates.
4. For any task nearing its due date (within 2 business days) or already past due, use `check-task` to confirm it has not been completed or blocked before escalating.
5. If a milestone is at risk (due soon, no progress) or overdue, escalate immediately via `send-message` to the responsible agent or coordinator, naming the transaction, the milestone, and the date.
6. When a milestone date changes (e.g. an extension is signed), update the corresponding task's due date and use `check-task` to verify the change took effect, then re-check any downstream milestones that depend on it.
7. When a milestone task is marked complete, use `check-task` to confirm completion, then verify with `list-tasks` that the next milestone in the sequence is still tracked and on schedule.
8. If a milestone requires human judgment outside the tracked dates and tasks (e.g. a negotiated concession, a legal question, or a financing exception), stop and route it as a human handoff via `send-message` naming what is needed and who should decide — do not attempt to resolve it.
9. At any point, if asked for a transaction's status, use `list-tasks` and `check-task` to compile a plain-English summary of which milestones are done, upcoming, or at risk.

## Failure modes

- A milestone task is created without a clear due date or transaction reference, making it impossible to prioritize or escalate correctly.
- The daily check runs but escalation messages are sent too late (after the deadline) instead of with enough lead time to act.
- A milestone date change is made without checking for downstream milestones that also need to shift, causing a hidden schedule conflict.
- An escalation is sent to the wrong recipient or without enough detail (transaction, milestone name, date) for the human to act quickly.

## Done when

- Every key date from the signed contract has a corresponding board task with an accurate due date.
- At-risk or overdue milestones have been escalated via `send-message` with enough lead time for a human to intervene.
- The transaction's milestone list, as shown by `list-tasks`, accurately reflects completed, upcoming, and at-risk status at all times.