shouldivibecodeit

Should I vibe codeFathom HQ?

Financial reporting, KPI dashboards, consolidations, and forecasting for businesses

The bug is not a stack trace. It is a plausible number, beautifully formatted, in a board pack you already presented.

?

Their verdict, the Starter price and the build-time estimate come from their entry, MIT-licensed. Checked 2026-08-04.

Can you build it?asked by canivibecodeit.com ↗KINDAweekend project · multi-day
?

Our verdict, the regret score and everything below it. Editorial and unsponsored — nobody can pay to be moved.

Should you ship it?asked by usYOUR FUNERALit’ll work. then it’ll get you.

The honest answer

why the verdict is what it is

A chart of your own revenue is not what Fathom sells. What it sells is a document that leaves the building: the board pack, the covenant report to the bank, the monthly advisory deck an accountant puts in front of a client who then decides whether to hire someone. Rebuilding that means pulling the general ledger out of Xero or QuickBooks and re-deriving figures the accounting system already computes under rules — accruals, six hundred account codes mapped into a dozen report lines, intercompany eliminations, currency translation, a cash flow statement that actually ties to the balance sheet. None of it is hard to write. All of it is hard to be right about, and every error is silent: a plausible number, beautifully formatted, presented with confidence, wrong. A dashboard you read over coffee is a fine weekend. The moment its output has a recipient who is not you, you have taken on the job of asserting financial facts about a business to people who act on them.

What actually breaks

not "if". the specific failures.

  • The account mapping, quietly — someone adds an expense code in Xero, no rule in your report references it, and gross margin improves by four points for reasons nobody goes looking for
  • Consolidation, where intercompany balances that should net to zero do not, and group revenue is overstated by exactly the amount two of your entities bill each other
  • Currency translation, which wants closing rates for balance sheet items and average rates for the P&L, and produces a translation reserve that will not balance if you use one rate throughout
  • Comparatives after a prior-period adjustment, because your snapshot of last quarter and the accounting system's version of last quarter are now two different documents
  • The OAuth connection, which expires, gets revoked when a bookkeeper leaves, or starts quietly returning a partial ledger after a refresh you did not handle as an error
  • The forecast, which began life as a formula assuming constant payment terms and is now a commitment somebody made to a lender
  • Rounding, where each line rounds independently and the total is off by one — the specific error a CFO spots in eight seconds and never fully trusts you after
and then, at 3am

The quarterly pack went out Thursday showing a 41% gross margin, and the bank's covenant test is written against that line. On Sunday the client's bookkeeper mentions, in passing, that she added a new cost-of-sales account in March because the old one was getting crowded. Your mapping table was written in January. It has no rule for the new code and your fallback bucket is operating expenses, so eight weeks of direct costs have been sitting below the gross margin line in every report since. The corrected figure is 33%. The pack is a PDF in an email to nine people, three of whom do not work for the client, one of whom has already forwarded it with a note about what a good quarter it was.

Is that you?

the verdict is a default, not a law

ship it if
  • The only reader is you, and every number is a prompt to go and check the accounting system rather than a conclusion
  • It covers a single entity in a single currency, with no consolidation and no eliminations
  • Every figure on screen links back to the transactions that produced it in one click
  • You reconcile the derived statements against the accounting system's own P&L and balance sheet on every refresh, and refuse to render when they disagree
don’t ship it if
  • The output goes to a board, a bank, an investor or a client
  • You are consolidating multiple entities, multiple currencies, or both
  • You are an accountant and clients are paying you for these numbers
  • The forecast will be quoted back to somebody as a commitment

If you build it anyway

the checklist, then the prompt that enforces it

  1. Reconcile before you render. Pull the accounting system's own P&L and balance sheet totals alongside the ledger, assert your derived statements match to the cent, and fail loudly rather than drawing a chart that disagrees with the books.
  2. Make the account mapping explicit and total. Every code maps to a report line by an authored rule, and a code with no rule stops the report instead of falling into a default bucket.
  3. Snapshot the source data with every published report, together with the mapping version and the run timestamp. A report you cannot reproduce next quarter is a screenshot, not a report.
  4. Treat consolidation as its own project with its own tests: intercompany eliminations, minority interests, closing rates on the balance sheet, average rates on the P&L, and a translation reserve that balances.
  5. Keep the connection read-only. Request read scopes only and never build a write path back into the ledger to tidy something upstream.
  6. Put a forecast's assumptions on the same page as its number and version them. A forecast with invisible assumptions gets repeated as a fact within a week.
  7. Watermark drafts and make published reports immutable, with a visible version and issue date, so a corrected pack is distinguishable from the one already circulating.
the guardrail prompt
I am building management reporting over my accounting system's ledger. The danger
here is a wrong number that looks right, so hold these lines even when I push.

