Ataski
Customer

Customer · Renewal Manager

Catches the at-risk renewal — with the evidence — before you lose it.

Every day the Renewal Manager walks each of your paying customers, pulls the billing, CRM, and support signals into one evidence bundle, and decides whether the account is expanding, steady, at risk, or likely to churn — citing the exact invoices, deal stages, and threads that moved the verdict. When the call is at-risk, it drafts a save email anchored to that same evidence and drops it in your queue. You approve every send.

Try a sample play See pricing Daily watch · source-cited verdicts · from $299/mo, 14-day trial

From a daily scan to a drafted save email in your queue

01

Daily scan

06:00 UTC — walks every paying customer.

02

Build evidence

Stripe, CRM, support → one bundle.

03

Classify & log

A 4-way verdict, cited, into the diary.

04

Draft & you approve

A save or upsell email waits in your queue.

The same loop runs for every monitored customer, every morning — monthly auto-renew and annual contracts alike. Churn lands on a Tuesday; the assistant is looking on that Tuesday, not 60 days later when the save play is already a discount.

Already running the Customer Account Monitor? The Renewal Manager reads its account diary as one more signal — the two pair well, but each works on its own.

The contract

What it runs on its own, what it checks with you, what it won't touch.

Runs on its own

  • Scans every monitored customer once a day — monthly auto-renew and annual contracts alike.
  • Builds a per-customer evidence bundle from the sources you connect — Stripe billing, CRM deal stages, support and usage signals.
  • Classifies each customer expansion / standard / at-risk / likely-churn, with the specific source IDs that moved the verdict.
  • Appends one immutable paragraph per customer per run to an account diary — never overwritten, never deleted.
  • Drafts a save email (at-risk) or upsell email (expansion) anchored to the same cited evidence.

Checks with you first

  • Every drafted save or upsell email queues for your approval — it is never auto-sent. Approval is off by default.
  • When the evidence is thin or ambiguous, it abstains: it classifies the account as standard, says why, and routes it to you instead of inventing a churn story.
  • If a drafted email cites a number it cannot verify against the evidence, the email is dropped and the row is flagged for you.
  • When the highest-stakes review disagrees with itself, the row surfaces for a human decision rather than auto-resolving.

Won't touch

  • Sending a save or upsell email to a customer on its own — the decision to send is always yours.
  • Overriding the renewal-window rules — it works the cadence you set, it does not change it.
  • Inventing a Slack thread, an invoice, or a deal it did not see — every claim must trace to a real source ID or the row is downgraded.
  • Making the save-or-let-it-churn call — it drafts the play; whether to discount, escalate, or walk away is a human decision.
  • Cancel-page win-back automation — that is a different surface and not what this role does.
Full capability matrix from the role registry

