Self-hosted. Your data never leaves your infrastructure.
Every business you run. One honest set of numbers.
BizOrg is a command centre for founders running several small businesses at once. What each one earns, what it actually costs, what is quietly about to break, and which one deserves your attention this week.
No account, no email, nothing to cancel. The demo is read-only and runs on generated figures.
Recurring costs are spread across the months they cover, so a yearly plan shows as a twelfth each month rather than one spike.
Four businesses side by side with costs included, so the one quietly losing money is obvious rather than averaged away. Figures shown are illustrative.
Running a portfolio fails in three specific ways
Not because the work is hard, but because the picture only exists in your head and across nineteen browser tabs.
You know revenue. You do not know profit.
Stripe emails you every sale, so income is visible. Costs are scattered across a dozen dashboards, so profit per business is a guess. The business you assume is carrying the others sometimes is not.
The boring things fail quietly.
A domain lapses. A privacy policy goes missing. A site stops converting and nothing says so for a month. None of it is hard to prevent, and all of it depends on somebody remembering.
Attention goes to whatever shouted last.
Without the businesses side by side, the one that emailed you this morning wins your afternoon. The one quietly earning the most per hour of attention gets none.
One place for the whole operation
Each business gets fourteen tabs and a template that shapes its checklists and which rules apply, so a local business is never nagged about crash reporting.
Money, properly
- Connect Stripe and Square, or import any CSV. A charge that arrives twice is still one row.
- Costs carry vendor, category and frequency, and a yearly plan counts as a twelfth each month rather than one spike.
- Shared costs split across businesses, or sit as portfolio overhead where they belong.
- Revenue, refunds, fees, tax and estimated profit follow one definition everywhere.
Thirty-eight things watching
- Domains expiring, businesses running at a loss, revenue and traffic falling, refunds climbing, backups going stale.
- Every threshold is visible and tunable. Every rule can be switched off. You can write your own.
- Alerts say why they fired. Health scores list the criteria behind them.
- A focus ranking tells you which business to work on, and shows its reasoning.
Growth and traffic
- Campaigns with computed ROAS, CAC, CTR and conversion rate, never estimated.
- Experiments whose conclusions become something you can look up later.
- Google Search Console and Analytics sync clicks, impressions, sessions and revenue per month.
- Eleven report types, from a monthly review in plain language to profitability side by side.
The operational half
- Domains, services and what each provider costs, with a cost trend you can group and filter.
- Legal items, contacts, launch checklists, tasks, notes and a complete activity log.
- One-click zip backups of each project's repository, to a drive you choose.
- A reference vault for the strings you keep leaving the app to find.
Built to be argued with
A number you cannot interrogate is a number you cannot act on. Four rules the whole thing follows.
It never guesses
A metric missing its inputs shows a dash and tells you what would unlock it. When Google exposes no conversion figure, the column is empty rather than zero, because a zero reads as a business fact instead of a missing measurement.
Everything explains itself
Alerts say why they fired. Projections state their formula and grade their own confidence. You can disagree with any number and follow it back to the transactions underneath.
Complete periods only
Search and traffic figures exclude the current month, because the provider is still finalising it. A partial month shown as a whole one looks exactly like a collapse.
One currency, honestly
Money in another currency is reported separately rather than converted at an invented exchange rate. A number you cannot trace is worse than no number.
It runs on your infrastructure, not ours
Every figure in this app is the financial position of businesses you own. That is not data to hand to a vendor in exchange for a monthly invoice and a promise.
BizOrg is a Next.js application with its own database. You deploy it, you hold the keys, and nothing is sent anywhere unless you connect a provider yourself. The licence is verified on your own machine, so the app never phones home, and it keeps working whether or not anyone is still selling it.
- Two-factor sign-in
- A code emailed on top of your password, with recovery codes so a mail outage never locks you out.
- Encrypted at rest
- Provider tokens and saved credentials are encrypted. A database dump yields nothing usable.
- Any PostgreSQL
- Runs on a hosted database, or entirely offline on an embedded one with no server at all.
- Export whenever
- Every table as JSON, every entity as CSV, on demand. Leaving is a download, not a support ticket.
What running it actually involves
Stated plainly, because “self-hosted” means nothing until you know the work.
A standard Next.js app. Import it into Vercel, a VPS, or your own machine.
Any PostgreSQL. Migrations run themselves on deploy. Locally it runs on an embedded database with no server at all.
A secret, a database URL, a licence key and a mail sender. Everything else is optional.
CSV import and manual entry cover every screen. Connect Stripe or Google only when you want it to stop being manual.
The honest trade: when you self-host, the work a vendor would do becomes yours. Upgrades, backups and uptime are on you. In exchange nobody else holds your financial position, there is no invoice that can be raised, and no company whose closure takes your data with it.
What it deliberately does not do
Stated here rather than discovered later, because finding out after you have paid is worse.
- It is not accounting software. It gives explainable operating numbers, not double-entry books or a tax filing.
- It does not convert currencies. Foreign amounts are reported on their own.
- It does not store files. Documents are links to wherever they already live.
- It does not guess at anything a provider's API will not tell it.
Bought once, not rented
A licence key is a signed file verified on the machine that holds it. There is no activation server and no subscription to lapse. An unlicensed copy runs every feature and holds three businesses, so you can judge it properly before paying for anything.
If a licence ever expires, nothing is hidden, locked or deleted. Only adding another business is refused. Your exports keep working regardless, because the data was always yours.
What a licence changes
- UnlicensedEvery feature, up to three businesses, full export.
- LicensedUnlimited businesses. Nothing else differs.
- LapsedNothing hidden or deleted. Only new businesses are refused.
Stop guessing which business is carrying the others
Put them side by side, with the costs included and every number traceable to the transactions underneath it.