a Sagan program ยท currently in private beta

Customer Health Diagnostic Agent

Your ranked call-list lands in Slack every morning with the diagnosis attached: which venue clients are trending toward unhappy, what the upstream cause is (ad fatigue, conversation abandonment, calendar locked), and the specific evidence.
before

Today: Seth has a million dashboards but no employee dedicated to scanning all 105 accounts weekly. Clients leave when service quality slips, and the team doesn't notice until the cancellation email arrives. Conversations go unanswered, ad performance drops, calendars lock up, and nobody's watching.

after

Daily: A ranked list lands in Slack every morning. The team sees the 5-10 clients at risk this week, each with a diagnosis attached (CTR down 42%, first-message response rate at 18%, no tour availability for three weeks). The team starts Monday morning already informed and can call the right clients before they get upset.

wedding services / venue management / marketing services / subscription SaaS / customer health monitoring / churn risk detection / diagnostic analysis / performance benchmarking / GoHighLevel / Meta Ads / Supabase / Slack /  wedding services / venue management / marketing services / subscription SaaS / customer health monitoring / churn risk detection / diagnostic analysis / performance benchmarking / GoHighLevel / Meta Ads / Supabase / Slack / 
the problem

Wedding venue marketing agencies lose clients to silent service drift

Ideal Brides manages 105+ venue accounts at $997/month each.

01
The monitoring gap

105+ accounts, one small team, no systematic weekly scan of which clients are trending toward unhappy.

02
The cost of silence

By the time the team notices a client is struggling, the cancellation email has already landed.

03
The pricing constraint

Priced like SaaS ($997/mo) but operated like a service agency. Raising prices loses price-sensitive venue owners. Hiring another employee breaks unit economics.

the math, if you want to look

Daily scan surfaces the 5-10 clients at risk this week, with diagnosis attached

proof 01
Continuous watch

Daily cron scan pulls metrics from AdPulse (Meta ad performance, GoHighLevel conversation health, tour booking trends) and flags clients trending downward before they call to cancel.

proof 02
Root-cause diagnosis with evidence

When a client is red, the agent walks the funnel backwards: ad performance (CTR, CPM, spend trends), conversation health (first-message response rate, abandoned threads), tour booking rate, and technical checks (website up, calendar open for booking). Output is ranked likely causes with specific evidence, not a free-form essay.

proof 03
3-way benchmarks

Every signal compares to the client's own rolling baseline, the cross-customer average, and same time last year (weddings are seasonal). Catches both absolute problems and subtle delta-from-baseline drift.

proof 04
Slack-first workflow

Daily post to a dedicated Slack channel: ranked list of clients to follow up with this week, each with diagnosis and suggested first action. Replaces 'nobody's watching' with 'team knows exactly who to call Monday morning.'

This agent scans all 105+ venue accounts daily, diagnoses the root cause for each at-risk client with specific evidence (CTR down 42%, first-message response rate at 18%, no tour availability for three weeks), benchmarks against each client's own baseline and the full book average, and drops a ranked talk-to-these-clients-this-week list into Slack. The team starts Monday morning already informed instead of reactive.

how it works

How the diagnostic scan works

The agent runs daily, pulling data from AdPulse and GoHighLevel, analyzing each account against configurable rules, and surfacing at-risk clients with ranked root causes.

step 01
Ingest metrics from AdPulse and GoHighLevel

Pull per-client Meta ad metrics (CTR, CPM, spend, weekly trends), GoHighLevel conversation data (response rates, abandoned threads, lead source), tour booking counts, and calendar availability. AdPulse already aggregates Meta data; GoHighLevel API pulls live conversation and booking state.

step 02
Run technical health checks

Verify each client's website is up, SSL certificate is valid, and tour-booking calendar is open. These are binary checks, not LLM reasoning.

step 03
Analyze conversation health at scale

Batch GoHighLevel conversation snippets and classify each thread: is the rep responding promptly, or is the thread abandoned? Aggregate per-account conversation health score.

step 04
Compute 3-way benchmarks

For every signal (CTR, response rate, booking rate), calculate deltas against the client's own baseline, the cross-customer average, and same-period-last-year. Gracefully fall back when historical data is missing.

step 05
Synthesize diagnosis with SoTA LLM

Feed the structured signal bundle (ad deltas, conversation summary, booking trend, technical checks, rules file) to a SoTA model. Output: ranked list of likely root causes (3-5 max), each with specific evidence. Constrain to causes that map to observed signals and rules; reject hallucinated causes.

step 06
Rank clients by severity and post to Slack

Sort flagged clients by severity score. Post a ranked Top-N list (default 10) to a dedicated Slack channel. Format: client name, severity, one-line diagnosis, link to full diagnosis page. Group repeat flags from yesterday as 'still flagged' rather than re-flagging.

step 07
Track resolution over time