PROFICIENT

  • Daily 06:00 UTC scan of every paying customer 14-90 days from renewal. APScheduler IntervalTrigger(hours=24) advisory-locked at the system level (ADR-0019 pattern). Per-tenant fan-out queries monitored_customers WHERE days_to_renewal BETWEEN 14 AND 90 AND (last_run_at IS NULL OR last_run_at < NOW() - INTERVAL '23 hours'). The 23-hour skew is idempotency slack — yesterday at 06:00:00 vs today at 06:00:01 doesn't skip a customer.
  • Source-anchored evidence with post-parse validation. Every claim in the diary entry, classification, and drafted email MUST cite a source_id that exists in the customer's input bundle. Unknown source_id → row rejected, classification forced to 'standard', severity 'LOW', abstain_reason 'source_validation_failed'. Anti-fabrication at the SCHEMA layer (ADR-0029 §3), not the prompt layer.
  • Longitudinal account diary appended every run, append-only. customer_diary_entries is never updated, never deleted. After 6 months a tenant has 180 paragraphs of per-customer narrative that a Vitally rip-and-replace cannot backfill. The diary IS the time-based moat.
  • Tier 3 cross-family supervisor on accounts >= $50K ARR. Worker (Sonnet 4.6) drafts; GPT-5 reads the 10-row batch output as a WHOLE and flags rows for revision; Gemini 2.5 tiebreaker fires on per-row classification disagreement. CLAUDE.md principle #3 made operational as a deterministic routing function, not a per-task judgment call (ADR-0029 §1).
  • Batched 10-customer LLM calls grouped by route assignment. TIER1 / TIER2 / TIER3 customers chunked into route-homogeneous batches of 10. Supervisor reviews the 10-row batch as a whole to catch systematic drift (the worker drifted into doom-mode across 10 rows is detectable from batch shape; per-customer review can't see the pattern). Batch-of-50 fails empirically on Sonnet (attention contamination + 25K-output-token truncation); batch-of-10 is the council-verified sweet spot.
  • Per-account drafted save / upsell email with anchor citations. drafted_email.anchors[] MUST be a subset of evidence[].source_id; a drafted email that cites a non-existent Slack thread becomes null and recommended_action drops to 'internal_alert'. Default auto_send=false — every draft sits in /app/renewal_hunter/inbox until the operator clicks Send.
  • Weekly Monday digest of $ ARR in motion at 12:00 UTC. Separate scheduler job (12:00 UTC = 07:00 EST — the slot a human reads) summarising HIGH-severity accounts, total $ ARR at risk, top movers since last Monday, and the diary excerpts that justify each verdict. Source-anchored — no metric without its underlying source_id chain.
  • Investigation depth — explicit signal citations, no opaque score. Output cites specific signals (stripe_invoice_4_late_in_q1, slack_thread_complaint_2025_12_03, hubspot_deal_stale_92_days) instead of emitting a single health-score float. Buyers in mid-market post-sale orgs have been burned by opaque scores; the citation is the unlock.
  • Open factor-weight math, tenant-tunable in /app/renewal_hunter/settings. Four weights (payment_history / usage_trend / champion_status / support_sentiment) sum to 1.0, surface in the per-account drill-down UI, and write back to tenant_renewal_hunter_settings on POST. The model never hides the math — every classification shows which factor weight pushed it across the threshold.
  • Internal LLM routing — 70/25/5 mix protects $79 Starter unit economics. route_customer() (ADR-0029 §1) selects Haiku / Sonnet / Sonnet+GPT-5+Gemini per customer per run deterministically from features computed BEFORE the LLM call. Distribution monitored via PostHog; drift outside 60-80 / 15-35 / 2-10 fires an alert. The TIER1 tail (~68% on Haiku 4.5) is the load-bearing cost-control primitive behind the 77% target gross margin on Starter.

ASSISTED

  • Auto-send save / upsell emails (off by default, off-able per topic). Default auto_send=false — every drafted_email sits in the inbox until the operator clicks Send. Operator can flip auto_send on per route (e.g. low-severity expansion drafts on Growth tier and below) once they've reviewed ~30 drafts and trust the worker's tone. Enterprise + likely_churn always require operator approval regardless of auto_send setting.
  • Severity transitions LOW → HIGH route every account through Tier 3. Any customer crossing into HIGH severity on this run gets the cross-family supervisor pass on its next batch — material score-move into the danger band is the second-most-expensive mistake-mode after enterprise account misclassification. Operator alerted in /app/renewal_hunter/inbox with the new + old diary entries side-by-side.
  • Three-way supervisor disagreement on Tier 3 — operator review. When worker / supervisor / tiebreaker classifications all differ, the row flags for human review in /app instead of auto-resolving. Today: pick the worker's classification, log all three verdicts in the audit_log, surface the conflict in the per-account detail page. The deeper question — is a three-way disagreement evidence of an ambiguous account or a worker regression — needs >= 50 instances to answer.
  • Source-validation failure rate > 5% triggers same-day operator review. Langfuse + PostHog wired: when the rolling-24h source_validation_failed rate exceeds 5%, a banner fires in /app/renewal_hunter/inbox and the founder is paged. Either the worker is regressing on schema discipline (prompt fix) or the bundle builder is dropping source_ids (code fix); either way the same-day investigation is on the operator.

REFUSED

  • Auto-send a save email to the customer without operator approval. Default auto_send=false; even with auto_send enabled, Enterprise (>=$50K ARR) and likely_churn classifications hard-gate on operator approval regardless of supervisor verdict. The decision to ship an in-flight save email to a $200K account is the operator's, not the worker's.
  • Cancel-page widget or in-product save-offer surface. ChurnKey owns the cancel-page surface — when a customer clicks Cancel, ChurnKey shows the save offer in-product. We don't compete on the cancel page; we own the 90 days BEFORE it. Different product surface, different integration cost, different buyer. No plans to ship a cancel-page widget.
  • Post-cancel win-back automation. Phase 3 territory (post-PMF). The bundle builder / router / diary primitives generalise, but the buyer for post-cancel win-back is a marketing-ops persona — different ICP than the CSM persona who buys Renewal Hunter. Deferred until a paying Renewal Hunter customer asks for the cross-sell.
  • Mass-market B2C subscription save (Spotify / Netflix / consumer SaaS). Different product. B2C subscription save lives in 'why did this individual user pause' territory — a different signal set (usage frequency in app, payment-method failure, content consumption drop), a different output (in-product nudge, not a save email to the champion), a different price point ($0.10 per saved sub, not $79-$1,199 per month per tenant). We do B2B SaaS renewals where the deal has a champion.
  • Champion job-change detection via PDL or LinkedIn (V0). Deferred to V1, behind the ADR-0026 data-provider gateway, after the first paying customer's vertical confirms the champion-quit signal is worth the PDL spend. V0 reads champion_status from HubSpot contact_lifecycle + Slack channel activity; PDL champion-quit is the canonical high-signal event but it's vertical-dependent and we don't light up speculative spend.
  • Cohort-level analysis ('all SMB customers with NRR < 90%'). V0 ships per-account analysis only. Cohort queries land in V1 once a customer demonstrates the workflow that needs it. Vitally and Gainsight ship cohort dashboards; we don't compete on dashboard surface — we compete on per-account investigation depth. Per-account FIRST, cohort patterns SECOND.

What you get

This is what one at-risk verdict looks like.

Not a single opaque health score — the classification carries the exact evidence behind it, and the drafted save email cites only what that evidence shows. Nothing reaches the customer until you click.

Customer · Northwind Labs

At-risk

ARR

$42,000 / yr

Renewal

Annual · 38 days out

Evidence the verdict cites

  • stripe:in_1Q4late Two invoices paid 11+ days late this quarter — both after a payment retry.
  • hubspot:deal:88204 Renewal deal stale 41 days in ‘Contract Sent’ — no contact movement.
  • slack:1714…thread Shared channel: the champion asked about export options, then went quiet for 3 weeks.

The same evidence is written to Northwind Labs' diary as one paragraph. Next run it is the prior-run context the assistant reasons against.

Approval queue · drafted save email

Awaiting your approval

Subject

Northwind renewal — a quick check before the contract date

Hi — your renewal comes up in about five weeks and I wanted to reach out early rather than on the contract date. I noticed the last couple of invoices ran a little late, and the export question from your channel never got a clean answer — I'd like to fix both before this renews. Could we grab 20 minutes this week? I can walk through the export options and make sure billing is set up the way your team needs it.

Every detail in this draft traces to a cited source. A number that could not be verified against the evidence would have dropped the draft and flagged the row.

Approve & send Edit Skip Nothing sends until you click.

Pricing

Priced by how many customers you monitor.

One quality of analysis at every tier — the price step is the number of customers you watch, not a better model. 14-day trial, no card. Cancel monthly.

What it replaces

Doing this in-house means a full salary, benefits, and months of ramp — for one function. Ataski ships the output from day one at a flat, predictable monthly price.

Enterprise-grade quality for a fraction of a hire. Scale up or pause anytime — you only pay for the months you use.

Most picked

Team

$299 / month

100 customers monitored

≈ $2.99 per customer monitored

  • 100 customers on the daily scan
  • Per-customer diary, append-only
  • Source-cited classifications
  • Drafted save / upsell emails in your queue

Seed-stage B2B SaaS putting a daily renewal watch on its whole book for the first time.

Choose Team

Scale

$799 / month

500 customers monitored

≈ $1.60 per customer monitored

  • 500 customers on the daily scan
  • Everything in Team
  • HubSpot + Salesforce CRM signals
  • Advanced save-play playbooks

Series A — where one retained mid-size account pays for the year.

Choose Scale

Business

$2,499 / month

2,000 customers monitored

≈ $1.25 per customer monitored

  • 2,000 customers on the daily scan
  • Everything in Scale
  • CRM write-back + multi-team scoping
  • SSO, audit-log export, DPA

Mid-market with a CS team and a procurement process.

Choose Business

Enterprise · Custom

High-volume CS orgs needing SLA, SAML, multi-entity, and regional data residency.

  • · Unlimited customers monitored
  • · Everything in Business
  • · SAML, multi-entity, data residency
  • · BYO LLM keys, dedicated success
Talk to us

Customer counts are the value metric, not a hard wall — the real spend guardrail is a per-customer daily cost cap, so a busy week never produces a surprise bill. Annual prepay is discounted; ask at checkout.

Setup

About fifteen minutes from sign-in to the first scan.

  1. 01

    Sign in and activate. The monitored-customers list and the account diary are provisioned in your workspace automatically.

  2. 02

    Connect Stripe — required. Paste a restricted, read-only API key. It hydrates your customer list and is the one source the role cannot work without.

  3. 03

    Connect CRM and support — recommended. HubSpot or Salesforce, plus Slack or a support tool. More sources, more evidence; the role still works on Stripe alone.

  4. 04

    Watch your queue. The first daily scan runs at the next 06:00 UTC tick; drafted save and upsell emails start landing.

Setup page: /app/renewal_hunter/setup. Once connected, the role runs at /app/renewal_hunter/.

Under the hood

How the routing and guardrails work.

Routing keeps the price honest
Quiet accounts go to a fast, low-cost model; accounts that moved to a stronger reasoning model; the highest-stakes to a full cross-vendor review
The cross-vendor review
One AI writes the first draft, a second, independent AI from a different vendor re-reads it, and a third breaks the tie only when the two genuinely disagree.
Source-anchored
Every claim must cite a source ID in the evidence bundle — a cited source the bundle lacks forces the verdict back to standard; an unverifiable number drops the email
Spend guardrail
A per-customer daily cost cap is the hard guardrail — a busy week cannot run up a surprise bill
Privacy
Each workspace is isolated by row-level security; an append-only audit log records every model call, external read, and classification
Weekly digest
The renewals in motion can be emailed to the owner you nominate, and to Slack when you connect it

Put a daily watch on every renewal.

Sign in, connect Stripe, and the first scan runs at the next 06:00 UTC tick. Drafted save emails start landing in your queue — you approve every send. No card for the 14-day trial; after that, $299/mo Team or a higher tier.