ubb / Unique Business Basic Free report

Unique Business Basic · Since 1947

Keep the code.Lose the box.

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.

atlas-prod-01 · 80×24 · UBB runtime

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.

Example ERP screens rendered by the UBB runtime.

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

Nobody likes the status quo. Everybody is stuck in it.

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.

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.

The box nobody will touch

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.

The one person who understands it is 63

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.

The rewrite quote the board said no to

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.
  • 1947The year Unique Photo opened its doors
  • Fairfield, NJWhere the warehouse and the engineers both sit
  • TodayOur own orders go through this runtime

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 1947

Don'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

Sync your programs. Sync your data. Go live.

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

Send us the source. The parser does the rest.

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.

  • Automated
  • 100% parse rate
  • Report in hand
  • Free

02Sync your data

Your keyed files copy up exactly as they are.

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.

03Go live

Your own URL, Monday morning.

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.

  • FRI freeze
  • SAT copy
  • SUN parallel
  • MON live

04 Proof

Measured against the incumbent runtime. Not against our own expectations.

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.

1.34M

Records verified byte-exact

1,344,450 records in a customer master, 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

Key-indexed read (UBB SQL)2 ms

Full sequential scan3,665 ms

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.

The write path is gated, not assumed

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.

Terminal behavior was measured, not guessed

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

What changes — and what deliberately doesn't.

The same screens, key for key

Box drawing, colors, windows, the character-level field editor, F-keys, password masking. Your users get retrained on nothing, because nothing they touch moved.

SQL on the files you already have

SELECT straight against the ERP's keyed files, key-index aware. Reporting stops being an overnight export and a reconciliation argument.

One process for everyone

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.

Backups and DR that actually exist

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.

A terminal in the browser

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.

Your source stays yours

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.

How the runtime works

06 What runs today

A real distribution ERP runs on it, end to end.

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

The whole application, sign-on to reports

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

The data, byte for byte

1,344,450 records in a customer master, 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

The arithmetic, 245 of 245

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

The screens, key for key

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

2 ms where a scan takes 3,665

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.

Full compatibility detail

07 Pricing

Half. That's the whole pricing page.

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.

Start here · free

Upload your programs. Get a compatibility report.

Send us a tarball of your source and our parser runs the whole corpus automatically. You get back a report on what parses, what doesn't, and what we'd need to look at next. No call, no salesperson, no obligation.

Get your free report

Full assessment Paid

Fixed fee

One-time, quoted up front, and credited in full toward your migration.

  • Everything in the free report, gone through by hand
  • Your keyed data files read and hashed
  • Integrations and customizations examined
  • A written migration plan and a fixed-price quote
  • Yours to keep whether or not you continue
Book an assessment

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.

  • The UBB runtime, hosted, monitored and upgraded
  • Your own custom URL, with TLS handled for you
  • Browser terminal and SSH, both included
  • Hosting, backups and DR at no cost
  • Parallel-run mirror for as long as you want one
  • Browser terminal for remote and branch staff
  • No hardware refresh, ever again
  • One invoice, and it's half the one you have
Talk to us

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.

  • Dedicated, isolated tenant and resources
  • Same engine, same differential test suite
  • Continuous backups and disaster recovery
  • Support and version upgrades
  • Migration performed by us
Talk to us

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 full

08 Questions

The ones we always get asked.

Q1Is this legal?

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.

Q2Do we have to change our programs?

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.

Q3How do you prove it matches?

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 1,344,450 records on one customer master file, 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.

Q4What if you get hit by a bus?

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.

Q5Who actually built this?

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.

Q6How long does the whole thing take?

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

Send us your program list.

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.