Record each flagged client: when flagged, diagnosis, team action notes, and whether underlying metrics recover in the following 2-4 weeks. Close the loop on which diagnoses lead to saves.

ai agent · estimator console inputs transform outputs public preview
inputs
Meta ad metrics from AdPulse +

CTR, CPM, spend, weekly trends aggregated nightly into Seth's Supabase backend.

GoHighLevel conversation data +

Per-sub-account API pulls: conversation threads, response rates, lead source tags, abandoned-thread flags.

Tour booking counts and calendar availability +

From GoHighLevel: how many tours booked this week, whether the public tour-booking calendar is open for the next 2-3 weeks.

Website and SSL health +

Direct HTTPS HEAD request and SSL certificate check for each client's domain.

Rules file in plain language +

Markdown-formatted thresholds and qualitative rules (e.g., 'if first-message response rate drops below 25% for 2 consecutive weeks, flag as conversation issue'). Maintained by Seth in the admin UI.

Historical baseline and same-period-last-year data +

Stored in SQLite: each client's rolling 12-week baseline and prior-year metrics for seasonal benchmarking.

transformation
Compute 3-way benchmarks per signal +

For CTR, response rate, booking rate: calculate delta vs client baseline, delta vs cross-customer average, delta vs same-period-last-year. Gracefully fall back when historical data missing.

Classify conversation health at scale +

Batch GoHighLevel conversation snippets, use lightweight LLM to score each thread (responding promptly vs abandoned), aggregate per-account conversation health.

Run technical health checks +

Binary checks: website up (HTTPS 200), SSL valid, tour-booking calendar open. No LLM reasoning needed.

Synthesize root-cause diagnosis +

Feed structured signal bundle (ad deltas, conversation summary, booking trend, technical checks, rules file) to SoTA LLM. Output ranked likely causes (3-5 max) with specific evidence. Constrain to causes matching observed signals and rules.

Rank clients by severity +

Score each flagged client by number of signals fired, magnitude of deltas, and rule-match confidence. Sort descending.

Format Slack message +

Ranked Top-N list (default 10): client name, severity, one-line diagnosis, link to full diagnosis page in admin UI. Group repeat flags as 'still flagged'.

outputs
Daily Slack post to dedicated channel +

Ranked list of 5-10 clients at risk this week, each with severity score, one-line diagnosis, and link to full diagnosis page.

Per-client diagnosis page in admin UI +

Full diagnosis: which signals fired, which rules matched, ranked root causes with evidence, 3-way benchmark charts, raw data behind each cause.

Scan run record in SQLite +

Timestamp, which clients flagged, which rules matched, which signals fired, severity scores. Used for historical analysis and resolution tracking.

Resolution tracking record +

When team marks a flagged client as 'actioned' with notes, record the action and track whether underlying metrics recover in following 2-4 weeks.

draft ready for estimator review _
tech used
GoHighLevel API for conversation and calendar dataMeta Ads metrics from AdPulseOpenRouter for multi-signal diagnosis synthesisSlack incoming webhooks for daily alerts
tool alternatives
Alternative CRM platforms with conversation and booking APIs (Pipedrive, HubSpot) in place of GoHighLevelAlternative messaging platforms (Microsoft Teams, Discord) in place of Slack
honest qualification

Is this for you?

built for you if
  • + Ideal Brides and similar done-for-you marketing agencies - Manage 50-200+ customer accounts at a fixed monthly price. Service quality is the primary retention lever. Need a daily scan that surfaces which accounts are trending downward before customers churn.
  • + Subscription SaaS with multi-tenant dashboards - Any SaaS where customers have their own sub-accounts or workspaces, and you need to detect silent service drift across the customer base. The pattern scales to hundreds of accounts.
  • + Small teams running large customer books - When you can't afford a dedicated account manager per customer but need to catch problems before they become cancellations. The agent replaces the 'nobody's watching' gap.
  • + Businesses with seasonal or cyclical metrics - The 3-way benchmark (baseline, average, same-period-last-year) is critical when 'normal' varies by season. Wedding venues are seasonal; this pattern works for any cyclical business.
not for you if
  • - Businesses without multi-signal data - This agent needs at least 3-4 signals per account (ad performance, conversation health, booking rate, technical checks). If your customer accounts only have one or two metrics, the diagnosis will be weak.
  • - Businesses without API access to customer sub-accounts - The agent reads customer data via API (GoHighLevel, Meta Ads, etc.). If your customers' data is siloed and you have no API access, you'll need to build custom integrations per customer.
  • - Businesses that don't have a small, responsive team - The agent surfaces at-risk clients; a human still has to call them. If your team is too large or too slow to act on daily alerts, the agent becomes noise.
  • - Predictive churn modeling - This agent diagnoses current and recent issues. It doesn't forecast future churn probability. If you need predictive modeling, that's a separate Phase 2 with different data needs.
pricing

