ChatGPT for Startup Analytics: Read Your Metrics Without an Analyst

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for ChatGPT for Startup Analytics: Read Your Metrics Without an Analyst.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for ChatGPT for Startup Analytics: Read Your Metrics Without an Analyst.

Export a weekly CSV from your billing or analytics tool, remove anything that identifies a customer, upload it to ChatGPT and ask it to show the arithmetic behind every change in MRR, churn and signups. Then rebuild its three biggest claims in a spreadsheet. The AI reads and explains; you confirm the numbers.

The rule that keeps this safe is simple: ChatGPT is quick at describing what moved and poor at knowing why, so you only accept a figure after your own sum agrees with it. A founder who does this on Monday morning gets a one-page read of the week in about fifteen minutes, without hiring an analyst or learning a BI tool.

Follow me on Instagram@sagnikteaches

What the weekly export needs before ChatGPT sees it

A good review starts with a flat file: one row per week, or one row per account event, with the same columns every Monday. Most billing tools and product analytics tools can download a CSV (a plain text file you can open in Excel) of subscriptions, invoices or events. You are not trying to give ChatGPT everything. You are trying to give it enough to answer four questions: what did revenue do, where did it come from, what left, and are the early-funnel numbers still healthy?

Connect on LinkedInSagnik Bhattacharya

For a small subscription business the useful columns are these:

Subscribe on YouTube@sagnikteaches
  • week_ending: the Sunday date, in one consistent format such as 2026-10-04.
  • start_mrr and end_mrr: monthly recurring revenue at the opening and closing of the week.
  • new_mrr, expansion_mrr, contraction_mrr, churned_mrr: the four movements that explain the gap between start and end.
  • signups, paid_conversions: top of the funnel and the step that earns money.
  • churn_detail (optional): one line per lost account, with an ID, a plan and the amount, never a name.

If your tool exports in a different shape, say one row per invoice, paste a few rows into ChatGPT and ask it to propose a weekly roll-up. Then check that roll-up against the tool's own dashboard for one week before trusting it. My own preference is to build the weekly file once in a spreadsheet and append a row every Monday, which keeps the layout fixed. If the layout stays the same, last week's prompt works unchanged this week. For the broader job of choosing which figures belong in a routine like this, 12 metrics worth tracking is a useful companion.

The Complete Excel Course with AI Integration thumbnail

The Complete Excel Course with AI Integration

From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.

By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner

Buy now

Strip the customer details first: a before and after

Do not paste customer personal data into a general chat tool. The weekly analysis never needs it. What it needs is a stable key so you can say "account A-0412 left" and look the person up yourself afterwards.

Here is a before and after of a churn export, using made-up rows:

BEFORE (do not upload)
date,customer_name,email,plan,mrr,reason
2026-09-30,[first name] [surname],[email],Team Annual,1500,"Moved to competitor"
2026-10-01,[first name] [surname],[email],Starter,49,"Card failed"

AFTER (safe to upload)
date,account_id,plan,mrr,reason_code
2026-09-30,A-0412,Team Annual,1500,competitor
2026-10-01,A-0877,Starter,49,payment_failed

Free-text reason columns deserve a second look, because people type names, company names and phone numbers into them. Either convert reasons to a short list of codes (competitor, price, payment_failed, no_longer_needed, other) or delete the column and keep the codes only. Keep the lookup table linking account_id to a real customer in your own system. On personal Free, Plus and Pro accounts, chats can be used for training by default; turn off Improve the model for everyone under Settings, Data controls. Business and Enterprise workspaces are not used for training by default. Check which plan you are on before you upload anything, and if you have any doubt about a column, leave it out.

A prompt that forces ChatGPT to show its sums

A vague request such as "analyse this" produces a confident paragraph of general commentary. A precise request produces a table you can check. Ask for the arithmetic, name the definitions, and tell it what not to do.

I run a subscription software business. The attached CSV has one row per week
with start_mrr, new_mrr, expansion_mrr, contraction_mrr, churned_mrr, end_mrr,
signups and paid_conversions. All amounts are in dollars.

Definitions: net new MRR = new + expansion - contraction - churned.
Weekly MRR churn rate = churned_mrr / start_mrr.
Trial-to-paid rate = paid_conversions / signups.

Tasks:
1. For each week, check that start_mrr + net new MRR equals end_mrr. List any
   week where it does not, and by how much.
