---
name: chase-progression
description: "The headline daily-and-on-demand workflow that protects pipeline fee income. Surfaces stalled sale-agreed deals ranked by fall-through risk and fee value, drafts tone-matched messages per stakeholder, and fires only the messages the operator approves. Triggers when the operator says 'chase the chain', 'chase progression', 'where is everyone on <address>', 'push <name>'s deal', 'push the chain on <address>', 'follow up on the <name> solicitors', 'what's stalled', 'stalled deals', 'any updates on <address>'. Also runs as a sub-flow of the morning round."
---

# Chase progression

The master workflow owned by the negotiator. The headline of the product. Sales agents lose more fee income to stalled chains than to any single other cause; this workflow protects every pipeline fee the agent has earned.

Done well, every weekday morning the operator opens chase-progression, reads 5 to 15 ranked stalled deals with drafted messages, approves the ones to send, edits one or two, skips the ones already handled, and is done in under 10 minutes. The alternative is a half-day a week on the same work, done badly.

## Inputs

- The customisation profile.
- Every sale-agreed deal in the CRM with its full state, including last contact per party.
- The mortgage offer expiry dates held in the CRM where available.
- The calendar (for surveyor and viewing schedules).

If invoked with a property name ("push 14 Garth Road"), the workflow narrows to the single-deal deep dive for that property and skips the across-pipeline view.

## Architecture principles encoded here

- Read before write. The workflow opens by reading the chain state for every deal. It does not draft a message until the deal state has been built.
- Stage, don't send. Every message is a draft until the operator approves it. The workflow never fires a message that has been edited but not re-approved.
- One screen of output. The ranked list collapses to one screen even when there are 15 deals. Each row is one line until the operator expands it.
- Cite the source. Every cause sentence cites the connector reads that support it. Every draft message references the actual deal record.
- Teach the profile. Edit-before-send diffs are the gold signal; see learning hooks.
- Reversible. A sent message creates a CRM activity entry. The "spoke to them" override removes a recipient and logs the verbal contact.

## Two views

### Across-pipeline view

Every sale-agreed deal stalled past the threshold for the relevant stakeholder type, ranked by fall-through risk multiplied by fee value. For each deal, one line shows:

- Property
- Days since the last positive movement
- One-line cause from chain state
- Drafted message ready to fire

Built by composing `chain-progression-tracker` (state), `risk-scorer` (risk), `priority-ranker` (rank), and `tone-matched-drafter` (drafts).

### Single-deal deep-dive view

When the operator names a property, the workflow returns the full state: every party, every last-known status, every outstanding action, every risk flag, and draft messages for every stakeholder who needs chasing. Each draft is in the right tone for that recipient and channel.

## Tone and channel per recipient type

The profile holds a tone preference per type, calibrated from voice samples and from edit-before-send diffs. Defaults:

| Recipient type | Default tone | Channel default |
|---|---|---|
| Vendor (familiar) | Conversational, first name | WhatsApp or mobile |
| Vendor (formal) | Polite, surname | Email |
| Buyer (familiar) | Conversational, first name | WhatsApp or mobile |
| Buyer (formal) | Polite, surname | Email |
| Vendor solicitor | Formal, surname, references file | Email |
| Buyer solicitor | Formal, surname, references file | Email |
| Mortgage broker | Polite, first name, references buyer | Email or phone |
| Surveyor | Brief, polite, references property | Email |

Defaults are starting points. Within a month of use each agent's tone profile is distinct.

## Approval gates

Per message. The workflow presents drafts in a batch (cap 15). The operator can:

- **Approve all.** Fires every message as drafted.
- **Approve, edit some.** Edits are captured for learning. Remaining approved messages fire as drafted.
- **Approve some, skip some.** Fires only approved ones. Skipped recipients are excluded from chase for 24 hours.
- **Pause.** Saves the batch and returns to it later.

If the operator has more than 15 stalled deals, the workflow surfaces two batches of 15 with a pause between rather than one batch of 30. Approve-all-and-regret is the failure mode the cap prevents.

## The "spoke to them" override

The most frequent operator action with this workflow is "don't chase Mrs Patel, I spoke to her yesterday". The workflow recognises this phrasing, removes the recipient from the batch, writes a CRM activity entry with timestamp and the note "operator confirms verbal contact, no chase needed", and resets the stalled-threshold clock for that recipient.

## Continuous learning hooks

- Cadence per stakeholder type. "I chase solicitors at 5 days, brokers at 3, vendors weekly". Learned from explicit corrections and from edit-frequency patterns.
- Tone profile. The deepest learning hook in the product. Every edit-before-send diff is gold. Within a quarter the workflow should be drafting messages the agent sends without editing 80% of the time.
- Risk weights. Reweighted by which deals actually fall through (negative outcome) and which complete (positive outcome). Slow signal, high quality.
- Skip patterns. Recipients the agent never chases (a friend, a regular client they handle in person) get excluded automatically once the pattern is recognised.
- Channel preferences per recipient. If the operator always changes the drafted email to a WhatsApp, the channel preference updates.
- Phrasing pet peeves. "I hope this finds you well" edited out every time stops appearing in drafts.

All writes go through `profile-writer`.

## Connectors

Read: CRM, email, WhatsApp, calendar, mortgage offer expiry data if held in CRM.
Write: Email, WhatsApp Business, SMS, each on explicit per-message approval.

## WhatsApp Business templating

WhatsApp Business is rate-limited and template-restricted for the first interaction with a recipient. The workflow knows when a recipient is on an open 24-hour conversation window and when a template message is required. The operator does not need to know which is which; the draft adapts.

## Profile keys

- `realagent.stalled_threshold_days.*` (per stakeholder type)
- `realagent.tone_profile.*` (per recipient type)
- `realagent.channel_preference.<recipient_id>` (learned per recipient)
- `realagent.batch_cap` (default 15)
- `realagent.skip_recipients` (list, learned)
- `realagent.phrasing_pet_peeves` (list of phrases the agent edits out, learned)
- `realagent.risk_weights.*` (learned from outcome correlation)
