Skip to content

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.

Flexiana · Aug 2026

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.

Jiri Knesl · Aug 2026

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.

Jiri Knesl · Aug 2026

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.

Flexiana Decision Lab · Aug 2026

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.

Jiri Knesl · Aug 2026

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.

Flexiana Decision Lab · Aug 2026

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.

Jiri Knesl · Aug 2026

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.

Flexiana · Aug 2026

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.

Flexiana Decision Lab · Aug 2026

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.

Jiri Knesl · Jul 2026

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.

Jiri Knesl · Jul 2026

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.

Jiri Knesl · Jul 2026

Papers and reports

Paper

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.

Flexiana Decision Lab · Aug 2026
Paper

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.

Flexiana Decision Lab · Aug 2026
Paper

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.

Flexiana Decision Lab · Aug 2026
Paper

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.

Flexiana Decision Lab · Aug 2026
Paper

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.

Flexiana Decision Lab · Aug 2026
Paper

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.

Jiri Knesl · Aug 2026

Proofs of concept

Code we wrote to test an idea. Some of it is open source now, and some of it became a product.

Graduating

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

Proof of concept

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

Open source

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

Productised

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

Proof of concept

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

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.