2. Build a table with net new MRR, weekly churn rate and trial-to-paid rate for
   each week, showing the sum behind each figure.
3. State which numbers moved most compared with the first week, as a percentage
   and in dollars.
4. Give two possible reasons for each large move, labelled "possible, not known".
   Do not state a cause as fact, and do not invent customer behaviour.
5. List what extra data would settle each possibility.

If a figure is missing or ambiguous, say so instead of guessing.

Step 1 does a lot of work. Asking ChatGPT to reconcile the file against itself catches export errors before you build a story on top of them. If the file does not reconcile, the problem is in the export, not in the business.

The main example: four weeks of a small subscription startup

Take an illustrative B2B software reseller that sells a subscription add-on to small firms. It has about $40,000 in monthly recurring revenue at the start of the period. The weekly file looks like this (all figures made up for the example):

WeekStart MRRNewExpansionContractionChurnedEnd MRRSignupsPaid
1$40,000$1,800$400$200$600$41,40021021
2$41,400$1,500$300$100$700$42,40019518
3$42,400$1,100$200$300$2,100$41,30014011
4$41,300$900$250$150$1,300$41,0001209

ChatGPT's reconciliation should confirm that every row balances. Week 1: 40,000 + 1,800 + 400 - 200 - 600 = 41,400. Week 3: 42,400 + 1,100 + 200 - 300 - 2,100 = 41,300. If it reports a gap in any row, stop and fix the file.

The table it should return, with the sums visible, looks like this (illustrative output):

WeekNet new MRRChurn rateTrial-to-paid
11,800 + 400 - 200 - 600 = +$1,400600 / 40,000 = 1.5%21 / 210 = 10.0%
21,500 + 300 - 100 - 700 = +$1,000700 / 41,400 = 1.7%18 / 195 = 9.2%
31,100 + 200 - 300 - 2,100 = -$1,1002,100 / 42,400 = 5.0%11 / 140 = 7.9%
4900 + 250 - 150 - 1,300 = -$3001,300 / 41,300 = 3.1%9 / 120 = 7.5%

Over four weeks, MRR rose from $40,000 to $41,000 (+2.5%), but the shape matters more than the total. Net new MRR went from +$1,400 to -$300. Signups fell from 210 to 120, a drop of 43%, and the share of signups that paid slid from 10.0% to 7.5%. A good ChatGPT summary says exactly that: growth has stalled in week 3 because of two things at once, a spike in churn and a thinner, less convinced funnel. It should also point out that the two problems are probably separate and that you should not look for one cause.

Rebuild three figures in a spreadsheet before you believe them

This step is not optional. For many data-analysis tasks ChatGPT writes and runs Python code on the uploaded file, but it can still misread a column, count a header as data or round early. Its help page says as much: review the code, outputs and assumptions before relying on the result. Spend five minutes checking three figures: the one that looks worst, the one that looks best, and one at random.

In Excel or Google Sheets, with the table above in A1:I5 and headers in row 1, these formulas rebuild the checks:

  • Reconciliation, in J2: =B2+C2+D2-E2-F2-G2. The result should be 0 on every row.
  • Net new MRR, in K2: =C2+D2-E2-F2.
  • Weekly churn rate, in L2: =F2/B2, formatted as a percentage.
  • Trial-to-paid rate, in M2: =I2/H2.
  • Four-week change in signups: =(H5-H2)/H2, which returns -0.43 (-43%).

If a number differs, the spreadsheet wins until proven otherwise. If you would like a longer walk through letting a chat tool help with the formulas themselves, the older ChatGPT for Excel guide covers that. For messy exports that fail the reconciliation, cleaning messy data with AI comes first.

Where ChatGPT starts guessing about causes

The week 3 churn spike is where the tool can go wrong. A sentence like "churn rose because customers were unhappy with the recent pricing change" reads well and rests on nothing in the file. It has no access to your pricing history, your support tickets or your competitors, so any reason it gives is a hypothesis. The prompt above asks for "possible, not known" labels precisely so that your eyes catch it.

Now use the optional churn_detail column. Here is the week 3 detail, with illustrative data:

week_ending,account_id,plan,mrr,reason_code
2026-10-18,A-0412,Team Annual,1500,competitor
2026-10-18,A-0877,Starter,49,payment_failed
2026-10-18,A-0431,Starter,99,no_longer_needed
2026-10-18,A-0502,Starter,99,payment_failed
2026-10-18,A-0560,Starter,99,price
2026-10-18,A-0611,Starter,99,payment_failed
2026-10-18,A-0690,Starter,155,other

