

Expanded edition · 13 October 2026 · Originally published 16 June 2025
Client health needs its own evidence. A completed report, improving campaign, or friendly conversation does not automatically tell us whether the client is happy.
From my 37-episode ConquerLocal Think Tank agency-management training.
Client relationship health
| Status | What it means |
|---|---|
| 🟢 CLIENT GREEN | the client explicitly said they were happy within the last seven days. |
| 🟡 CLIENT YELLOW | recent satisfaction is unconfirmed. Yellow is the default when we are unsure. |
| 🔴 CLIENT RED | there has been no communication for over seven days, or someone on the team believes the client may be dissatisfied. Take action promptly. |
Task attention
| Status | What it means |
|---|---|
| 🔴 NEEDS YOU | the named recipient must make a specific decision or take an action. |
| 🟠 BLOCKED — WE’RE HANDLING IT | the agent or team owns resolving an outstanding dependency. |
| 🔵 WORKING | authorized execution is actually underway. |
| ✅ DONE | the named outcome passed its required checks. |
These task signals are defined in The Four Color Status Method for Humans and AI Agents. Keep the two legends labeled wherever they appear together.
Seven-day example: a client said they were happy eight days ago, then sent a routine message yesterday. With no concern about dissatisfaction, client health is yellow. A report delivered and verified today can be ✅ DONE. If there has been no communication for over seven days, client health is red instead.
Read the evidence → assess client health → assign the next action → verify what happened → reassess.
Watch the video accompanying the original article.
What we are trying to learn
A related agency-management book manuscript is still unfinished. This method can be used on its own, by an account manager, an operations leader, or an AI agent working within its authority.
An agency can produce work while losing touch with the person paying for it. The client may not understand the result, may be waiting for something we missed, or may be concerned about a problem we have not seen.
The stoplight method gives the team a visible reason to investigate. It does not guarantee retention, measure every part of the relationship, or prove that a client will renew. Its usefulness depends on fresh evidence and someone doing the next step.
My default is yellow. Green needs an explicit, recent statement of happiness. Red has its own triggers and requires attention even when other signals look positive.
Keep the existing client tracker or project record. Each account needs one responsible owner and one maintained status record. A dashboard, email summary, and agent response should all point back to that same record.
The Success Tracker in the agency-management materials connects brief metrics and analysis to next actions and client dependencies. Add client-health evidence to that same account record. The status should point to the work rather than create another administrative exercise.
Green requires explicit and recent evidence
Record who expressed satisfaction, what they said, when they said it, where the evidence can be checked, and what their statement covered.
“I’m happy with how this campaign is progressing” is an explicit satisfaction statement. A payment, an opened email, an internal prediction, or a lack of complaints is not one. “Received, thanks” confirms receipt. It does not establish happiness.
Context matters. “Looks good” could approve a specific graphic without saying anything about the account relationship. The Client Neglect Detector implementation explicitly leaves unclear sentiment for human judgment. An agent should preserve that uncertainty rather than turning a polite phrase into a stronger claim.
If the client has several stakeholders, name the speaker and scope. Approval from one person may not settle another person’s concern. The account owner should be able to explain why the evidence supports the status shown.
Green expires. The statement must still fall within the last seven days when the status is evaluated. A previously valid green row can become stale without anybody editing it.
For implementation, I recommend storing a timestamp and calculating an expiry seven days later. Use a consistent boundary: an age of exactly 168 hours remains within seven days; any greater age is outside it. The silence trigger likewise requires more than 168 hours. This exact-time convention is an implementation recommendation. Preserve the original time zone. If a date-only source leaves the boundary uncertain, do not invent a time that keeps the account green.
Yellow means satisfaction is unconfirmed
Yellow is an honest state. It means we do not currently have enough evidence to call the client green, and no red trigger has been established.
The client may be communicating normally. They may be pleased. They simply have not explicitly confirmed satisfaction recently enough for this method.
When a happy statement ages out, recompute the whole record. With a recent routine exchange and no concern, the result is yellow. With no communication for over seven days, it is red. Expired green never automatically becomes yellow without checking red conditions.
Use the next appropriate client interaction to understand the situation. Review the existing thread first. The client may already have explained their concern or expressed satisfaction in another authorized channel.
If follow-up is appropriate and authorized, ask a useful question tied to the work: “Are you happy with the direction of the campaign, and is there anything you want us to change?” Avoid repeatedly asking for reassurance simply to keep a dashboard green.
Silence is not happiness. Neither is our confidence that we did a good job.
Red includes concern before a formal complaint
The original method has two red triggers: no communication for over seven days, or a team member’s concern that the client may be dissatisfied. We do not need to wait for a cancellation notice or explicit complaint.
A concern needs to be recorded so someone else can evaluate it. Separate the observed signal from the interpretation. For example: “The client asked twice why the same issue remains open” is an observation. “They may be losing confidence in our follow-through” is an interpretation.
Red does not establish that a client is angry. It tells the team that a risk needs an owner and a next action. Record whether the trigger is communication age, expressed unhappiness, or a team concern. Keep the underlying evidence available to authorized reviewers.
Overlapping signals need a clear decision rule. My operational recommendation is that an unresolved red concern takes precedence over a recent happy statement. A compliment about one deliverable should not silently close a separate complaint. Keep the concern red until the owner records how it was investigated and resolved, then reassess all the evidence.
This precedence rule is an implementation recommendation that makes the existing triggers consistent. It is not a claim that every historical version of the method spelled out the same decision order.
When red appears, name the accountable operations leader, the person handling the next step, the action, and the next review time. “Red, monitoring” is incomplete unless someone can say what they are checking and what will happen if nothing changes.
Keep the communication clocks separate
The published automation checks the age of the last client-visible Basecamp message. Internal notes do not count as client communication. An outgoing update can satisfy that visibility check; it still cannot establish that the client is happy.
For a stronger account record, I recommend tracking three dates separately:
- Last client-visible communication, including a verified outgoing update.
- Last client response or conversation.
- Last explicit statement of happiness.
This is an extension of the record, not a replacement for the published neglect check. It prevents an agency’s own outgoing messages from being mistaken for evidence of satisfaction or engagement.
A weekly update may be visible while the client has stopped replying. The communication-age trigger might not fire, but the lack of response can still become a team concern under the other red trigger. Document that judgment rather than quietly changing what the clock measures.
Check the channels that are actually in scope. A Basecamp-only scan cannot establish that no email, call, or meeting occurred. Say “No client-visible Basecamp message found in the checked window” when that is all the evidence supports. Reconcile other authorized sources before making a broader claim.
A verified call yesterday in an agreed channel defeats the broader claim of no communication. Preserve the stale-Basecamp finding, then reassess overall client health using the reconciled contact, happiness evidence, and concerns.
Likewise, a permission failure or missing export is a data limitation. It is not evidence that the client is unhappy or that no communication happened. Keep the classification provisional, record the gap, and assign the check. If the gap itself creates a credible concern, record that concern explicitly.
Measure performance and sentiment independently
Campaign results answer questions about performance. Client-health evidence answers questions about the relationship. Both matter.
A client can explicitly be happy while a performance metric misses its target. Keep the green classification when its evidence is valid and no unresolved red concern applies. Separately show the performance problem, its cause, and the proposed action. Do not let green hide the missed target.
A campaign can meet its agreed target while the client is concerned about communication or an unresolved request. The results do not cancel the concern. Keep the client-health issue visible and investigate it.
These are different dimensions of one account record. Useful fields might include client health, performance against the agreed goal, outstanding commitments, and task attention. An extra dashboard color is not needed for every dimension; clear text and evidence often do the job.
Assign responsibility without making the client wait
The original article uses RACI: the operations leader is accountable for keeping statuses current, while the account or project manager is responsible for communication and client satisfaction.
Keep that distinction when agents help. An agent may retrieve evidence, calculate age, identify a stale record, or prepare a suggested next step. The record must still name the responsible account owner and accountable operations leader.
Choose the action based on the cause. A missing update needs a useful communication. A repeated defect needs a repair. A confused client may need an explanation and a check that it answered their question. A decision beyond the owner’s authority needs escalation.
A red client does not automatically require the agency owner to intervene. The account manager may already be handling the issue. In that case, the task can be 🔵 WORKING, or 🟠 BLOCKED — WE’RE HANDLING IT if a dependency is unresolved. Use task-level 🔴 NEEDS YOU only when the named recipient’s decision or action is genuinely necessary.
Before sending a message, making a commitment, offering a refund, or sharing private information, follow the permissions for that action. Client red is a reason to act within authority. It does not grant new authority.
Use one record for people and agents
The human summary should state client health, why, owner, next action, and next review. The structured record should carry the same facts with source references and timestamps.
Here is a fictional example. The dates, name, account identifier, and example.invalid links are teaching placeholders.
🟡 CLIENT YELLOW | Example Training Account
As of 14 October 2026, 12:00 UTC.
Reason: the last explicit happiness statement was on 6 October; a routine client reply arrived on 13 October. No unresolved concern is recorded.
Owner: Jordan, account manager. Accountable: operations lead.
Next: review satisfaction at the already scheduled 15 October meeting.
Task attention: Queued. Preparation has not started; the owner and meeting are confirmed.
Evidence: the authorized client thread and meeting record.
Next review: 15 October, 14:00 UTC, after the meeting.
{
"method_version": "1.1",
"client_id": "example-training-account",
"observed_at": "2026-10-14T12:00:00Z",
"client_health": "yellow",
"reason": "Happiness evidence expired; routine contact is recent",
"responsible_owner": "Jordan, account manager",
"accountable_owner": "Operations lead",
"last_client_visible_message_at": "2026-10-13T15:00:00Z",
"last_client_visible_communication_at": "2026-10-13T15:00:00Z",
"communication_scope": "Agreed messages and call records reconciled",
"last_client_reply_at": "2026-10-13T15:00:00Z",
"happiness": {
"statement_at": "2026-10-06T10:00:00Z",
"expires_at": "2026-10-13T10:00:00Z",
"scope": "Direction of the campaign",
"source": "https://example.invalid/client-thread"
},
"unresolved_concerns": [],
"evidence_coverage": "In-scope channels reviewed; no known gap",
"next_action": "Review satisfaction at confirmed October 15 meeting",
"next_review_at": "2026-10-15T14:00:00Z",
"review_owner": "Jordan, account manager",
"task_attention": {
"status": null,
"execution_state": "queued",
"label": "Queued",
"human_decision_required": null
}
}
In a real record, preserve the actual statement, speaker, source message, and observed concerns. The companion client-health specification defines the checks and a fill-in template. Do not expose private client records merely to make a public example more convincing.
Review the account and verify the action
At each agreed review, check the active client roster, open the latest record, and calculate evidence age again. Do not carry forward last week’s color without checking it.
For red accounts, verify that the next step happened. A message drafted is different from a message sent. A sent update is different from a client response. A response is different from explicit satisfaction. Record the strongest claim the evidence supports.
For green accounts, check when the happiness evidence expires and plan the next appropriate review. For yellow accounts, identify the next useful opportunity to confirm the relationship. Keep paused or concluded engagements clearly labeled so an inactive account is not mistaken for a neglected active client.
Use an actual owner and workable review mechanism. A written promise to check later does not prove a schedule exists. If an agent cannot run at the required time, arrange an authorized handoff rather than claiming continuous monitoring.
Notifications should help the team act. Send meaningful changes, unresolved reds needing attention, decisions, and promised review results. Consolidate routine updates; do not keep sending unchanged green rows. The published automation’s quiet behavior when nothing changes is a useful pattern, subject to the team’s actual reporting commitments.
Test the method before relying on it
Use these fictional acceptance cases:
- Explicit happiness yesterday, no unresolved concern: green.
- Happiness exactly 168 hours old: still within the recommended boundary. Immediately afterward, reassess for yellow or red; do not retain green from that statement alone.
- Happiness eight days ago, routine client reply yesterday, no concern: yellow.
- No client-visible communication for more than seven days in the fully checked scope: red.
- Outgoing update yesterday, no explicit happiness: green is unsupported; evaluate yellow and any concern separately.
- Good performance and an unresolved client complaint: keep the complaint visible; under the recommended precedence rule, red.
- Recent compliment about one asset and an unresolved concern about another commitment: do not let the compliment erase the concern.
- An internal note yesterday but the last client-visible message was eight days ago: the internal note does not reset the neglect clock.
- Basecamp is stale but a verified call happened yesterday: keep the Basecamp gap visible; classify overall health from the reconciled evidence, not the Basecamp gap alone.
- An unreadable source: report the evidence gap; do not fabricate a happy statement or claim a complete communication search.
- Client red, account manager already repairing the issue: client red plus task blue can both be correct.
- Repair verified, client satisfaction still unconfirmed: the repair can be done while client health remains yellow or red.
Have a person and an agent classify the same examples from the same evidence. Investigate disagreements about the definitions before scaling the workflow. A parser can check dates and required fields; it cannot prove that a source statement means more than it actually says.
Improve the process with MAA
Use Metrics, Analysis, Action to learn from the work.
Metrics: record observed communication gaps, age of explicit satisfaction evidence, unresolved concerns, and whether assigned actions were completed. Measure client outcomes separately; do not claim that a rising percentage of green rows proves reduced churn.
Analysis: ask why the gap occurred. Did we miss a commitment? Use the wrong channel? Send a report the client could not understand? Fail to assign an owner? Treat an assumption as evidence?
Action: make the smallest useful correction, name its owner, and verify its effect on the next review. Keep the lesson in the maintained recipe so humans and agents receive the same correction.
The operating model in How the Agents Run the Company connects this to accepted handoffs, evidence, and accountable ownership. Keep that continuity. The goal is a client relationship the team understands and follows through on, with a record another authorized person or agent can trust.
Agency Client Health Reporting Specification
Expanded edition 1.1 · 13 October 2026
Source and purpose
Use with The Stoplight Method for Agency Client Health, Dennis Yu’s expansion of the maintained public article at https://blitzmetrics.com/the-stoplight-method-a-simple-framework-to-monitor-client-happiness/.
The original method defines the three client-health colors and RACI ownership. The later implementation at https://blitzmetrics.com/client-neglect-detector-grokbot/ measures the age of the last client-visible Basecamp message, excludes internal notes, and routes uncertain sentiment to judgment.
This specification makes recommended implementation decisions explicit. It does not claim that these details were present in every historical course, manuscript, or tool.
Keep the two status dimensions independent
Client health:
green: the client explicitly expressed happiness within the last seven days.yellow: recent happiness is unconfirmed; default when unsure and no red trigger is established.red: no communication for more than seven days, or a team member believes there may be dissatisfaction.
Task attention:
needs_you: a specific action or decision is required from the named recipient.blocked_owned: the agent or team owns an unresolved dependency.working: execution is observably active.done: the exact task scope passed its required checks.- null: an explicit neutral lifecycle state, such as queued. This is not a fifth color.
Never derive task attention automatically from client health. A red client and a blue repair task can be correct at the same time. A green completed deliverable does not establish client happiness.
Prerequisites
Read the active-client roster, existing record, responsible account owner, accountable operations leader, agreed communication channels, authority, latest source messages, open concerns, and current observation time.
Use the existing authoritative client tracker. Do not create a competing task board or silently replace an account owner. Preserve linked tasks and past observations.
Evidence fields
Record at least:
client_id,record_url,method_version,observed_at.responsible_ownerandaccountable_owner.communication_scope: the channels and sources actually checked.coverage_complete,evidence_gaps, andprovisional.last_client_visible_message_atand its source, including whether it was inbound or outbound. State the channel-specific meaning. For a broader contact check, preserve calls and meetings in a separate contact observation rather than pretending they were Basecamp messages.last_client_visible_communication_at: the latest verified contact across the agreed channels, including relevant calls and meetings, with supporting source observations. Use this reconciled field for the broader communication-age claim.last_client_reply_ator latest client conversation, with its source and channel.happiness: speaker, exact statement, scope, timestamp, source, and expiry.unresolved_concerns: observations, interpretations, source, reporter, owner, next action, and resolution evidence when closed.client_health, reason, and triggering rule.next_action,next_review_at,review_owner, and the actual review mechanism.task_attention: status, named scope, recipient if a decision is needed, execution state, and completion evidence if done.
Use null for unknown facts. Do not turn a missing source, failed permission check, or unsearched channel into a claim of no communication. Do not include credentials or unnecessary private information in the record.
Recommended classification procedure
The following is an implementation recommendation for handling overlapping evidence:
- Review unresolved concerns first. If a supported team concern remains open, classify client health red. Preserve whether it is expressed dissatisfaction or an interpretation of an observed signal.
- Evaluate the communication-age trigger against reconciled contact across the agreed channels. If that latest client-visible communication is more than seven days old and coverage is sufficient, classify overall health red. A Basecamp-only result is a scoped neglect flag. If a verified call occurred yesterday in another agreed channel, the Basecamp gap cannot establish a broader absence of communication; preserve the gap and continue classification from the reconciled contact, happiness, and concerns.
- Otherwise, if a relevant, explicit client happiness statement is within the seven-day window, classify green.
- Otherwise classify yellow, indicating any evidence limitation and who will resolve it.
An unresolved concern takes precedence over a recent positive statement in this recommended procedure. Close a concern only after documenting investigation and a supported resolution. Then recompute all conditions; do not jump directly to green.
An account that has never had a known communication timestamp requires an onboarding/history check. Do not invent a start date to calculate neglect. If uncertainty creates a credible team concern, record that concern and its basis explicitly.
Time and channel semantics
For consistent implementation, use timezone-aware timestamps. The recommended exact-time convention treats a statement as within the last seven days while its age is at most 168 hours; the communication-silence trigger applies when age exceeds 168 hours. Store an expiry and recompute at observation time.
The sources do not define time-of-day boundary mechanics; this convention is a recommended implementation choice. Date-only or future-dated evidence needs review. Do not assign a convenient time or ignore a clock error to maintain green.
A routine client message can reset communication age without refreshing happiness. A verified outgoing client-visible update can reset the published Basecamp neglect clock without proving a reply or satisfaction. An internal note cannot reset it.
Track outbound contact, client response, and explicit happiness separately. When other channels are relevant, reconcile them or state the limited scope. Evidence from a private internal discussion cannot be reclassified as client communication.
Action and permission
Operations is accountable for current statuses; the account or project manager is responsible for communication and client satisfaction. Agents assist within their actual access and authority.
Red requires a prompt owned response, not necessarily an owner-level interruption. Name the next action, person, and review time. A decision outside the account owner’s authority becomes a recipient-specific red task request with a recommendation.
No client color authorizes sending, publishing, refunds, payments, promises, changing security, or sharing private data. Follow the task’s actual permissions. Prepare an authorized draft or ask for the missing approval when required.
Do not claim an action is complete from a plan or tool dispatch. Verify delivery at the destination, the correct recipient or audience, and the actual scope completed. Do not equate a sent message, client response, and happiness statement.
Notification and monitoring
Recompute when evidence arrives, the relevant time threshold passes, a promised review is due, or an unresolved concern changes. Use an actual owner and verified scheduling mechanism if automation is claimed.
Report material changes, actionable reds, decisions, and promised review findings. Consolidate routine status. Preserve unchanged findings in the record without generating noise unless an agreed reporting commitment requires an update.
The assigned owner retains responsibility until an authorized receiving owner accepts a handoff. Respect an agreed stopping condition, paused engagement, or completed offboarding; do not keep treating inactive accounts as neglected active clients.
Acceptance tests
- Explicit happiness one day ago, complete coverage, no concern: green.
- Happiness eight days ago, routine response yesterday, no concern: yellow.
- Last client-visible communication eight days ago, relevant scope checked: red.
- Outgoing update yesterday, no happiness evidence: not green. Evaluate concern separately.
- Internal note yesterday, last client-visible Basecamp message eight days ago: red for that scoped Basecamp neglect check. Overall health requires reconciled channel evidence; the internal note supplies no client contact.
- Recent compliment and unresolved complaint: red under the recommended precedence rule.
- Concern resolved, recent explicit happiness still valid: green after reassessment.
- Concern resolved, happiness expired, contact recent: yellow.
- Verified repair, client satisfaction unconfirmed: task done; client health separately assessed.
- Red client, authorized account manager actively resolving issue: client red plus task working.
- Age exactly 168 hours: boundary follows the documented exact-time convention; one moment later, recompute.
- Source inaccessible or relevant channel unchecked: provisional observation, evidence gap named; no invented absence.
- Unexpected future timestamp: investigate the clock/source before classification relies on it.
- A verified call occurred yesterday in an agreed channel but Basecamp is stale: preserve the Basecamp-specific gap. Overall health is green if current explicit happiness exists and no concern remains; otherwise yellow absent another red trigger. Do not claim overall communication silence from Basecamp alone.
- Neutral queue with a confirmed review owner: do not claim active work before preparation starts.
Test valid and invalid samples. A validator that accepts green without a current explicit statement must fail acceptance. A validator that converts a red client directly into NEEDS YOU must also fail. Field checks cannot establish the truth or meaning of source evidence; an appropriate reviewer must inspect it.
Adoption and improvement
Record the source revision, scope, named owners, actual integration, tests run, activation evidence, limitations, and next review. A file installed or URL shared is not proof that the method ran correctly.
Use Metrics, Analysis, Action to examine stale evidence, unresolved concerns, assigned actions, and client outcomes. Propose supported changes, review them, update the same maintained recipe, and verify that humans and agents receive the new revision.
Originally published .

