The first version of what became the Ribadeneyra Procurement Suite was a single
spreadsheet with a macro that generated works contracts. It solved one problem
extremely well, and it solved it in isolation, which meant the contract it
produced still had to be re-keyed into a register that lived somewhere else,
signed in a tool that knew nothing about either, and priced against a copper
notation that nobody re-checked after the day of signature.
That is the actual shape of the problem. Indirect procurement rarely fails
inside a process step. It fails in the seams.
What the seams cost
A few of the ones we kept hitting, in roughly descending order of expense:
- Renewal exposure nobody owns. A framework agreement with a ninety-day notice period and a thirty-day reminder is an automatic renewal. We have seen six-figure contracts roll over because the register and the calendar were different systems.
- Quotes that do not become invoices. When quoting and invoicing are separate tools, the margin you quoted and the margin you booked drift apart and nobody reconciles them until the year-end review.
- Unpriced commodity clauses. A cable framework with a copper escalator is a derivative position whether or not anyone treats it as one.
- Document rework. Merge, split, sign, re-sign. Each round trip through a tool that uploads your contract to someone else's server is also a data protection question.
The pricing decision
We had the obvious plan first: five modules, five prices, buy what you need.
It is a tidy plan and it reproduces the exact problem we set out to solve. A
customer who buys the contract register but not the calendar still misses the
renewal.
So the suite is one subscription at 39.99 € per user per month, everything
included, and modules we add later join the same plan at no extra charge. This
is a worse business model on a spreadsheet and a better one in practice,
because the thing we are actually selling is the absence of seams.
Local-first, and what it costs you
Every module keeps its state in your browser. Your contract values, supplier
terms and pricing never leave the device, because there is no server in the
request path that could receive them.
The honest corollary: clear your browser's site data and the register is gone,
and we have no copy. Every module ships a backup export. Use it before you
change machine, and archive it somewhere you would archive a contract.