Skip to content
GuardTrails

Method

Six guardrails around a language model

By Matthieu Silbermann

Trollryggen
Trollryggen · © photographed on 16 July 2019 by Ximonic (Simo Räsänen) — CC BY-SA 4.0, Wikimedia Commons

In one sentence

An itinerary engine built around a language model needs guardrails: the model names places, a geocoder locates them and a routing engine measures distances; duration is calculated from the content before it is asked; unverifiable constraints are flagged rather than filled; effort is graded by elevation and exposure; nights per stage are counted.

The itineraries on this site are written with a language model. It is excellent at naming, describing, finding what distinguishes one place from another. We use one, and models are improving fast.

But an itinerary is not just text: it is a sequence of distances, timetables, nights and efforts. Building the engine, between July and September 2026, we met six problems on real output. Here is each one, and the guardrail we set.

1. Distances

What happened. Asked for a driving time, the model produced one, with the same confidence as a town name. A wrong duration in gives a badly sized day, then a badly cut itinerary.

The guardrail. The model produces no geographic number: no coordinates, no kilometres, no travel times, no night counts. It names a place; a geocoder locates it; a routing engine measures the distance on the real road. A name that does not geocode disappears on its own.

2. The duration asked for

What happened. Asked about a destination while mentioning 28 days, the model answered that it needed 28; with 14, it answered 14. On a Baltic case, between July and September 2026, it announced fourteen days where calculation on the programmed content gave ten.

The guardrail. Duration is calculated from the content, before it is compared with the time the traveller has. The engine says what the content needs, then what each week removed takes away.

3. The state of the ground

What happened. A model knows a mountain road exists, not whether it is open.

The guardrail. A road existing does not mean it is open. When a place depends on a seasonal opening, the page flags it, with the source to check for your dates.

4. Timetables

What happened. Ferries, shuttles, timed entry, permit quotas: a route could be geographically perfect and materially impossible because the ferry runs three times a day.

The guardrail. These timetables have no worldwide source. The engine detects that the constraint exists and shows it: "not verified for your dates". It never fills the gap.

5. Effort

What happened. A flat five-hour stroll and an exposed two-hour ridge came out at the same difficulty, though they fail for different reasons.

The guardrail. Effort is graded by elevation and exposure, with strict definitions. Duration plays no part in the grade: it is read separately.

6. The shape of the trip

What happened. A model fed on thousands of published itineraries reproduces their shape: many stages, a different bed every day and a half — exactly what we had counted on itineraries sold by different operators. And what is not sold stays absent: the 1,200 kilometres of waymarked coastal trail in the Baltics did not appear as an option.

The guardrail. Rhythm is counted: nights per stage, days with no plan, repetitions nobody asked for. Each variant shows the share of the territory it covers and what it leaves out. See Eleven hotels in twenty nights, The Baltics repeat themselves and register saturation.

What these guardrails have in common

None of them fixes the model. All of them separate writing from measuring: the model writes, the engine calculates and verifies, and what cannot be verified is said as such. That is what makes an itinerary checkable — and it will stay true when models have improved further.

Going further

What we don't know

These six problems come from building a system, not from an experimental protocol: they were met while working, not measured across several models. Some will be rarer with newer models. The guardrails stay: they are engineering rules, not patches.


You build with a model too and set other guardrails? Write to us.

Frequently asked questions

How do you make an itinerary produced with a language model reliable?
By separating what the model does well from what can be measured. The model names and describes; a geocoder locates places, a routing engine measures distances, records give the climate, and a count checks the rhythm. What cannot be verified is flagged as such.
Why not let the model calculate distances?
Because a driving time taken from text is not a measurement. We decided the model produces no geographic number: it names a place, the calculation does the rest. An invented name does not geocode and disappears on its own.
Will these guardrails still matter with better models?
Yes, because they are engineering, not a defect to fix: separating writing from measuring, sourcing every figure and flagging what cannot be verified make a system checkable, whatever the model.

Method — Problems met on real output while building the engine that produces this site's itineraries, July to September 2026. An engineering account, not an experimental protocol.