The problem
Tender evaluation combines tabular pricing, compliance checklists, and narrative responses. Public buyers must show how a score was derived, often years later, on hardware they control. Cloud-only tools with opaque model versions fail procurement.
Why Ecko
- Single static binary
- Ship one file to air-gapped evaluators. No Python version pin, no container base image to patch, no "works on my laptop" dependency graph.
- Mock mode in CI
- Scoring logic tests against deterministic fixtures. The same program runs in production with a real key - the algorithm is unchanged, only the model backend.
- Vendored packages
- Dependencies live in your repo, pinned by hash in
ecko.sum. Reproducing a 2024 evaluation in 2027 is a git checkout, not an archaeology project.
In practice
# CI: no API key, deterministic scores
# prod: ECKO_API_KEY set, same source file
fn score(response: str) -> int {
ai "Rate compliance 0-100" from response
}
Try it on your workload.