The license invoice that never ends
Per seat, per year, forever, rising, for a runtime designed before the IBM PC. It isn't a roadmap you're funding — it's a subscription to the past, and it goes up when you add a warehouse.
Unique Business Basic · Since 1947
Thousands of distributors and manufacturers still run the entire company on Business Basic — on a server that's a decade old, under a per-user license that never ends. UBB is a clean-room Business Basic runtime and the managed cloud beneath it. Your programs and your data files run unmodified, byte for byte. Half the license you pay now, and hosting is free.
We didn't build this to sell it. We built it because we run on it.
Unique Photo · Fairfield, New Jersey · est. 1947
Our own inventory, orders, purchasing and accounting run on a Business Basic ERP.
They run on this engine.
Three example screens from a distribution ERP running on the UBB runtime: a system master menu, a customer master inquiry showing aging and balances, and an item master maintenance screen.
↑ A distribution ERP running end to end on our engine — sign-on through customer inquiry, item maintenance and sales reports. Unmodified programs, 80×24, same F-keys, same muscle memory.
01 The math today
The software works. That's the awkward part — order entry written in 1987 still ships product every single day. It's everything around the software that's failing.
Per seat, per year, forever, rising, for a runtime designed before the IBM PC. It isn't a roadmap you're funding — it's a subscription to the past, and it goes up when you add a warehouse.
Eleven years old, in a closet, no DR, and everyone is quietly afraid to reboot it. There's a cold spare somewhere, and a backup nobody has restored end to end since the person who knew how retired.
When they retire, so does the company's ability to change anything. The bench is not being refilled, and every year the queue of "can we just change this one thing" gets longer.
Four million dollars, three years, and a coin flip on whether it lands at all. Twice now. Meanwhile the business you'd be re-implementing keeps changing underneath the project that's re-implementing it.
02 Why us
We didn't build this to sell it. We built it because we run on it.
Unique Photo has been in business since 1947. We're a distributor — and like every distributor our size, we run the company on a Business Basic ERP. Inventory, orders, purchasing, accounting. It has worked for decades, and we're not embarrassed by it.
But every year the license invoice arrived. Every year the box got older. We collected the rewrite quotes, and they were absurd: millions of dollars and three years to replace software that was already doing the job correctly.
So we wrote our own runtime instead. It took a long time and a lot of measurement, and today it runs our company.
That means our incentives aren't the usual ones. We're not a consultancy that has never had to close a month on the software it's selling you. If this engine gets a number wrong, our warehouse stops shipping before yours does.
The whole story, since 1947Don't rewrite. Don't re-license. Move the runtime.
There is exactly one component in that stack that has to change, and it isn't your code, your data, your screens or your people. It's the interpreter underneath them.
03 Getting started
Three steps, and not one of them is a rewrite. Your source is never edited and your files are never converted — they move up as they are, onto your own URL, and your people sign on to the same screens they used on Friday.
01Sync your programs
Upload a tarball of your program library and our parser runs the whole corpus automatically — 5,079 programs and 536,000 lines at a 100% parse rate on a real production library. The report comes back on its own: no call, no salesperson, no obligation.
02Sync your data
Your ERP runs in our cloud against a copy of your data, in parallel with the runtime you have now. Same inputs, both engines, output diffed — reads, writes and arithmetic compared value by value until the difference is nothing. Most people want a clean month-end close diffed before they'll talk about a date.
a37f1c9e==a37f1c9eOK41b8e0d2==41b8e0d2OKPREC 4==PREC 4OK03Go live
Freeze Friday evening, copy the files, run the weekend in parallel, and your people sign on Monday at your own address — in a browser with nothing to install, or over SSH exactly as they work today. Same screens, same F-keys, same month-end. Only the runtime underneath changed, and the old box is still sitting there if you want it.
04 Proof
Every number below comes from differential testing on a real production corpus. These are the figures we have — and further down there's a section for the things we haven't finished.
5,079
Programs, 100% parse rate
A real production corpus, not a benchmark suite. Every program parsed. None set aside.
536,000
Lines of Business Basic source
Forty years of accumulated business rules, read by our front end without a single exception.
3.63M
Records verified byte-exact
3,631,827 records across ten production files, read on both engines and compared record for record. Not sampled.
245/245
Arithmetic cases matching
Penny-exact decimals, including the PRECISION rounding model. This is financial software; the pennies have to match.
2ms
Keyed lookup on that same file
Native SQL over the ERP's own keyed files, using their key indexes — against 3,665 ms for a full scan.
0%
CPU per idle session
Idle sessions cost nothing. The naive way to build this busy-loops, and that's how servers get sized wrong.
Keyed lookup vs. full scan — the same 1,344,450-record customer master
Lower is better · milliseconds
Our SQL layer reads the ERP's own keyed files and understands their key indexes, so a lookup stays a lookup. No JDBC bridge, no ODBC gateway, and no nightly export into a reporting copy that's already wrong by nine in the morning.
Records our engine writes are read back in the incumbent runtime and compared byte for byte — on real multi-level B-tree keyed files, not on a toy fixture. Writing is the part everyone waves through. We didn't.
Full-screen forms, windows, colors, box drawing, the character-level field editor, F-keys, password masking — captured off the real runtime and replayed against ours. "Close enough" on a data-entry screen is a training cost.
05 What you get
Box drawing, colors, windows, the character-level field editor, F-keys, password masking. Your users get retrained on nothing, because nothing they touch moved.
SELECT straight against the
ERP's keyed files, key-index aware. Reporting stops being an overnight export and a
reconciliation argument.
A multi-user daemon instead of an interpreter per login, and zero CPU at idle. Session count stops being the thing that sizes your server.
Snapshots, point-in-time restore, and a recovery drill somebody has genuinely run start to finish. Not a tape rotation and a hope. Included, not billed.
Branch offices and remote staff get the same 80×24 screen without a VPN, a terminal emulator install and a phone call to IT about the function keys.
We don't take ownership of it, obfuscate it, or hold it. Ask and we hand it back in its native format. If you leave, you leave with everything you arrived with.
06 What runs today
Not a demo and not a benchmark suite. Sign-on, menu, order entry, inquiry, maintenance and reports — the working day of a distributor, on our engine, against a real production corpus. Every claim below is a measurement.
Runs today
5,079 programs and 536,000 lines of production source parse at 100% — every program, none set aside. The ERP signs on, draws its menus, runs inquiry and maintenance, and prints its reports.
Verified
3,631,827 records across ten production files, read on both engines and compared record for record — not sampled. What we write reads back byte-identical in the runtime you have now, on real multi-level keyed files.
Penny-exact
Every case matches, including the PRECISION rounding model. This is financial software and the pennies have to agree, so we gated the engine on it rather than sampling and hoping.
Measured
Full-screen forms, windows, colors, box drawing, the character-level field editor, F-keys and password masking — captured off the real runtime and replayed against ours. Your users get retrained on nothing.
Faster
A keyed lookup on that same 1.34M-record file returns in 2 ms, against 3,665 ms to read it end to end. Our SQL layer uses the file's own key indexes, so a lookup stays a lookup — and idle sessions cost 0% CPU.
Every figure here comes from differential testing against the runtime you license today — same inputs, both engines, output compared. The page-by-page breakdown of what we have verified is on the compatibility page.
07 Pricing
of what you pay now for the runtime license.
And hosting is free — included, not a tier and not an upsell. We run it, back it up and hold the DR plan at no additional cost. So the license halves, and the server in the closet stops being a line item at all.
Full assessment Paid
Fixed fee
One-time, quoted up front, and credited in full toward your migration.
Managed cloud Flagship
Half the license.
Hosting free.
Annual, per user — 50% of what your incumbent charges for the runtime, with hosting, backups and disaster recovery included at no additional cost.
Private cloud
Half the license, dedicated
A tenant of your own — dedicated resources, isolated from everyone else, for shops that want the walls as well as the door.
We don't publish a rate card, because the number is a ratio and not a figure — bring us your current license invoice and the arithmetic takes about a minute.
Pricing in full08 Questions
Yes. Business Basic is a published language, and UBB is a clean-room implementation of it — written from the language definition and from measured behavior, not from anybody else's source code. It is not a fork, a patch, or a crack of an existing product.
Your programs are your programs and your data is your data. You wrote them, you own them, and running them on a different interpreter doesn't change that. Our terms say so in operative language, not in marketing language.
No. That is the entire proposition. We run your source as it sits, against your data files in their existing format, with their existing keys.
If a program has to be modified in order to run, we treat that as a defect on our side. It goes into the report as our work item, not as a line of effort on your team's plan.
Differential testing. Every read, every write and every arithmetic result is executed on both engines and compared — records hashed byte for byte, decimals compared digit for digit under the same PRECISION rounding model.
That's 3,631,827 records across ten production files, and 245 of 245 arithmetic cases. Writes are gated the same way: what our engine writes has to read back byte-identical in the incumbent runtime, on real multi-level B-tree keyed files. When something doesn't match, it is a failing test, not a footnote.
The useful answer isn't a contract clause, it's the architecture: we do not change your programs and we do not change your data files.
Your existing runtime keeps working exactly as it does today, on exactly the same bytes. The worst case is that you go back to what you had — expensive and annoying, but not fatal. That reversibility is a design decision, not an accident. And the company behind this has been trading since 1947.
Unique Photo, a distributor in Fairfield, New Jersey, in business since 1947. We run our own inventory, orders, purchasing and accounting on a Business Basic ERP, and we built this runtime because we needed it — not because we spotted a market.
UBB is our own engine, developed independently. We are not affiliated with, endorsed by, or reselling for your current vendor.
The free report is automated. The paid assessment is measured in weeks. The mirror runs for as long as you want it to — most people want at least one month-end close diffed clean before they'll commit to a date. Cutover itself is a weekend.
Compare that against the three-year rewrite, and then compare what each one puts at risk.
Design partners
The free compatibility report is automated and costs nothing — upload a tarball of your source and we'll tell you what parses. If you'd rather talk to a person first, that works too.
or email us
There is no server behind this form. The button opens a pre-filled message in your own mail client, addressed to hello@uniquebb.com — nothing is sent anywhere until you press send yourself.