Demo
Renewal history, rebuilt from invoices
A billing system that moves each service’s due date on as soon as a renewal invoice is made cannot say what was due, renewed or lost in any past month. This demo rebuilds that history from the invoice lines, then turns it into monthly churn and renewal figures.
This is a simulation. No AI model runs on this page: the rules are ordinary code in your browser. The company, its customers, plans, prices, invoices and cancellations are all invented, and the months are numbered, not dated. Nothing you do here leaves your browser or is kept, and reloading the page starts again.
The setting is an invented software company, left unnamed, that sells a planning app on monthly and annual plans. It has 200 made-up customers with 253 services between them, and 18 months of made-up invoices. Month 18 is this month.
1. What the billing system shows today
The billing system keeps one next due date for each service and moves it on the moment a renewal invoice is made, paid or not. Only a service that stopped keeps an old date. This is the table as it stands in month 18.
| Service | Product | Status | Next due |
|---|---|---|---|
| S-001Alder | Team planMonthly | Cancelled | Month 12 |
| S-002Spruce | Studio planAnnual | Active | Month 28 |
| S-003Poplar | Solo planMonthly | Suspended | Month 12 |
| S-004Rook | Team planMonthly | Active | Month 19 |
| S-005C-005 | Solo planMonthly | Active | Month 19 |
| S-006C-006 | Solo planMonthly | Active | Month 19 |
| S-007C-007 | Studio planAnnual | Active | Month 23 |
| S-008C-007 | Priority supportAnnual | Active | Month 23 |
| S-009C-008 | Team planAnnual | Active | Month 22 |
| S-010C-009 | Team planMonthly | Active | Month 19 |
Page 1 of 26
2. One service, rebuilt step by step
- Step 1 Read the invoice lines
- Step 2 Mark the months paid for
- Step 3 Find the months a renewal was due
- Step 4 Decide each due month
Step 1 of 4: Read the invoice lines
Each invoice line should carry the billing period it pays for. Some lines carry no dates, so the period is read from the words on the line. A line with no period at all (a credit, say) is left out.
Found: 10 invoice lines: 8 with dates on the line, 2 with the period read from the text.
Invoice lines for S-001
I-0001 $40.00 Paid
“Team plan, 4 seats, month 2”
Period: Month 2 (dates on the line)
I-0002 $40.00 Paid
“Team plan, 4 seats, month 3”
Period: Month 3 (dates on the line)
I-0003 $40.00 Paid
“Team plan, 4 seats, month 4”
Period: Month 4 (dates on the line)
I-0004 $40.00 Paid
“Team plan, 4 seats, month 5”
Period: Month 5 (dates on the line)
I-0005 $40.00 Paid
“Team plan, 4 seats, month 6”
Period: Month 6 (read from the text)
I-0006 $40.00 Paid
“Team plan, 4 seats, month 7”
Period: Month 7 (dates on the line)
I-0007 $40.00 Paid
“Team plan, 4 seats, month 8”
Period: Month 8 (dates on the line)
I-0008 $40.00 Paid
“Team plan, 4 seats, month 9”
Period: Month 9 (read from the text)
I-0009 $40.00 Paid
“Team plan, 4 seats, month 10”
Period: Month 10 (dates on the line)
I-0010 $40.00 Paid
“Team plan, 4 seats, month 11”
Period: Month 11 (dates on the line)
Months 1 to 18 for S-001
- Month 1.
- Month 2.
- Month 3.
- Month 4.
- Month 5.
- Month 6.
- Month 7.
- Month 8.
- Month 9.
- Month 10.
- Month 11.
- Month 12.
- Month 13.
- Month 14.
- Month 15.
- Month 16.
- Month 17.
- Month 18.
Each month shows, as the steps add them: paid or unpaid; not started, start, due or ended; renewed, lost or pending.
3. The dashboard, built fresh
The pipeline reads every table from the billing system, turns every price into a monthly figure, rebuilds every service’s history as in part 2 and measures each month. Nothing is kept from an earlier run.
How each product gets its category
The rules are a plain list that someone who does not write code can edit. They are tried in order, and the first whose words appear in the product’s name wins.
- A name containing “storage”: Extras
- A name containing “support”: Extras
- A name containing “solo”: Personal plans
- A name containing “plan”: Business plans
- Anything else: Other
Recurring revenue, months 1 to 18
Recurring revenue at month end
New and lost recurring revenue
Revenue churn
Renewal conversion
- New or kept
- Lost
- Month on the tiles (shaded, bar outlined)
The numbers behind the charts
| Month | Started | New | Lost | Ended | Revenue churn | Renewal conversion | Pending |
|---|
What the demo shows
- History from invoices, not from the live table. The live table keeps only the latest due date, so it finds almost nothing due in a past month, and only services that stopped. The rebuilt history finds every renewal that was due, from the billing periods on the invoice lines.
- Periods read from the words when the dates are missing. About one line in five carries no dates; its period is read from its text. A line with no period at all, such as a credit, is left out rather than guessed.
- Renewed, lost or pending. A due month that was paid for is renewed. One that was not is lost, as cancelled with the customer’s reason or as not paid, except in this month, where an unpaid renewal is still pending and is not counted as lost.
- Every price as one monthly figure. Annual prices are divided by twelve, and the quantity is taken from whichever field holds it, so monthly and annual customers add up on one scale.
- Categories set by rules, not code. Each product’s category comes from an ordered list of rules where the first match wins.
- Figures that add up. Each month ends at its start plus new revenue less lost revenue, and the next month starts there. The tests check the rebuilt history against the record the invented data was made from, service by service.