TGIS v0
The model
Underneath every answer is the registry: a database of who holds what data, how to reach it, and what it is really like once you do. This page covers how that knowledge is shaped and how it grows with every question asked. What it holds right now is on the registry.
For how a single question travels through the system, see how this works. The precise vocabulary the code uses is in the technical reference.
The registry, right now
Open the registry →
137
sources
67
reachable now
40
gaps with a named holder
58
concepts
Concepts, places and sources
Every question is pulled apart into the same three things. The registry is the join between them.
What is measured, from a shared list: population count, transit stop location, surface temperature. The question is matched to concepts, not to dataset names, so a source nobody has heard of can still turn up.
An administrative unit, from the country down to the subcity, carrying the codes different publishers use for it. No city is written into the code: the registry decides what Addis Ababa means.
One dataset, its publisher and the way in. A source nobody can reach is a row too, with its way in left empty and a named holder, so a gap comes out of the same lookup as a hit.
Tags and descriptions
A NASA air quality model describes itself as producing NO2 and PM2.5, but was filed only under PM2.5. A run asked about NO2, read the filing, and told a planner nothing reachable measured it, naming a holder. A missing tag does not produce a silence. It produces a confident gap. So the agent now reads each source’s own description beside its filing, and a check compares the two.
Learning from use
A row in the registry is not a dataset somebody listed. It is something the system has learned, mostly by calling it.
821
calls recorded, each with what came back
30
disagreements between sources, written down
37
fetched files kept, so nobody pays for them twice
127
questions asked so far
Claimed vs observed
OpenAQ lists eleven air quality stations around Addis Ababa. Four are reference monitors, and none had reported in ninety days. Nothing in the provider’s own listing says so. Only calling it does. Because every call is recorded, which sources are healthy, which disagree and which combine are questions the registry answers from experience, not from a list somebody keeps.
Calling a source also teaches the registry how to ask for it. A fetch refused because a dataset holds several files records the list, and the next run sees the files before it fetches. What is kept about a source’s shape is what the source is— its columns, bands and units, layer by layer — never what one city’s download happened to contain.
The same goes for growth. Open data portals and satellite catalogues are searched live when the registry has nothing, so a dataset earns its row the first time a run actually uses it. The registry grows in the direction real questions pull it.
Curated and generated entries
Some of the registry is decided by a person. Most of it is written by the system as it works, and says so.
“A person decides” means deciding, not typing. The reading and drafting behind a connector, a concept or a holder’s contact route are done with AI. What makes a row curated is that somebody chose it and put their name to it. Everything else renders as Provisional in an answer, however good it looks.
Guidance is the one piece both write: a short document per source on how to use it correctly, such as “read the row where sex and age are both all; never sum the bands”. A run that learns something revises it after the run ends, every version is kept, and a person reviews the change.
Two shapes of answer
Most of a planner's questions want one number for one place and one year. A few need several datasets combined. The two take different routes.
Population, households, vehicle ownership, employment, crash counts: each is a number for an admin unit for a year, and is read straight off the provider. The workspace is what the corridor question needs, and overhead for the population one.
Measured coverage
An average over a whole subcity and an average over the clear corner of one are the same digits and different claims.
One Landsat scene over Addis Ababa declared 21.8% cloud. The satellite’s own quality band removed 72% of the city window, and per subcity what survived ran from 0.7% to 48%. Without the mask, one subcity averaged −10.5 °C, because a thermal band reads a cloud top as very cold ground. With the mask but without the fraction, an answer called all ten subcities “directly comparable”.
Coverage on every figure
Every average over an area carries how much of the area it covered, and the answer reports it. In the population run, that is how a reader learns the WorldPop sum reached only 60% of the city outline. A wrong coverage figure is worse than none: it is the sentence the reader trusts before the number.
Growth
Three ways, from cheapest to most expensive. None of them adds a tool the agent has to learn.
$
A new dataset
No code, and often no person. A row, written the first time a run uses it or by a harvest of a catalogue.
$$
A new door
A connector for a kind of portal TGIS does not speak yet. Someone explores the provider, then it is a row and a short piece of code.
$$$
A new kind of data
Documents, live feeds, formats not met yet. The one that is not built.
The plan for each, and the lines every change has to pass, are on up next. The exact terms the code uses for everything on this page are in the technical reference.