The Kladde assesses tenders with a language model. It reads the whole text, understands requirements in free words and explains its judgment. For that, every assessment costs tokens, takes seconds and may turn out a little differently the second time. For some questions there is an older, sober way: a small model that has learned from earlier decisions how numbers and categories relate to the result. This is called classic machine learning.

This lesson gives an overview of the way. With ML.NET, you train a model that predicts suitability from three invented features of a tender, and you compare it with the AI assessment on the same cases. After that, you place Azure Machine Learning and MLOps. Everything runs on your machine, without a model call and without the cloud.

Package Version What for
Microsoft.ML 5.0.1 pipeline, training, checking, saving
Microsoft.Extensions.ML 5.0.1 only in overview: the model in a web application

Two ways to a suitability

Language model (T2.3) trained classic model
reads the whole text of the tender a few features as numbers and categories
needs beforehand a prompt and a test set hundreds of earlier decisions with a result
costs per assessment tokens practically nothing, a few microseconds of computing time
same input, same answer not guaranteed yes, as long as the model file is the same
explains in words, for every case not in words; it shows which features count
runs at the provider or in Foundry Local in the Kladde's process, without a network
new situation adjust the prompt train again

A classic model is worthwhile when the question can be answered from a few fixed features and there are enough earlier decisions to learn from. Three properties then make it strong:

  • Cheap. A prediction costs no tokens. At a thousand assessments a month, that's little money; at a million, it would be a lot.
  • Consistent. The same model file always gives the same answer for the same input. A test that is green today is green tomorrow, too.
  • Explainable. You can measure which feature counts how much. That is not an explanation for a single case, but a look inside that a language model doesn't offer.

It doesn't fit when what matters is in the free text. A tender that looks made for the office but demands at least 50 employees from the bidders is something a model will never recognize from industry, volume and deadline. Exactly such cases are in the test set from T9.1 as traps.

And it learns what's in the data, including what's wrong. If the office used to turn down tenders from one industry out of habit, the model learns that habit. Features about people, such as age or origin, therefore never belong in such a model; the principles from T1.4 apply here just the same.