Free, and framework-shaped
Open SaaS is free and MIT, and that is not a detail to route around on the way to a sales argument. It changes the decision structurally: you can read all of it, run all of it, and abandon it having lost a weekend rather than a licence fee. Nothing on a paid page competes with that on risk.
Its second idea is Wasp. Auth, routes and jobs are declared in a config file and the framework generates the wiring, which removes a large amount of glue and keeps the whole app in one project. Jobs are the clearest example: pg-boss persists them in Postgres you already run, and their docs are explicit that it lives inside the web server rather than beside it. One process, one deploy, jobs that survive a restart.
The trade is that you are inside a framework's opinions rather than a library's. When Wasp has an answer, you get it almost free. When your requirement is outside what Wasp generates, you are working with the framework rather than simply writing Node.
Paid, and semantics-shaped
The Fabrica costs money, so it has to be worth more than free — and “more features” is not the argument. The argument is the specific production semantics around money, jobs and personal data, and the fact that they are documented as decisions rather than left as code to reverse-engineer.
Credits are the sharpest illustration, and the difference is in the data model rather than in the quality of either implementation. Open SaaS stores a balance: credits Int @default(3) is a field that says how many a user has left, which is exactly what three free generations and a top-up plan need. The Fabrica stores movements: each grant, spend and refund is its own row, and the balance is their sum.
A balance answers “how many are left”. A ledger answers that too, and also “where did they go” — the history a dispute, a refund or an audit is settled from. Neither is a defect; they are two reasonable answers, and the second costs more to build and to query. We pay that because metered usage is a first-class product concern here rather than a trial allowance, and the reasoning is published rather than asserted.
The same shape repeats. Long work goes to a Celery worker in its own process, which is more to operate than pg-boss and buys isolation from the request path. Webhooks ride idempotency tables because a payment provider retries for days. None of it is free, in money or in operations.