Skip to main content

Lab Notebook · Rail Tender Automation

First pass at rail tender automation — pricing and pack assembly, 2022

In mid-2022 we built two small prototypes for a safety-critical / global rail & metro tender process: a Django tool for calculating tender quotes, and a document-generation system for assembling tender packs from templates. Both stayed early prototypes — but they were the first real exposure to how painful manual tender pricing is, and how hard document generation from structured data actually is.

JR
Jon RossFounder, vocabotics — 15 years building safety-critical systemsLab report · dated 1 August 2022
Verified by a human. Drafted with AI, verified by a human. Jon Ross, 1 Aug 2022
Living document. Reviewed 1 Aug 2022
Entry date
1 August 2022
Category
Tooling
Access
🔓 Public
ResearchDisproven

The first attempt at automating a genuinely painful manual process in the rail sector — tender pricing and pack assembly — and the first real lesson in how hard document generation actually is.

Django 4.0.6
tender quote calculator
2
months apart: Jul 2022 quotes, Aug 2022 pack assembly

Honest evaluation

Disproven

Neither prototype reached production; document generation from structured data was explicitly harder than 2022's tooling could handle — an honest miss, not a shipped result.

What would prove or disprove it further

What would prove or disprove it further: rerunning the same pack-assembly step with the tooling available years later (structured templating, LLM-assisted document generation) against the same class of tender pack would show directly whether the original bottleneck — document generation from structured data — has actually been solved, or just moved.

The evidence — full reasoning behind the verdict

Verdict: disproven. The implicit bar these two prototypes were built against was becoming part of a real tender process — and the report says plainly that neither did: "both prototypes stayed prototypes. Neither reached a production tender process." Measured against its own goal, this one missed.

The pricing calculator showed real, immediate value as a rough tool, but the harder half — turning structured pricing data into a correctly formatted, submittable .docx tender pack — ran into a genuine technical wall: document generation from structured data was harder than the 2022 tooling could comfortably manage. That's a specific, named mechanism for the miss, not a vague "it didn't work out."

The honest negative is the actual value of this entry: it located exactly where the pain and the difficulty lived, which is what later, more capable document- and tender-automation systems in the same domain were built on. A disproven result that names its own failure mode precisely is more useful than a vague partial success would have been.

Tender pricing in the rail sector is exactly the kind of process that looks simple from outside and is genuinely painful from inside: dozens of line items, changing rates, and a document pack that has to be assembled correctly every time. This was the first attempt to automate any of it.

What it was

Two small, related prototypes for a safety-critical / global rail & metro tender process, built about a month apart: a Django tool for calculating tender quotes (July 2022), and a document-generation system for assembling tender packs from templates (August 2022).

What we built

Research

The pricing tool was a Django 4.0.6 application for computing tender quotes — turning line-item rates and quantities into a priced tender. The pack assembler was a separate Python tool that took .docx templates and populated them from structured data, aiming to turn a pricing output into a complete, submittable tender pack without manually copying numbers into a document by hand.

What we learned — including the honest negative(s)

Two things stood out, and neither is flattering to the state of 2022 tooling. First: tender pricing is a genuinely painful manual process, and even a rough, early automation of it was clearly worth building — the value was obvious immediately. Second: document generation from structured data is much harder than it looks. Getting a .docx template to reliably reflect live pricing data, formatting and all, outran what the tooling available at the time could comfortably do.

Both prototypes stayed prototypes. Neither reached a production tender process. That's the honest state of this entry — the value wasn't in what shipped, it was in seeing exactly where the pain and the difficulty actually lived, which is knowledge that later, far more capable systems were built on.

Where it went / status

Both tools were early prototypes and were not carried forward as-is. But this is explicitly the seed for much more capable AI-powered tender and document-generation systems built years later in the same domain, once both the tooling and the underlying approach had matured. The client and specific tender process are never named here — this refers only to a safety-critical / global rail & metro tender process.

What is still open — kept visible

The honest edges, next to the wins. This is what turns 🔬 into 🟢 — honestly.

  • Both stayed early prototypes — neither reached production use.
  • Document-generation complexity from structured data outran what 2022's tooling could comfortably handle.
  • The client is never named: this refers only to a safety-critical / global rail & metro tender process.

Sources

  1. vocabotics project audit — railway tender quote calculator + tender pack document generator, Aug 2022vocabotics internal project history · as of August 2022

    We use cookies.