1. Reconciliation before any chart. Fetch the accounting system's own P&L and balance
   sheet totals for the period, compare them against what my report derives from the
   ledger, and refuse to render if they differ by a cent. Show me the difference.
2. The account mapping is authored, never inferred. Every ledger code maps to a report
   line by an explicit rule; an unmapped code raises an error. Do not add a catch-all
   bucket, and tell me why a catch-all is the failure that hides for a whole quarter.
3. Request read-only OAuth scopes and build no write path back into the ledger. Handle
   token expiry, revocation and partial responses explicitly — a truncated ledger is an
   error, not a smaller number.
4. Store an immutable snapshot with every published report: source data, mapping version,
   period boundaries, run timestamp. I need to reproduce last quarter's pack exactly,
   including its mistakes.
5. Round once, at presentation, from full-precision values, and derive totals from the
   unrounded figures. Never sum rounded lines.
6. Do not build consolidation, eliminations or multi-currency translation until I ask
   twice. When I do, warn me that closing rates apply to balance sheet items and average
   rates to the P&L, and write a test proving intercompany balances net to zero.
7. Forecasts render their assumptions beside the number, versioned. Refuse to emit a
   forecast figure with no visible basis.
8. Anything unreconciled is watermarked DRAFT across the export. Published reports are
   immutable and carry a version and an issue date.
9. Out of scope for v1: benchmarking against other companies, generated commentary, and
   anything that emails a report on a schedule without me pressing send.
10. If I tell you this is going to a bank or a board, say plainly that $59 a month buys a
    vendor who has already been wrong about consolidation once and fixed it.
paste this before you build — not after something breaks28 lines · 2067 chars

That one keeps you out of trouble. For the prompt that actually builds it, canivibecodeit.com has one.

their build prompt ↗

Or don’t build it

the boring option, and the way back out

just pay for it

The moment a number leaves your own screen. Fifty-nine dollars a month for one company buys consolidation logic that has been argued over with real accountants, currency translation that balances, report layouts a bank recognises, and — the valuable part — somebody other than you to be wrong when a figure is wrong. Weigh that against the hourly rate of whoever re-checks your mapping table every quarter and it is not close.

$59/mo is cheaper than your weekend.

your exit plan, if you already built it

Everything upstream of your tool still lives in the accounting system, so the exit is about what you added: the mapping table, the report definitions, the forecast assumptions and the archive of published packs. Keep the mapping as a versioned CSV in the repo rather than rows in a database, export every published report as a PDF plus the CSV it was built from, and retain the raw ledger extracts. Then abandoning the project costs a spreadsheet rebuild rather than a year of missing history.

prior art · someone already did this
Metabase

Open-source BI layer that will happily chart a ledger extract, while having no opinion on whether the numbers are right.

Apache Superset

Mature open-source dashboarding and SQL exploration platform, good for the presentation half of the job.

Questions

Isn't this just a dashboard over an API I already have a token for?

The dashboard is an afternoon. The gap is that Fathom is not displaying the ledger, it is restating it: mapping hundreds of account codes into report lines, deriving a cash flow statement that ties to the balance sheet, absorbing accruals and prior-period adjustments, consolidating entities. Those are accounting decisions with right answers, and a chart that gets them wrong is visually identical to one that gets them right.

Why is regulatory exposure only 5 when this is financial reporting?

Because management reporting for a private company is not itself a regulated activity — nobody files these. What does apply is that the underlying books carry retention obligations, the ledger extract you are now storing contains personal data such as employee and customer names, and a materially wrong statement relied on by a lender is a liability question rather than a compliance one. Serious, but not HIPAA or PCI.

What is the version of this that is genuinely fine to build?

Read-only, single entity, single currency, for yourself, reconciling its totals against the accounting system's own P&L on every refresh and letting you click any figure through to the transactions behind it. That is a good weekend and it will make you better at reading your own books. Consolidation, forecasting and anything with a distribution list are where it stops being a weekend.

sources
  • IRS — what kind of records should I keep
  • GDPR Art. 5 — principles relating to processing of personal data (EU)
did you build it?

Every week, someone ships something they shouldn’t have.

New verdicts, the worst thing that landed in the trap, and the occasional incident report. No other email, ever.

also on the regret index
FreshBooksABSOLUTELY NOT

Your rounding bug is not a bug. It is a discrepancy on a filing with your name on it.

Invoice NinjaYOUR FUNERAL

An invoice is a legal document. Your off-by-one is now a tax discrepancy.

AirtableDEMO ONLY

A spreadsheet with types is easy. A spreadsheet with types that a team edits at once is not.

last reviewed 2026-08-05 · verdict is editorial and unsponsored · shared entry data from canivibecodeit under MIT · not legal advice