The Lab
Here we publish our research, and news on Rainbow and the other things we build. Each piece says what we tested and what we found.
What we found
Short write-ups of what we tested and what came out. Older engineering articles are in the archive.
Do AI coding tools pay off? Count the rework
AI tools help a team write more code. Whether that saves money depends on how much of the code gets reverted or reworked, and how much longer review takes. Here is what to measure.
The decision behind the dashboard request
When a COO asks for a scheduling tool or a CFO asks for one view of margin, there is usually a decision underneath that the company makes over and over and could make better. We start with that decision. Sometimes the right answer is not new software.
Is the extra data worth paying for? Often it is not
An audit, an inspection or a study is worth only as much as it can change your decision. You can work this out before you spend the money, and often the answer is zero.
Too much to fix and too few people. What do you fix first?
Teams usually fix the most severe or the loudest problem first. We order the work by what each open problem costs you while it waits, such as contract penalties and lost customers.
Why we publish the experiments that failed
We fix the test before we run it, and when a method fails, we publish that too. It saves the next team from paying for the same dead end, and it gives the results we do claim more weight.
Schedules that still work when jobs run late
A plan that assumes each task takes its estimated time gets redrawn every week. We build schedules that hold up when jobs run long or arrive late, and show you the trade-off between full capacity and safe deadlines.
How Rainbow checks the algorithms behind business decisions
Rainbow checks proofs about decision algorithms with a small trusted kernel. It has kernel-checked theorems about all 222 algorithms in our catalogue, most of them on worked examples. It is for software where one wrong decision costs a lot of money.
When a project falls behind plan, what should change?
A report on the gap between plan and delivery helps only if it leads to a decision while there is still time. Move people, cut scope, or talk to the customer.
See which projects will lose money before finance does
Our model forecasts what a project will cost to finish and how likely it is to lose money, early enough for a manager to act. We tested it on historical and synthetic project data. It is part of Gitrevio.
orhof, our open-source library of decision algorithms
A Clojure library for optimisation and decision algorithms, with no dependencies and 187 tests. We reuse its parts when we model a client's decision, so a conversation about your problem becomes working code in days.
chachaml, our open-source MLOps tool for Clojure teams
If your machine learning runs in Clojure, chachaml keeps track of experiments, models and pipelines, so you can compare and repeat results. Use it from the REPL, a web page or an AI agent. We run our own ML work on it.
A book on the ten patterns behind 480 algorithms
Jiri Knesl's book goes through about 480 algorithms for optimisation, decisions and validation, and shows how each is built from ten patterns. We use the same building blocks to model a client's problem, so we get to working code faster.
Papers and reports
Check missing records one at a time, and know when to stop
When you pay to find out how past cases ended, each answer can change what to check next. In a backtest on 12 cases, checking one at a time helped in 8. A simple rule that stops once more checks cannot change the decision got about nine tenths of that gain.
Which missing records are worth paying to recover?
Many companies never recorded how past cases ended. Finding out costs money each time, whether it is a call, a file pull or an inspection. Our solver picks the records worth recovering for a later decision with limited staff, and proves when the best choice is to recover none.
We built a shortcut and it made things slower
We built three checks to skip work our solver did not need to do. All three were correct, and all three were slower than just running the solver. We publish it so the next team can skip it.
What to recover when your cost estimates may be wrong
Our other results assume you know what each recovery costs and how often it works. Early on, we found that a plan built only for the worst case can refuse to recover anything. A plan that keeps your regret low looks like the better aim.
How to spend two separate budgets when results come back late
You have one budget for finding out and another for acting on what you find, and you cannot move money between them. Results come back late and incomplete. We set out the problem and what a proof would need. There is no result yet.
Three kinds of decision algorithms, one small set of building blocks
The idea behind Jiri's book. Optimisation, planning under uncertainty and checking that a system stays safe can all be written with the same few functions. That makes the code easier to learn and to reuse.
Proofs of concept
Code we wrote to test an idea. Some of it is open source now, and some of it became a product.
Rainbow, a theorem prover for business-critical algorithms
A Clojure theorem prover with a small trusted kernel you can read. It has kernel-checked theorems about all 222 algorithms in our catalogue. It grew into Rainbow Pro, which generates certified code for systems where an error costs a lot.
Clojure · Dependent types · Content-addressed proof objects
A solver that picks which missing records are worth recovering
Before you assign scarce people or budget, it works out exactly which past outcomes are worth paying to recover, and it can prove when recovering nothing is the right choice. On synthetic test data it ran 2.37 times faster than our own baseline.
Clojure · Exact rational arithmetic · Multiobjective knapsack DP
orhof, decision algorithms in plain Clojure
An open-source Clojure library with 251 functions for optimisation, planning and validation, no dependencies and 187 tests. It is the code behind Jiri's book.
Clojure 1.12 · Zero dependencies
chachaml, experiment tracking for Clojure teams
Open-source experiment tracking and a model registry for teams that do machine learning in Clojure, like MLflow is for Python. An AI agent can query it over MCP. We use it for our own ML work.
Clojure · SQLite / Postgres · MCP server
We ported Pathway's Baby Dragon Hatchling model to Clojure
A Clojure version of Pathway's brain-inspired language model. Its checkpoints load in the Python original and back again, and chachaml tracks every run. We built it to test chachaml on real research work.
Clojure · libpython-clj2 · PyTorch
Case studies
Is there a costly decision your software gets wrong?
Tell us about it. In the first call, Jiri or Ivo will tell you whether our research can help. The call costs nothing.