difficult-clientsVersion 1.0

Client red flag screen

Score every new inquiry for red flags before you quote it, cap contract risk at one milestone, and chase payment if a client goes quiet. A free AI skill.

“I still get a pit in my stomach when I think about it.”
Angela Mondloch, Saffron Avenue (Substack)

The problem

The pull to talk yourself out of a signal you noticed is strongest once you want the deal. Score a new inquiry against six fixed behavioral signals before you draft a proposal, set deposit and milestone terms so a missed signal costs you one unpaid stage instead of the whole job, and run a staged outreach sequence when a signed client goes quiet.

Client red flag screen

Key takeaways

  • Score every new inquiry on six observed signals, not a gut feeling: slow replies, vague payment timing, evasive scope answers, pre-signing haggling, badmouthing a past vendor, and no named decision-maker.
  • Any single payment-timing flag is a red result on its own, regardless of the other five signals.
  • Decide the pause rule (what score blocks a proposal) before a real inquiry is on the table, since wanting a deal already pulls you toward skipping the check.
  • A 25 to 50 percent deposit plus a milestone schedule caps what a missed red flag can cost to one unpaid stage instead of the full engagement.
  • An IP or rights-transfer-on-payment clause and a named change-order process give you written terms for two disputes: who owns the work, and what counts as extra scope.
  • If the screen was skipped and a client has gone quiet mid-project, send a staged follow-up sequence timed to days of silence, not one chasing email.
SKILL.md

Frontmatter

name
client-red-flag-screen
description
Runs a pre-commitment screen that scores a new inquiry for behavioral risk signals before a proposal goes out, structures any signed contract so a missed signal caps the loss at one milestone, and carries a collection escalation sequence for a client who already went silent. Use when the user is deciding whether to quote a new inquiry, has noticed something off about a prospect or client and wants to decide whether to proceed, is about to send a contract and needs deposit or milestone terms, or has a signed client who has stopped responding. Triggers include "should I take this client", "something feels off about this inquiry", "do I need a deposit for this job", "client went quiet after signing", "client disappeared mid-project".

Client red flag screen

This skill installs a two-part system: a scored intake screen that flags behavioral risk in a new inquiry before any proposal is drafted, and a contract structure that caps what a missed signal can cost to one unpaid milestone instead of the whole engagement. It also carries a staged follow-up sequence for the case where the screen was skipped and a signed client has already gone quiet.

Invoke this skill when the user describes a new inquiry they have not yet quoted, reports a specific observed behavior from a prospect or client (slow replies after a routine question, vague payment-timing language, evasive scope answers, haggling before signing, badmouthing a prior vendor, no named decision-maker), is about to send a contract and needs deposit, milestone, or scope-change terms, or reports a signed client has stopped responding.