Ask: "Of the $2,100 churned in week 3, how much came from one account, how much from failed payments, and what would the churn rate have been without the largest account?" The answer: $1,500 from one annual account (71% of the week's churn), $247 from three failed payments (49 + 99 + 99), and a rate excluding the large account of 600 / 42,400 = 1.4%, in line with weeks 1 and 2. Without that one loss, the churn spike disappears. What remains is a weaker funnel, which is the problem worth your attention. The failed-payment accounts are small, but they are also the easiest to win back with a card-update email.

A mistake that looks like insight: mixing churn definitions

Picture a founder who asks ChatGPT for the "average churn" of the four weeks and gets 2.8% back. The tool has averaged the four weekly percentages: (1.5 + 1.7 + 5.0 + 3.1) / 4 = 2.8%. The sum is correct, but it is a weekly figure that gives every week equal weight whatever its MRR base, and it is easy to drop into an investor note as if it were the month's churn. The figure for the period is total churned divided by opening MRR: (600 + 700 + 2,100 + 1,300) / 40,000 = 4,700 / 40,000 = 11.75% over the four weeks. Strip the one large account and it is 3,200 / 40,000 = 8.0%.

Nothing was invented, yet a reader who saw "2.8% churn" without the word "weekly" would think the month was a quiet one when it lost more than a tenth of its opening MRR. The fix is to state the definition in the prompt: "Report period churn as total churned MRR divided by opening MRR, not as an average of weekly rates." Add a second guard against another common confusion, revenue churn versus customer churn. Losing one $1,500 account and losing six $99 accounts are the same customer-count problem only if you count heads. Always say which one you mean.

Keeping the definitions stable from one Monday to the next

Most arguments about startup numbers are really arguments about definitions. Write yours once, in a short block you paste above every prompt, and never let ChatGPT choose them for you. A block that works for the example business looks like this:

Definitions for this business (do not change them):
- MRR counts active paid subscriptions only, normalised to a monthly amount.
  Annual plans are divided by 12. Free trials are excluded.
- Churned MRR is the monthly value of subscriptions cancelled or lapsed
  in the week. Downgrades go in contraction, not churn.
- A signup is a new trial account, counted in the week it starts.
  A paid conversion is counted in the week the trial becomes a paid
  subscription, whatever week the trial began.

The last line matters more than it looks. If conversions are counted in the week the trial ends, while signups are counted in the week it starts, the weekly trial-to-paid rate is a ratio of two different groups of people. With a 14-day trial, this week's conversions mostly come from signups made two weeks earlier, so a week with a signup spike shows a falling rate even when nothing changed. Say how you count, keep to it, and the trend stays honest even if the level is slightly off. Where your billing tool counts differently from your definition, note the gap in the file rather than quietly adjusting numbers.

Follow-up questions that earn a second pass

After the first table, three follow-ups tend to pay for themselves. Keep them short and ask for evidence each time.

  • "Which week breaks the trend, and by how much?" The model should name week 3 and compare with the average of weeks 1 and 2. Check the figure.
  • "If the trial-to-paid rate stays at 7.5% and signups stay at 120 a week, what is new customer volume next month?" That is 120 x 7.5% = 9 paid a week, or about 36 over four weeks. At roughly $100 of MRR each, that adds about $3,600 of new MRR before churn. It is a forecast under stated assumptions, not a prediction.
  • "What would I need to see next week to say the funnel has stabilised?" A good answer sets thresholds, such as signups above 150 or a trial-to-paid rate back above 9%, rather than vague comfort. You can disagree with the thresholds, which is the point.

A fourth, useful when you suspect the data: "Which of your answers depends on an assumption about the data that I have not confirmed?" The reply often flags a definition you did not specify.

A fifteen-minute Monday routine

  1. Minutes 0 to 3: export the week from your billing tool and paste the new row into your weekly sheet. Check that the reconciliation column shows zero.
  2. Minutes 3 to 5: save a copy without any customer-identifying columns and upload it with the standing prompt. Keep the prompt in a note, not in your head.
  3. Minutes 5 to 8: read the table and the possible causes. Mark anything that surprised you.
  4. Minutes 8 to 12: rebuild the three figures yourself using the formulas above. Fix or discard anything that does not match.
  5. Minutes 12 to 15: write three lines in your team's channel: what moved, the likely reason with its confidence level, and the one action for this week.

The routine fits a one-person business and also a team of five. If you later want the output as a monthly note for backers, drafting investor updates from metrics uses the same verified numbers. If your sales are on marketplaces rather than subscriptions, a weekly review of Amazon business reports follows the same pattern with different columns.

A four-sentence update you can send

When the numbers are checked, ask ChatGPT for a note of no more than four sentences for your co-founder or advisers, and edit it yourself. For the example above, a good version reads: "MRR rose 2.5% over four weeks to $41,000, but net new MRR turned negative in week 3. One $1,500 annual account explains most of that week's churn. The bigger concern is signups, down 43% from week 1, with trial-to-paid slipping from 10.0% to 7.5%. This week we will look at where signups are coming from and chase three failed payments." Every figure in it is traceable to a sum you have already checked, which is what makes it safe to send.

What this approach cannot tell you

ChatGPT reads one table at a time. It does not know that you launched a price test on the 12th, that a partner newsletter ran in week 1, or that a competitor changed their offer. Add those events to the file as a notes column, one short line per week, and ask for the analysis again. The answers improve noticeably when the tool has the context only you hold.

It also cannot replace cohort analysis, which follows groups of customers by sign-up month, or proper attribution of marketing spend. For a business below a few hundred customers, the weekly flow table is usually enough. Once you have hundreds of customers and multiple plans, move to the tool your billing system provides for cohorts and use ChatGPT to explain its reports instead of replacing them.

Finally, keep the founder's judgement in the loop. A figure only matters if it changes a decision: whether to chase failed payments, pause a campaign, call the account that left, or hold off a hiring plan until the funnel recovers. If the weekly review has not changed one decision in a month, change what you export, not how much you read.

Four more places the same method works

  • A financial adviser's practice: export monthly recurring advice fees by client band (IDs only) and ask ChatGPT where fee income fell compared with the previous quarter, with the arithmetic shown.
  • An HR consultancy: upload weekly billable hours by project code and ask for projects whose hours exceeded the quoted allowance by more than 10%, listing the sums.
  • A mortgage broker: export enquiries, applications submitted and completions per week, then compare conversion between stages, reconciling totals against the CRM.
  • A software reseller's renewals desk: list licences due for renewal in the next 90 days by value band and ask which band carries most of the revenue at risk.

In every case the sequence is the same: reduce the file to what the question needs, state the definitions, demand visible arithmetic, and check three figures yourself. The tool gets you to a draft reading of the numbers in minutes. The decision about what to do with that reading stays with you. If you would rather set this routine up around your own billing and analytics tools with someone, we can map it together in an AI implementation consultation.

Questions founders ask before pasting their numbers into ChatGPT

Can I upload a CSV with customer names and emails?

Avoid it. The analysis needs account IDs, plan names, amounts and dates, not people. Replace names and email addresses with an ID before upload, keep the lookup table on your own machine, and re-attach names yourself once ChatGPT points at an ID worth a phone call.

Which ChatGPT plan do I need for this?

Any plan that can run data analysis on an uploaded file will do for a small weekly CSV, and Plus is $20 a month. Limits on file size and usage change often, so check the file-upload help page. If other people on your team will use it, a business plan does not train on your content by default.

How often should I run the review?

Weekly for flow figures such as signups, trials and new MRR, because a week is long enough to see a pattern and short enough to act on. Monthly is better for churn rates and payback figures, where a single week is too noisy to mean much.

Should ChatGPT or my billing tool calculate MRR?

Your billing system or accounting records stay the source of truth for MRR. ChatGPT reads the export you give it and explains movement. If the two disagree, trust the billing system, then find out why the export differs.

What if ChatGPT's numbers do not match my spreadsheet?

Take your spreadsheet as the reference and ask ChatGPT to show the exact rows and formula it used. The usual causes are a header row counted as data, a blank cell treated as zero, or two definitions of churn mixed together.

Further reads

Sources: OpenAI's ChatGPT pricing and data-controls help pages, and the ChatGPT file-upload and data-analysis help documentation.

Want your weekly metrics review set up properly?

On a 1:1 call we'll look at the exports your billing and product tools can produce, decide which five numbers belong in your Monday review, and set up a routine you can run in fifteen minutes.

Book a 1:1 call with me