Scoped build plus usage-based runs

to build

This is a custom diagnostic agent built on your specific data sources (AdPulse, GoHighLevel, Meta Ads). Pricing covers the initial build, admin UI, and rules editor. Ongoing costs are the daily scan runs (lightweight, ~$0.50-2/day depending on account count and LLM tier) plus any additional features (task creation in Monday.com or ClickUp, downstream integrations).

then
  • Initial build includes prototype on synthetic data, admin UI, Slack integration, and resolution-tracking dashboard.
  • Daily scan runs are usage-based: cost scales with number of accounts and LLM calls (conversation analysis + diagnosis synthesis).
  • v1 ships Slack-only. Downstream task creation (Monday.com, ClickUp) is optional and priced separately post-prototype.
  • Rules editor is included; Seth maintains rules himself in plain-language markdown.
  • No per-account licensing or seat fees. One team, unlimited accounts.
FAQ
How does this agent detect which venue clients are at risk of churning?

The agent runs a daily scan across all 105+ accounts, pulling ad performance metrics (CTR, CPM, spend trends) from AdPulse, conversation health from GoHighLevel (response rates, abandoned threads), tour booking counts, and technical checks (website availability, calendar open for bookings). It then benchmarks each signal three ways: against the client's own baseline, the cross-customer average, and the same period last year. When signals drop or drift, the agent flags the client as at-risk and ranks them by severity.

What does the agent output when it finds an at-risk client?

The agent posts a ranked list to your Slack channel every morning. Each flagged client includes a severity score, a one-line diagnosis with specific evidence (for example: CTR down 42% vs baseline, first-message response rate at 18%, no tour availability for three weeks), and a link to the full diagnosis page in the admin UI. The team starts each week already informed about which clients to call.

How does the agent diagnose the root cause for each at-risk client?

The agent walks the funnel backwards through four layers. Layer 1: ad performance (CTR, CPM, spend trends). Layer 2: conversation health from GoHighLevel (first-message response rate, abandoned threads). Layer 3: tour booking rate. Layer 4: technical checks (website up, SSL valid, calendar open for booking). It feeds this structured signal bundle plus your rules file to a state-of-the-art LLM, which outputs a ranked list of likely root causes (3-5 maximum), each with specific evidence. The agent constrains the diagnosis to causes that match observed signals and your rules, rejecting hallucinated causes.

Can we customize the rules the agent uses to flag clients?

Yes. The admin UI includes a plain-language rules editor where you can add or modify thresholds and qualitative rules in markdown. For example, you can write: 'if first-message response rate drops below 25% for 2 consecutive weeks, flag as conversation issue.' The agent picks up your rules on the next scan. You maintain the rules yourself without needing engineering help.

How does the agent handle seasonal variation in wedding venue metrics?

The agent benchmarks every signal three ways: against the client's rolling baseline, the cross-customer average, and the same period last year. This 3-way comparison catches both absolute problems and subtle drift from baseline. Because weddings are seasonal, comparing to last year's same period is critical. If historical data is missing for a newer client, the agent gracefully falls back to baseline and cross-customer average.

What happens after the team acts on a diagnosis? Does the agent track whether the client recovers?

Yes. When your team marks a flagged client as actioned with notes, the agent records the action and tracks whether the underlying metrics recover over the following 2-4 weeks. This closes the loop on which diagnoses lead to saves and which rules need refinement. Over time, the resolution-tracking data proves the agent's value and helps you tune rules based on what actually works.

Is this agent built specifically for wedding venue marketing, or can other subscription SaaS businesses use it?

The pattern works for any subscription SaaS or service agency managing multiple customer accounts where you need to detect silent service drift before customers churn. The agent needs at least 3-4 signals per account (ad performance, conversation health, booking rate, technical checks) and API access to customer sub-accounts. If your customers' data is siloed with no API access, you would need custom integrations per customer. The core diagnostic pattern is reusable across any business with multi-tenant data and a small team managing a large customer book.

What integrations does the agent need to run the daily scan?

The agent connects to AdPulse (your existing Supabase backend with Meta ad metrics and GoHighLevel API keys), GoHighLevel API (conversations, tour bookings, calendar availability), and performs technical checks (website availability, SSL certificate validation). You provide read-only access to AdPulse, a Slack webhook for the daily alert channel, and your Google domain for admin UI login. The agent does not write to any system in version 1.

related builds
ai-risk-monitoring-dashboard-e842c601self-storage-sourcing-agent-prd-v2-0-6e730be6ldi-quote-watchdog-prd-v1-0-5c586dd2client-data-lake-agentautomated-lead-intake-dashboard-e23bf749
next step

Stop losing venue clients to silent service drift.

Your ranked call-list lands in Slack every morning. The team sees which clients are trending toward unhappy, what the upstream cause is, and the specific evidence. Start Monday morning already informed instead of reactive.