Your numbers, explained in a minute.
Ask Lodestar about a figure and it works out the answer from your code and your data, then shows how it got there. Below, the same question goes to an engineer by ticket and to Lodestar at the same time.
The usual way
Not started- You message an engineer.
- They ask you to raise a ticket.
- The ticket is picked up.
- An afternoon spent tracing the report back through the data.
- The answer arrives, a day after the meeting it was for.
Lodestar
Not startedThe clock is sped up. Lodestar's minute takes ten seconds here, and the three working days take about thirty more.
Click any number in the report to see where it came from.
This is a monthly operations report for a made-up company. Each figure and each bar in the chart opens Lodestar’s explanation.
Lodestar traces a figure back to the code behind it.
A figure in the board pack comes from a dashboard, which reads a report, which reads a data model, which reads code someone wrote years ago. An engineer takes an afternoon to trace that by hand. Lodestar does it while you watch.
Sales says 1,240. Which is right?
The figure as the board sees it: 1,284 active customers at 30 September.
board_pack_2026_09.pdf p.3 source: dashboard "Board summary" / tile "Active customers"
The dashboard tile shows whatever the Customer summary report says and does no counting of its own.
dashboards/board.yml:12 tile: active_customers query: reports.customer_summary.active
The report counts every account whose status is "open". The sales dashboard uses a different report that also checks for unpaid invoices.
-- reports/customer_summary.sql:41 select count(*) as active from analytics.customer_status where status = 'open';
An account paused for unpaid invoices keeps the status "open", and that is where the two figures split. 44 accounts are paused today.
-- models/customer_status.sql:18 case when closed_at is not null then 'closed' else 'open' -- paused_at is ignored end as status
The billing system pauses an account after 30 days unpaid but never closes it, so paused accounts stay "open" in every layer above.
// billing/accounts.ts:88
if (daysOverdue(account) > 30) {
account.pausedAt = now(); // never sets closedAt
}Both figures are right because they count different things.
1,284 includes 44 accounts paused for unpaid invoices, because the billing system pauses them but never closes them. If the board means customers you can bill, use 1,240.
What Lodestar does
● marks what you can use today. Everything else comes with version 1.
ASK
TRUST
CONTROL
TEAM
CONNECT
RUN
Start with a pilot and grow from there.
- Up to 20 people
- We set it up with you
- Half credited to your first year
- 25 people included
- Every feature, on your servers
- Upgrades and support
- Priced so the whole team can ask
- 50 people: $39,000 a year
- 100 people: $57,000 a year
We show our working on the price, too.
Pick a team size to see every line of the first year’s bill.