The bundle carries the mechanics: references/red-flag-checklist.md (the six scored signals and the pause-rule template), references/contract-terms.md (deposit, milestone, IP-transfer, and scope-change clause language), references/my-defaults.md (this shop's actual pause rule and contract defaults, written once in Phase 1 and re-read in every later phase, including a later session), references/escalation-playbook.md (the staged follow-up sequence for a client who has gone silent), and examples/scored-inquiry-example.md (one inquiry scored and routed end to end).

Phase 1: build the screen once, while no deal is live

Run this phase the first time the user invokes this skill, and again only if they explicitly want to change a default. Do this work when the user has no pending inquiry, because a rule decided now is the only version of the rule that has not already been shaped by a wanted deal.

  1. Open references/red-flag-checklist.md and walk the user through its six signals. Confirm they want the checklist as written, or capture specific wording changes as a one-time edit; do not alter the scoring thresholds (0 = green, 1 = yellow, 2+ or any payment-timing flag = red) without the user asking for that change directly.
  2. Decide the pause rule with the user now, while no inquiry is pending, and write their exact choice into references/my-defaults.md under "Pause rule" (for example: "two or more flags means no proposal without a clarifying call" or "a payment-timing deflection alone means no proposal until it is resolved in writing"). That file, not this conversation, is what Phase 2 and any later session reads back; a choice only spoken here is not yet recorded. State this reason to the user: once an inquiry is real and wanted, pressure to keep moving, sunk effort already spent on a sales call, and a wish to avoid an awkward question all push toward skipping the check. A rule fixed in advance does not have to survive that pressure in the moment; it only has to be applied.
  3. Open references/contract-terms.md to walk the user through the deposit range, the milestone-schedule logic, and the IP/rights-transfer-on-payment clause, then set their actual numbers: a default deposit percentage (the accepted range for a new, unproven client is 25 to 50 percent), their standard milestone split, and whether they want the IP/rights-transfer-on-payment clause on every contract by default. Write these three choices into references/my-defaults.md under "Contract defaults" so Phase 3, in this session or a later one, reads the shop's actual numbers instead of the generic range.
  4. Ask the user how they already track inquiries and clients (a notebook, a spreadsheet, a CRM field, a plain log). This skill adds one line to that existing habit on every scored inquiry; it does not introduce a separate tracker for the user to maintain.

Phase 2: run the screen on every new inquiry

Run this phase every time the user reports a new inquiry, before any proposal is drafted. This is the loop the user keeps running; nothing here is a one-time action.

  1. When the user reports a new inquiry, open references/red-flag-checklist.md and score it against each of the six signals using only behavior the user actually observed. A flag requires a stated fact (a specific deflected answer, a specific delay, a specific phrase), not a tone or a hunch.
  2. Tally the flags: 0 is green, 1 is yellow, 2 or more is red, and any single flag on the payment-timing signal is red on its own regardless of the other five. See examples/scored-inquiry-example.md for a worked tally.
  3. Open references/my-defaults.md and read the pause rule recorded there, then apply it mechanically. Tell the user the score, the specific flagged signal(s), and what that recorded rule says to do next. Do not re-open or renegotiate the rule itself in this step; it was already decided in Phase 1, before this deal existed, and it lives in that file, not in this conversation's memory.
  4. If the rule calls for a clarifying question before a proposal goes out, draft the specific question tied to the exact flag (for example, a direct question about payment timing if that signal fired) and show it to the user.
  5. If any part of step 8 will go out as a written message, email, or DM to the prospect, draft the full text and present it to the user. Never send, schedule, or queue it; wait for an explicit yes from the user in that turn before treating it as sent.
  6. Log the outcome, the score, the flagged signals, and what happened next, in whatever place the user named in Phase 1 step 4.

Phase 3: structure the contract for every signed deal

Run this phase once a screened inquiry clears (or its flagged concern is resolved) and the user is ready to send a contract.

  1. Open references/my-defaults.md to pull the user's default deposit percentage, milestone split, and IP-clause default, then open references/contract-terms.md and draft the contract terms using those values: the deposit percentage, a milestone schedule matched to the actual project scope, the IP/rights-transfer-on-payment clause if the user keeps it on by default, and a named scope and change-order process with its extra-charge language.
  2. Present the full drafted terms to the user before anything goes to the client. Never send a proposal or contract containing these terms without the user's explicit approval in that turn.
  3. If the user wants a one-time exception for this specific deal (a lower deposit for a known, repeat client, for example), apply it to this contract only. Do not overwrite the defaults in references/my-defaults.md unless the user says to change the default itself.

Phase 4: escalate if a signed client has already gone quiet

Run this phase only when the screen was skipped, or a client cleared it and has since stopped responding mid-project. This is the fallback for a flag that was missed.

  1. When the user reports a signed client has stopped responding, open references/escalation-playbook.md and use the days elapsed since the last reply to select the correct stage: an initial follow-up within the first few days of silence, then two to three staged, firmer messages spaced over one to two weeks, then a final notice.
  2. Draft the message for the selected stage, filled with the client's actual name, the amount owed, and the milestone or deliverable at stake, pulled only from the user's own contract or invoice. Do not invent a dollar figure, a date, or a deliverable the user has not provided.
  3. Present the draft to the user. Never send, schedule, or queue it without an explicit yes from the user in that turn.
  4. Tell the user to log every attempt (date, channel, and what was sent) per references/escalation-playbook.md, for possible collections or small-claims use later, and to withhold final deliverables or files until the outstanding payment clears.
  5. If the client replies at any point, stop the sequence immediately. Never send a later-stage message, already queued or drafted, into a thread the client has since answered.

Copy-paste checklist: score a new inquiry

  • Response time changed or went unusually slow after a routine question
  • Payment-timing language was vague or deflected
  • Scope answers were evasive or non-specific
  • Prospect badmouthed a prior vendor
  • Prospect haggled on price before signing
  • No decision-maker or approval process was named
  • Tally taken: 0 green, 1 yellow, 2+ or any payment-timing flag is red
  • Phase 1 pause rule applied as recorded in references/my-defaults.md, not re-decided in the moment

Copy-paste checklist: before any contract goes out

  • Deposit set at the user's Phase 1 default percentage from references/my-defaults.md (or a stated one-time exception)
  • Milestone schedule matches the actual project scope
  • IP or rights-transfer-on-payment clause included if the user keeps it on by default
  • Scope and change-order process named, with extra-charge terms stated
  • User approved the complete terms before anything was sent to the client

Copy-paste checklist: each escalation touch

  • Correct stage selected for the days elapsed since last contact
  • Client name, amount owed, and deliverable pulled from the real contract or invoice, nothing invented
  • Draft shown to the user and approved before it left the draft state
  • Attempt logged with date, channel, and content
  • Sequence stopped the moment the client replied

Guardrails: the ways this fails

  • Never score a flag from tone, vibe, or a general impression; a flag requires a specific, stated behavior the user actually observed.
  • Never let a specific deal's size, timing, or appeal change how the Phase 1 pause rule applies; apply the rule recorded in references/my-defaults.md exactly as written, every time, including when the deal looks too good to lose.
  • Never re-litigate the pause rule itself inside Phase 2. If the user wants to change the rule, send them back to Phase 1 and run that step with no inquiry pending.
  • Never fabricate a client name, dollar amount, date, or deliverable in any drafted message; take every detail from the user's own inquiry, contract, or invoice.
  • Never auto-send, schedule, or queue a message, email, or DM at any phase. Every send-gated draft stops with the user and requires an explicit yes in that turn.
  • Never continue an escalation sequence once the client has replied, even if later-stage messages are already drafted or queued.
  • Never overwrite a Phase 1 default recorded in references/my-defaults.md (deposit percentage, milestone split, clause defaults) because of a single deal; a one-time exception stays scoped to that one contract and is never written into that file.
  • If references/my-defaults.md has no pause rule or contract defaults filled in yet, treat Phase 1 as not run, even if the conversation history suggests otherwise, and run it first rather than improvising a threshold on the spot.

Install

  1. Download the .skill bundle, or the raw SKILL.md above.
  2. Unzip the bundle into your agent's skills directory. SKILL.md sits at the top level; any reference files sit beside it.
  3. Point your agent at the folder. It reads SKILL.md and follows it.

What's in the bundle

The .skill download contains SKILL.md plus these files, each at its path.

SKILL.mdthe skill on this page
references/red-flag-checklist.md3,700 chars
# Red flag checklist: score a new inquiry before you quote it

Use this the moment a new inquiry comes in, before you draft a proposal. Score only behavior you actually observed. A flag needs a specific fact (a delay you can point to, a phrase they actually said, a question they actually dodged), not a feeling.

## The six signals

Check each box only if you have a specific example to back it up. Write the example next to the box, in your own words, so you can look back at it later.

1. **Response time changed after a routine question.** They were quick to reply while you were still selling, then went slow (two or more days of silence, or a string of short "will get back to you" replies) once you asked something ordinary, like a scope clarification or a start date.
   - Example: ___________________________

2. **Payment timing language was vague or deflected.** You asked when or how they pay and got a non-answer: "we'll sort that out," "our finance team handles it," a change of subject, or a flat refusal to discuss a deposit.
   - Example: ___________________________

3. **Scope answers were evasive or non-specific.** You asked what "done" looks like, or what's in versus out of scope, and got a vague answer twice in a row, or an answer that kept growing without ever landing on specifics.
   - Example: ___________________________

4. **They badmouthed a prior vendor.** Unprompted, they told you in detail how the last person who did this work "screwed them over," was "useless," or "didn't understand" them, with no acknowledgment of their own role in what went wrong.
   - Example: ___________________________

5. **They haggled on price before signing anything.** Before you've sent a contract, they pushed back on your rate, asked for a discount "to get started," or tried to negotiate scope down for the same price, more than once.
   - Example: ___________________________

6. **No decision-maker or approval process was named.** You asked who signs off and either got no clear name, or got told "it depends," or the person you're talking to admits they need someone else's sign-off they haven't mentioned until now.
   - Example: ___________________________

## Tally

- **0 flags: green.** Proceed to a normal proposal.
- **1 flag: yellow.** Proceed, but note the flag in your log and watch for it during the engagement.
- **2 or more flags: red.** Do not send a proposal yet.
- **Any single flag on signal 2 (payment timing) is red on its own**, even with zero other flags. A client who will not commit to payment timing before work starts rarely commits to it cleanly once work is underway. Treat it that way regardless of how good the rest of the conversation felt.

## The pause rule (fill this in once, before any inquiry is live)

Write your own rule here while no deal is pending. This is the rule you follow later, not the rule you invent in the moment:

> When this inquiry scores ________________ (for example: "2 or more flags" or "any payment-timing flag"), I will ________________ (for example: "not send a proposal until I've had a clarifying call" or "not send a proposal until the payment-timing concern is resolved in writing") before any proposal goes out.

Why write it now: once a deal feels real and wanted, the sales call already happened, the time is already spent, and asking an awkward follow-up question feels like it might kill the deal. All three of those pressures push toward skipping the check. A rule written down before the deal existed doesn't have that pressure on it. It only has to be applied.

## Log line (add to whatever tracker you already use)

Date | Inquiry | Flags hit | Score | Rule applied | Outcome
---|---|---|---|---|---
references/contract-terms.md3,652 chars
# Contract terms: cap the loss to one milestone

These terms exist to cap your downside: if a signal gets missed and a client does go sideways, the most you can lose is one unpaid milestone, not the whole job.

## 1. Deposit

Set your own default percentage once, then use it on every new, unproven client.

- **Accepted range for a new client: 25 to 50 percent of total project value, due before work starts.**
- A client you've worked with before, with a clean payment history, can get a lower deposit or none, as a one-time exception you grant on that specific contract. Don't change your default because one past client was fine.
- Sample clause:

> A deposit of [X]% of the total project fee is due before any work begins. Work will not start until the deposit has cleared. The deposit is non-refundable once work has started, and is credited against the final invoice.

Your default: ____ %

## 2. Milestone schedule

Break the project into milestones that match its actual shape, not a generic 3-part split pasted onto every job. A one-week job might have two milestones (deposit and delivery). A three-month build should have one roughly every two to four weeks, tied to a concrete deliverable the client can see and approve.

- Each milestone should be payable on a deliverable, not on a calendar date alone ("30 days in" invites disputes about what should have been done by then).
- No milestone should represent more of the remaining project value than you're comfortable losing if the client disappears right after it's delivered.
- Sample clause:

> The project is billed in the following milestones: [list milestone name, deliverable, and percent of total fee]. Each milestone is invoiced on delivery and is due within [X] days. Work on the next milestone does not begin until the prior milestone's invoice is paid.

Your default split: ____________________________

## 3. IP and rights transfer on payment

Decide once whether this clause is on every contract by default, or only when asked for.

- Sample clause:

> All deliverables, including source files, designs, and code, remain the property of [your business name] until full payment has been received. Upon receipt of final payment, all rights to the completed deliverables transfer to the client. Work delivered against unpaid milestones remains the property of [your business name] and may not be used, published, or distributed by the client until paid in full.

Default for this clause: on every contract / only on request (circle one, write your actual default here): ____________________________

## 4. Scope and change-order process

Name the process in the contract itself, so a scope conversation later points back to agreed language instead of becoming a fresh negotiation.

- Sample clause:

> The scope of work is defined in [attached scope document / Section X above]. Any request that adds features, deliverables, or revisions beyond this scope will be quoted separately and requires written approval before work on it begins. Approved change orders are billed at [your hourly or project rate] and are due according to the payment terms above.

Your rate for change-order work: ____________________________

## 5. Before any contract goes out: checklist

- [ ] Deposit set at your default percentage (or a stated one-time exception, named here: ____________________)
- [ ] Milestone schedule matches this project's actual scope and timeline
- [ ] IP/rights-transfer clause included if it's your default
- [ ] Scope and change-order process named, with the change-order rate stated
- [ ] You have read the complete terms once more before anything goes to the client
references/my-defaults.md1,532 chars
# My defaults: this shop's actual settings

This file holds this shop's real, chosen numbers, not a generic range. Fill it in once, during Phase 1, while no inquiry is pending. Every later phase, in this session and in any later one, reads the values from here instead of asking again or relying on memory of the conversation that set them. When a default changes, edit this file in place; the edit itself is the update, nothing else needs to change.

## Pause rule (set in Phase 1 step 2)

My pause rule: _________________________________

(Write the actual rule in plain words, for example: "2 or more flags means no proposal without a clarifying call" or "any payment-timing flag means no proposal until it's resolved in writing." Phase 2 step 7 reads this line and applies it exactly as written.)

Date set: ____________ Last changed: ____________

## Contract defaults (set in Phase 1 step 3)

- Deposit percentage for a new, unproven client: ____ %
- Standard milestone split: _________________________________
- IP/rights-transfer-on-payment clause included by default: yes / no

(Phase 3 step 11 reads these three values before drafting any contract. A one-time exception for a single deal is written on that deal's contract only and is never copied into this file.)

Date set: ____________ Last changed: ____________

## Change log

Keep a short record of when a default changed and why, so a later session can see the history instead of just the current value.

Date | What changed | Old value | New value
---|---|---|---
references/escalation-playbook.md3,561 chars
# Escalation playbook: a signed client has gone quiet

Use this only after a client who signed a contract (and ideally cleared the screen) has stopped responding mid-project. The sequence below is staged on purpose: each message is firmer than the last, and you stop the moment they reply.

Before sending anything: confirm the amount owed, the milestone or deliverable at stake, and the client's name, from your own contract or invoice. Never guess a number.

## Stage 1: initial follow-up (day 1 to 3 of silence)

Tone: light, assumes a good reason, no accusation.

> Subject: Checking in on [project name]
>
> Hi [client name],
>
> Just following up, I haven't heard back since [date/last message]. Wanted to check the [milestone/deliverable] is still on track from your end. Let me know if anything's changed or if you need anything from me.
>
> [Your name]

## Stage 2: firmer follow-up (one week of silence)

Tone: still professional, names the open item directly, states the amount and the hold.

> Subject: [Project name]: invoice [number] still open
>
> Hi [client name],
>
> I haven't heard back since my message on [date]. Invoice [number] for [$ amount], covering [milestone/deliverable], is now [X] days past due. I'd like to get this resolved and the project moving again. Can you let me know a timeline for payment, or if there's an issue I should know about?
>
> [Your name]

## Stage 3: second firm follow-up (ten days to two weeks of silence)

Tone: direct, states a consequence that is true and you intend to follow through on.

> Subject: [Project name]: action needed on invoice [number]
>
> Hi [client name],
>
> This is my third message about invoice [number] for [$ amount], now [X] days past due. I haven't received a response to my last two notes. Until this is paid, I'm holding [the remaining deliverables / final files / the next milestone's work], as stated in our contract. Please let me know by [date, 3 to 5 business days out] how you'd like to proceed.
>
> [Your name]

## Stage 4: final notice (after stage 3's deadline passes with no reply)

Tone: formal, states the next real step, no more soft asks.

> Subject: Final notice: invoice [number], [project name]
>
> Hi [client name],
>
> This is a final notice regarding invoice [number] for [$ amount], now [X] days past due, for [milestone/deliverable]. I have not received payment or a response to three previous messages dated [dates]. If payment is not received by [date, firm], I will consider the contract in breach on your end and may pursue collections or small-claims action to recover the amount owed. All deliverables remain withheld until payment is received in full, per our contract.
>
> [Your name]

## Rules for every stage

- Draft the message, show it to yourself (or whoever approves it in your shop) before it goes out. Nothing here gets sent automatically.
- If the client replies at any point, stop the sequence immediately. Don't let a later-stage message that was already drafted or queued go out into a thread they've since answered.
- Withhold final deliverables and files until the outstanding amount clears, exactly as the contract's IP clause states.
- Pull the dollar amount, milestone name, and dates only from your own contract or invoice. Never estimate or round a figure you don't have on paper.

## Log every attempt

Keep this next to your inquiry log so you have a paper trail if this ever goes to collections or small claims.

Date sent | Stage | Channel (email/text/call) | What was sent (summary) | Reply received?
---|---|---|---|---
examples/scored-inquiry-example.md4,122 chars
# Worked example: one inquiry, scored and routed end to end

This shows the whole screen run on a single real-shaped inquiry, from first message to the clarifying question that got sent.

## The inquiry

A prospective client reaches out about a six-week website rebuild, budget mentioned as "flexible." The first two exchanges go fast: they reply within an hour each time, friendly, ask good questions about your past work.

On the third exchange, you ask two routine questions in the same message: "What does a finished project look like to you, and how do you usually prefer to handle deposits and payment?" Their reply comes two days later and only addresses the first question, with a vague answer: "just something that looks modern and works well." The payment question goes unanswered.

You follow up once, directly: "No problem on the first part, happy to nail that down together. On payment, do you have a preferred structure, like a deposit plus milestones?" Another day and a half passes. The reply: "We can figure that out once we get going, it's usually not a big deal on our end."

Separately, earlier in the thread, they mentioned in passing that their last web developer "completely dropped the ball and ghosted halfway through," with no mention of anything on their own side that might have contributed.

## Running the checklist

Signal | Hit? | Evidence
---|---|---
1. Response time changed after a routine question | Yes | Went from under 1 hour to 2 days, then 1.5 days, right after payment was raised
2. Payment timing language was vague or deflected | Yes | Twice asked directly, twice deflected ("figure it out once we get going")
3. Scope answers were evasive or non-specific | Yes | "Looks modern and works well" given twice, no specifics even after a direct follow-up
4. Badmouthed a prior vendor | Yes | "Completely dropped the ball and ghosted," no acknowledgment of their own role
5. Haggled on price before signing | No | No pricing conversation has happened yet
6. No decision-maker named | No | The person emailing has said "I" throughout and hasn't mentioned anyone else needing to approve

## Tally

4 flags: signals 1, 2, 3, and 4. That alone is a red score (2 or more flags). Signal 2 (payment timing) is also a red flag on its own, so this inquiry is red by two independent tests.

## Applying the pause rule

This shop's Phase 1 pause rule, recorded in `references/my-defaults.md` before this inquiry ever came in: "Any payment-timing flag means no proposal until it's resolved in writing, in plain terms, not a vague reassurance." That rule applies here exactly as written. It is not being renegotiated because the prospect seems otherwise pleasant and the scope sounds interesting; the rule was fixed before either of those things were known.

## The clarifying question that was sent

> Hi [name], before I put together a proposal I want to make sure we're aligned on how payment works, since that's something I always nail down up front regardless of the client. My standard structure is a 30% deposit before work starts, then two milestone payments tied to specific deliverables. Does that work for you, or is there a structure you'd want to discuss first? Happy to talk it through on a quick call if that's easier.

## What happened next

The prospect replied within four hours agreeing to the 30% deposit and milestone structure without pushback, and confirmed a specific definition of "done" in the same message (a five-page site with three content revisions included). The payment-timing flag resolved in writing. The scope flag resolved in writing. The response-time and vendor-badmouthing flags were logged but not grounds to decline on their own, since the rule only required the payment concern to clear before a proposal could go out.

## Log entry recorded

Date | Inquiry | Flags hit | Score | Rule applied | Outcome
---|---|---|---|---|---
[date] | 6-week site rebuild, [prospect name] | 1, 2, 3, 4 | Red (4 flags + payment flag) | Held proposal, sent clarifying question on payment and scope | Resolved in writing, proposal sent with 30% deposit and milestone terms

Sources

Merged from the top existing skills on the topic, with credit to every input.

Frequently asked questions

How do I know if I should take on a new client?

Score the inquiry against six behavioral signals you actually observed, not a feeling: slow replies after routine questions, vague answers about payment timing, evasive scope answers, haggling before anything is signed, badmouthing a previous vendor, and no clearly named decision-maker. Zero flags is green, one is yellow, two or more is red, and any single flag on payment timing is red by itself.

What's actually a red flag versus just a quirky client?

A red flag is a specific, stated fact: a deflected answer about when they pay, a concrete delay pattern, an exact phrase about a prior vendor. A tone you didn't love or a hunch isn't a scored signal; only behavior you can point to counts.

Do I really need a deposit from a new client?

Yes, for any client who hasn't paid you before. A 25 to 50 percent deposit, paired with a milestone schedule, means a missed signal only costs you one unpaid stage instead of the entire project.

What do I do if a client goes quiet after signing?

Run a staged follow-up sequence keyed to how many days they've been silent: an initial check-in within the first few days, then escalating staged messages after that. Draft every message before sending it and don't send anything without reviewing it first.

Can a contract actually protect me if a client disappears mid-project?

A milestone-based contract with a deposit and an IP-transfer-on-payment clause means you've already been paid for completed work and haven't handed over final deliverables for unpaid stages, so a disappearing client costs you one milestone, not the whole engagement.

Should I change my rule for a client I really want to work with?

No. Decide the pause rule and deposit defaults when no deal is on the table, then apply them mechanically. The pull to make an exception is strongest for a client you already want, which is exactly when the rule matters most.