How to track renewals and expansions with AI

Sales & CRM3 AI tools7 steps6 friction points

Tracking renewals and expansions means knowing, at any given moment, which customer contracts are coming up for renewal, which accounts have room to grow, and what actions your team needs to take before a window closes. For most operators, this data lives across a CRM, a handful of contract PDFs, a billing system, and whoever's inbox last touched the account. Keeping it coherent is a recurring coordination problem, not a one-time setup task.

The workflow feels like an AI problem because the underlying work is pattern-matching and summarization: scan contract dates, flag what's due in 60 days, identify accounts that have grown past their current tier, draft an outreach. None of that requires human judgment at every step — it requires someone to run the same logic repeatedly against fresh data. That's exactly what AI tools are good at, in theory.

In practice, ChatGPT, Claude, and Gemini can help you think through the logic, draft renewal outreach emails, summarize contract terms, and build a tracking template. They're genuinely useful as thinking partners for this workflow. The gap is data access: they work on what you paste in, and this workflow lives inside your CRM, billing system, and contract files — not in a text box.

Sales & CRM3 AI tools7 steps6 friction points
AI walkthrough

How to do it with AI today

A practical walkthrough using ChatGPT, Claude, and other off-the-shelf LLMs — what they're good at, what you'll have to do by hand.

Tools that work for this
ChatGPTClaudeGemini
Step-by-step
1 Export your active customer list from your CRM or billing system — a CSV with account name, contract start date, contract end date, current MRR or ARR, and the account owner. This is your working dataset for every step that follows.
2 Paste the CSV into ChatGPT or Claude and ask it to identify accounts renewing in the next 30, 60, and 90 days, sorted by ARR descending. Review the output; the model will usually produce a clean markdown table you can paste into a doc or Notion page.
3 For expansion identification, paste in the same customer list with usage metrics or seat counts if you have them. Ask the model to flag accounts that appear to be at or above their current plan limits, or that have grown headcount significantly since signing.
4 Pull a sample contract PDF for a renewing account. Paste the key terms into Claude and ask it to extract renewal terms, auto-renewal clauses, notice periods, and any expansion pricing language. Do this account-by-account for your highest-value renewals.
5 Use ChatGPT to draft renewal outreach templates: one for a straightforward on-time renewal, one for an expansion conversation, one for an at-risk account. Customize each with the account-specific details you extracted in the previous steps.
6 Build a tracking sheet manually in Google Sheets or Notion based on the model's output — columns for account, renewal date, ARR, renewal status, expansion opportunity flag, and last outreach date. This becomes your working tracker until next month, when you run the whole process again.
7 Set a recurring calendar reminder to repeat this export-paste-review cycle monthly, or quarterly for lower-volume books of business. The model has no memory of last month's run, so every cycle starts fresh.
Prompts you can copy
Here is a CSV of our active accounts with contract end dates and ARR. Identify every account renewing in the next 90 days and sort them by ARR descending. Flag any with ARR over $50,000.
Review this contract text and extract: renewal date, auto-renewal clause and notice period, current pricing tier, and any expansion or upsell pricing terms. Format your output as a structured list.
We have 40 active customers. Here is a table with their current seat counts and the seat limit on their plan. Flag any account using more than 80% of their seat allotment as an expansion candidate.
Draft three renewal outreach emails: one for a healthy account we expect to renew, one for an account where we want to start an expansion conversation, and one for an at-risk account that hasn't logged in recently. Keep each under 150 words.
Given this list of renewal dates, account owners, and ARR values, build me a 90-day renewal calendar showing which weeks have the most renewal activity and which account owner has the most concentrated risk.
Reality check

Where this gets hard

The walkthrough above works — until your numbers change, the LLM hallucinates, or you have to re-paste everything next month.

No live connection to your CRM or billing data — every run requires a manual export, and if someone updated a deal stage or contract date this morning, your analysis doesn't know.
Contract terms live in PDFs across Drive folders or email threads; you have to manually locate, open, and paste each one. At 50+ accounts, this step alone takes hours.
The tracking sheet you build from the model's output goes stale immediately — nothing updates it when a renewal closes, an expansion gets signed, or an account churns.
Model outputs vary between sessions; the table structure or flagging logic you got last month may look different this month, requiring manual cleanup before you can compare runs.
Nothing persists across conversations — next quarter you're running the same prompt chain from scratch, with no audit trail of what was flagged, actioned, or missed in prior cycles.
Expansion signal detection only works on the data you paste in; if expansion indicators live in a product analytics tool, a support system, or your billing platform, they stay siloed unless you manually pull and combine them first.

Tired of the friction?

Starch runs the whole workflow on live data — no copy-paste, no hallucinated numbers, no re-prompting next month.

See the Starch version →
Starch alternative

The same workflow on Starch

Starch is an agentic operating system — you describe the renewal and expansion tracker you want, and an agent builds it as a persistent app connected to your live CRM, contract, and billing data. It runs continuously, not just when you remember to paste a CSV.

Connect HubSpot, Apollo.io, or Capsule CRM through Starch's scheduled sync — renewal dates, ARR, and deal stages stay current automatically, so your tracker reflects what's actually in your CRM today, not last week's export.
Start from the Starch CRM app and describe your renewal workflow: 'Show me all accounts renewing in 90 days, sorted by ARR, with expansion flags for accounts above 80% seat usage.' The agent builds that view and keeps it refreshed.
Contract Lifecycle Management — coming soon — will handle automated renewal alerts, auto-renewal tracking, and notice-period flags in a searchable contract repository, integrated with the same account data your CRM surfaces.
Connect Gmail through Starch's scheduled sync and describe an automation: 'When a renewal is 45 days out, draft a personalized outreach email for the account owner to review and send.' The agent writes it against live account data, not a generic template.
Expansion signals from billing or usage tools in Starch's integration catalog — Stripe, or any of 3,000+ connected apps — feed the same tracker, so you see ARR growth, seat utilization, and renewal date in one place without manually combining exports.
The app persists and runs on a schedule — no prompt chain to re-run, no export cycle to remember. When a renewal closes or an expansion signs, your data sources update and the tracker reflects it.
Get closed-beta access →
Toolkit

Starch apps for this workflow

Pick your role

See this workflow by operator

Run track renewals and expansions on Starch

You're on the list! We'll be in touch soon.