I'm a finance manager who writes code.
I built four free calculators that show their working: tax add/remove, margin vs markup, loan repayment, invoice check.
No sign-up. Runs on your device. Works offline.
https://t.co/qTg3pEVbk3
Pulled the "latest" image of an open-source tool, then checked the version: v8.8.0-pre, built from the main branch.
"latest" isn't always a release.
For anything holding real records, pin the image to a stable version number.
If I were preparing a finance career for AI:
Month 1: enough SQL to answer one real work question a day.
Month 2: automate one report you rebuild every month.
Month 3: turn one full process into a tool, with check records.
No need to quit to do it.
Work manuals end up everywhere: a Word file, a PDF, someone's chat history. When that person leaves, the know-how leaves too.
I put mine in BookStack, a self-hosted wiki: shelves, books, chapters, pages. Full-text search, every edit versioned.
Merged a folder of Excel files and the total came out too high?
Check each source file for a "Total" row. Drop it after reading, or the merged sum counts every subtotal again.
Then tie it: rows in = rows out, amounts in = amounts out.
A loan of 50,000 at 9.5% over 36 months: 1,601.65 a month.
The last payment is 1,601.56, because rounding has to land somewhere. Most calculators hide that. Mine prints it.
https://t.co/iWqGymBGVP
The only budgeting AI I'd trust runs on my own computer. Bank statements are the last thing I want in the cloud.
Rules first (the subway is travel, no AI needed). A local model only for what the rules can't place. Spot-check 10 lines a month.
If one of my 7 self-hosted services died, I used to hear it from whoever couldn't open it.
Now Uptime Kuma checks each one every few dozen seconds and alerts me.
The catch: it runs on the same PC it watches. If that PC loses power, nobody gets an alert.
Before trusting SQL an AI wrote, run it on a period you already know the answer for.
If last month's total doesn't match the signed-off report, the query is wrong, however clean it looks.
Seven rules I follow when AI helps me build finance tools:
Money is Decimal. Raw exports are read-only. Every number traces to its source. Tests before trust. A person approves anything that moves money. Secrets stay out of code.
AI drafts; I audit.
Finance tasks AI is shrinking: rule-based entries, ticking reconciliations, formatting the same monthly report.
Tasks worth more now: deciding whether to pay, explaining why profit moved, checking whether the AI's numbers are right.
Fixed asset register in Excel: who has which laptop is known only by whoever keeps the sheet.
Snipe-IT tracks tag, serial, cost, check-out and depreciation.
The step most guides skip: export it monthly and tie total cost and accumulated depreciation to the ledger.
Python's round(2.5) returns 2, not 3.
It rounds exact halves to the nearest even number. Fine for statistics, wrong for most invoices.
For money: Decimal, ROUND_HALF_UP, and say so in the code.
Invoices get re-added by hand more often than anyone admits.
I made a checker that does it line by line, then compares with the total printed on the invoice and shows the difference.
https://t.co/MFWI58paRB
Online PDF tools want the file uploaded first. Invoices, contracts, bank statements: I'd rather not.
Stirling-PDF runs in the browser on my own PC. Merge, split, OCR, compress.
The catch: it's the memory hog of my setup. 896MB, against 24MB for my password vault.
Three things I do the day I install any self-hosted tool:
1. Change the default admin password.
2. Turn off public sign-ups.
3. Never open the port to the internet.
Several tools I tested ship with at least one of these wide open.
What AI took off my desk this year: ticking reconciliations, merging files, first drafts.
What it didn't: deciding whether to pay, explaining a variance, signing the report.
What is the most repetitive hour in your week?
Same $20 profit, two different answers:
Cost 80, price 100.
Margin = 20 / 100 = 20%
Markup = 20 / 80 = 25%
Mix them up in a pricing sheet and every product is off.
Calculator: https://t.co/J3nD4IV4Zi
Borrow 10,000. Repay 1,000 a month for 12 months.
"2,000 interest on 10,000, so 20%." Not quite. You repay principal every month, so you never hold the full 10,000.
Real rate: 2.92% a month, 35.07% a year, 41.30% compounded.
Excel agrees: =RATE(12,-1000,10000)*12
The SQL bug I see most in finance queries:
Join invoice headers to invoice lines, then SUM the header total. An invoice with 5 lines gets counted 5 times.
10-second check before any SUM:
COUNT(*) vs COUNT(DISTINCT invoice_id)
If they differ, your rows have multiplied.