Ask the catalogue in your own words
The FastGIS catalogue now answers a sentence. "Strade bianche vicino a Petina" returns the 58 dirt passages around Petina; "grusveier rundt Voss" returns 285 gravel roads around Voss; "the gates I reported in the Salerno province around the first week of September" finds your own gate reports in that province, in a window a few days wider than the week you remembered. It is live on the API today, for developers; a search box in the apps comes next.
The model reads, code searches
A language model running on our own GPUs reads the sentence and fills in a fixed form: a place and what kind of place it is, a date range and whether it was approximate, the categories, and whether you meant your own things. That is all it does. It never writes the query, and it never decides who is asking.
Code does the rest. The geocoder turns "the Salerno province" into the
province, not the city of the same name. Relative dates resolve against
today. The categories come from a closed list, so a model cannot invent one.
The result is an ordinary catalogue query (OGC CSW) that anyone can inspect —
send execute: false and you get the interpretation and the query back
instead of the results.
We measured four models on 34 labelled questions in English, Italian and
Norwegian before choosing. qwen3:14b with its "thinking" turned off gets 82 %
of them entirely right and answers in about a second and a half; with thinking
on it was no more accurate and ten times slower. Two real misses from the
first day — Norwegian grusvei and Italian strada bianca — are now in the
test set and answered correctly.
Yours stays yours
What is in the catalogue today: dirt passages in Italy and Norway (every one with at least a kilometre unpaved, about 209,000), signals riders have shared, and — for each rider only — their own library and their own reports. You see the public records and your own; never another rider's private ones.
That rule is enforced twice. The query carries it, added by code from the signed-in caller. And the database carries it: the catalogue sits behind Postgres row-level security and has no public address — the API is the only way in. Before switching it on we checked, rider by rider, that each one sees exactly the public records plus their own, and nothing else. Deleting an account removes its records from the catalogue within a minute.
For developers
Three endpoints under /grass/published-catalogue: nl-search for a
sentence, search for an interpretation you have edited, vocabulary for the
categories. The developer guide (see developer access)
has a page on catalogue search — the interpretation, the paging, who sees what
and how fresh the index is (15 minutes) — next to the request and response
schemas in the API reference.
