← Maps

Knowledge map

A conversational map that brings together the pieces built across this family, and adds three of its own. It carries the spoken chat of the Conversational map; the Context Map’s follow-me narration — detailed when it starts, terse as you move or turn; the accessibility detail recorded on map features, including mapped barriers in your vicinity; unnamed roads, paths and buildings for better area context; some knowledge of transit routes and schedule patterns; estimated house numbers on blocks the map never fully numbered; cited place knowledge from Wikipedia and Wikivoyage; and a personal memory for places and notes, kept on your own device. You can ask about where you are, or about anywhere on the map.

A test, not a finished demo — unfinished software being tried out and learned from.

Try the interactive demo

Open the Knowledge map (opens in a new window)

You will be asked to read and accept the notice, then to allow location access. It opens in its own window; close it to come back here.

A short guide

Open the map, accept the notice, allow location — then just ask, by typing or by voice. Everything below is a spoken phrase that works; every one can equally be typed.

Talking to it

  • Tap Speak once — the conversation is hands-free from there. Ask your question; a short pause sends it; the answer is read aloud; the microphone re-opens by itself for your next question. A rising tone means it is listening, a falling tone means the microphone has closed. After about ten seconds of silence it winds down — tap Speak to start again.
  • Interrupt it any time: while it is talking, tap anywhere on the page, or press Escape — it stops and listens. (You cannot say “shush” over it: the microphone is off while it speaks, because an open microphone would mute the voice. Typing “shush”, “quiet”, or “stop” works at any time — and saying it works whenever it is listening.)
  • If an answer seems off, say “what did I say?” to hear exactly what it heard.
  • Ask “what can you do?” whenever you are unsure — it gives a short tour of itself.

Things to ask

  • Where you are: “Where am I?” · “What’s around me?” · “What’s the nearest intersection?”
  • Finding places: “Where’s the nearest pharmacy?” · “How far is the library, and which way?” — directions come as clock positions relative to the way you are facing (“at 2 o’clock”).
  • Accessibility: “Is there a step-free café near me?” · “Does that crossing have audible signals?”
  • Transit: “What buses serve here?” · “How late does the 501 run?” — from the published timetable, never live arrival times.
  • The story of a place: “What is this area known for?” · “Tell me about the Canadian Canoe Museum.”
  • Anywhere, not just here: “What’s around Union Station?” · “What’s Peterborough like?”

Remembering things

  • “Remember where I am” — or “remember this as my front door”. Later, “where’s my front door?” answers from wherever you are standing: distance and clock direction.
  • “Remember that 135 bus for me” · “Keep a list of those schools.”
  • Hear what you have saved: “What do I have remembered?”
  • Forget something when you no longer need it, by naming it the way you saved it: “Forget my front door” · “Forget the schools”. “Forget everything” clears the lot. Nothing is ever removed unless you ask — there is no expiry.

Follow me

Say “follow me” (or tap the button): a full description of where you are to start, then brief updates as you walk and a call-out when you turn. “Stop following” ends it.

Worth knowing

It only knows what is mapped and published: silence means “not mapped”, never “not there”. And it is not for navigation or any safety decision — the notice at the start means it. The sections below explain what is behind each of these abilities, and their limits, in full.

What it is

The same conversation as the Conversational map — a plain text box, or your voice. What differs is what sits behind it: alongside the map lookups, it can consult transit schedule data and a place-knowledge layer, and the map index itself now carries detail the earlier demos did not have. Because every named place, address and feature in the index can be looked up by name, questions are not limited to where you are standing — you can ask about any place the index covers.

Accessibility detail

When you ask about a place, or about getting around, the answer includes the accessibility detail recorded on nearby features: wheelchair access, tactile paving, kerb type — lowered, raised or flush — ramps, handrails, step counts, automatic doors, accessible toilets, audible and acoustic crossing signals, and surface quality. You can filter by it (“step-free cafés near me”). A tag recorded as “no” is reported plainly (“this crossing has no tactile paving”); a missing tag means unknown, and is never guessed either way.

It also reports mapped barriers in your vicinity — a bollard, a gate, a kissing gate, a cattle grid — named by kind, since a kissing gate matters differently to a wheelchair user than to a walker; and where a tactile map or model is mapped, it is mentioned as a landmark. This barrier data comes from a newer pass over the map data and is being added region by region, so it is not yet present everywhere.

Unnamed roads, paths and buildings

The index behind this map includes unnamed roads, paths and buildings — features most map searches drop because there is nothing to type to find them. They are stored description-only, so they never appear in a name search, but they give the area descriptions more context than the Context Map had: an unnamed footpath nearby is reported with its kind and its accessibility tags, and the density of anonymous buildings around you feeds the description of how built-up a place is. Unnamed paths keep their full shape and tags; anonymous buildings are stored as a point and a coarse size only, no outline. The reasoning behind this trade is written up in the Conversational map’s colophon.

Transit routes and schedule patterns

It has some knowledge of public transit: the routes serving stops near a point, taken from transit agencies’ published static schedules (GTFS). Where the data records it, that includes first and last service, typical frequency, the days a route runs, and whether the stop or route is marked wheelchair-accessible.

The limits are real. This is a static timetable, not a live feed: it cannot say when the next bus comes, and it will tell you so if you ask. Coverage extends only to agencies whose feeds have been loaded, the loaded copy can lag behind an agency’s own changes, and many stops and routes carry no accessibility information at all. Where there is no stop in the schedule data, it says so — which may mean no service, or simply no feed.

House numbers, real and estimated

House numbers in OpenStreetMap are sparse — they cluster at corners and on scattered buildings, with long gaps between. Where a real number is recorded close to you, it is offered as an anchor: “near number 120”, a nearby landmark rather than your exact address. Where the map records only a numbered range for a block — the ends numbered, the middle blank — it can estimate your position along it and offer an approximate number: “about number 118”, always worded as an estimate and kept distinct from a real one. Where neither exists, no number is offered — nothing is invented. The interpolation data is part of the same region-by-region re-indexing as the barrier data, so it too is not yet present everywhere.

Hands-free voice conversation

Tap Speak once and the conversation runs hands-free: it takes a short pause as “finished” and sends, reads the answer aloud, and then re-opens the microphone for your next question, so there is no button to find between turns. A rising tone marks the microphone opening and a falling tone marks it closing, so the state is audible; if an answer seems off, asking “what did I say?” reads back exactly what was heard, so a mishear can be caught by ear. Replies usually end with a short suggestion of a natural next question. After about ten seconds of silence the conversation winds down, and Speak starts it again.

Follow me

The Context Map’s follow-along mode, carried over. Press Follow me — or say it — and the map narrates as you go: a full description of where you are when it starts, then, as you walk, terse one-line updates — the street or place you have reached and at most the nearest notable thing — and a call-out when you turn, naming the turn and your new facing. Turns are read from the compass, so they are called even when you turn on the spot without moving.

It is deliberately output-only and second in line: it never opens the microphone, and it holds its tongue while you are asking something or an answer is being spoken — the conversation takes priority, and follow mode fills the quiet between. Updates come at least eight seconds apart and only after you have moved about fifteen metres, so it marks corners and new streets rather than chattering at every step. Pressing the button again — or saying “stop following” — ends it.

A personal memory

Memory — yours, mine, anyone’s — is not always reliable, so the map can carry some of the load. Say “remember where I am” and it saves the spot, named by its street or by whatever you choose to call it (“remember this as the cottage dock”). Ask later — “where’s the cottage dock?” — and it answers relative to where you are standing now: the distance, and the clock direction. It also remembers information, not just places: “remember that 135 bus for me” keeps the substance of what it just told you — the route, where it heads, first and last, how often — and “keep a list of those schools” keeps the list, so both can be read back later without a fresh lookup. “What do I have remembered?” lists everything; “forget the schools” or “forget everything” removes it, and nothing is ever removed unless you ask.

Where it lives matters. Your saved places and notes are stored on your own device, in this browser — not on the site’s server, which keeps no record of them. The principle: personal information stays as close to the user as possible, even though — like your location today — it travels along with each question you ask, so the model can answer from it. The limits are the honest price of that choice: memory is per device and per browser, it does not sync anywhere, and clearing this site’s browsing data erases it. Nothing expires on its own — a saved place stays until you say forget.

What a place is known for

The layer that gives this map its name. Ask what a place is, what it is known for, or what a district is like, and it fetches entries from Wikipedia and Wikivoyage for that place, with a few structured facts — when a building was built, who designed it, a heritage listing — from Wikidata. The language model is not allowed to answer these questions from its own training; it is handed the fetched entries and asked to read them back in plain words. Every such answer states its source and how old the cached copy is — “from Wikipedia, cached last week” — because a listener, unlike a reader, cannot check a source at a glance unless it is spoken.

The limits follow from the sources: the English-language wikis are used, a place nobody has written about gets no story, and an entry can be out of date. Where there is nothing, it says nothing.

A cache that fills in with use

Fetching an encyclopedia entry for every question would be slow and would lean hard on services that are shared and free. So each knowledge answer is stored the first time it is fetched, filed by place, and handed back to the next person who asks about the same spot.

Every knowledge source sits behind a cache keyed by place, in
coarse cells about a kilometre across:

    you ask about a cell  ->  cache warm?  ->  yes: answer from the cache
                                          \-> no:  fetch once, store, answer

    a stale cell is re-fetched only when someone next asks about it.
    a quiet cell costs nothing until the first person visits it.

The first visitor to a place — standing there, or asking from an
armchair — fills the cell for everyone who comes after.

A frequently-asked-about place stays current, because each question after the copy goes stale refreshes it; a place nobody asks about costs nothing until the first person does. Because encyclopedic and travel facts change slowly, a stored answer is kept for weeks before it counts as stale, and there is no background process filling or expiring the cache — use alone drives it.

The map measures; the model only speaks

A language model is unreliable at exactly the things this map must get right — distances, directions, dates, facts. So none of that is left to it. The model chooses what to look up and puts the answer into plain words; everything else is done for it. Every distance and bearing is computed from the map, every schedule detail read from the loaded timetable, every fact fetched from a cited source. That does not make it incapable of error — it can still misphrase or misjudge what you asked, and the notice before you start says so — but it keeps the errors to wording, not invented geography or invented history.

Where your words go

Understanding a free-form question takes a language model too large to run on the page, so it runs as a hosted service. To answer you, what you type — or, if you speak, your voice as you say it — together with your location is sent over the internet to a third-party service; spoken questions pass through a separate speech-to-text service first. The rest of the site is self-hosted and sends nothing to anyone; this map, like the Conversational map, is the exception, and the notice before you start says so plainly. Do not type or say anything you would not want handled that way.

Built on open data

The map itself is OpenStreetMap; the transit data comes from agencies’ published GTFS schedules; the knowledge is Wikipedia, Wikivoyage and Wikidata. All of it is only as complete and as current as the people who maintain it have made it: a place nobody has traced is missing, a shop that changed hands may carry the old name, an agency that publishes no feed has no times. Silence means “not mapped”, never “not there” — the map tells you what it knows, and no more.

A test, not a tool

This is unfinished, untested software, and it says so before you can use it. Every time you open it you read and accept a notice — that it can be wrong, that it can misjudge distance or direction, or read back an entry or a schedule that is out of date, that it sends your words and location to an outside service, and that it is not for navigation or any safety decision. Keep using your usual ways of getting around at all times.

Colophon

A colophon is the note at the back of a book about how it was made. Each map in this family gets one, because the decisions behind an accessible map — what to store, what to trust, what to leave out — are the interesting part, and worth showing rather than burying. This map gathers up work from the others, so its colophon is short where theirs already tell the story; a few decisions are its own.

Grown from the family

Most of what happens around an answer here is not new. The conversation, the voice in and the answer read back, the compass turning “north-east” into “about two o’clock” relative to the way you face, the screen held awake while you listen, the division of labour that keeps the model phrasing and never measuring — all of it comes, nearly unchanged, from the Conversational map, and through it from the Context Map. The Follow me mode is the Context Map’s describe-as-I-move carried over — its turn call-outs are that map’s code, reused — re-voiced through the conversation: the full opening description and the terse updates are answers from the same chat, just asked for you. The unnamed features and the accessibility-first reading of a place come the same way. What is new here is the transit schedule data, the knowledge layer with its cache, the hands-free conversation loop, and the personal memory.

Hands-free, in a noisy world

A blind user asking a map a question aloud is often somewhere loud — a platform, a busy street — and the microphone hears all of it, not just them. Two things handle that. The speech service separates the voices it picks up, and the app locks onto the first one to say a few words — you, holding the phone — keeping only your words and dropping the conversation behind you. And it decides you have finished not from silence, which never comes in a crowd, but from the gaps between your words. It is a heuristic, not a guarantee — a bystander who gets a sentence in first could take the lock — but for a phone you are holding and talking into it holds up well, and it is what lets the microphone re-open after each answer without the conversation being hijacked by the crowd.

Why the knowledge is fetched, not remembered

The obvious way to make a map that knows about places is to let the language model answer from what it learned in training. It is also the wrong way. A model recalling facts is confident and often slightly wrong — a date off by a decade, an architect misattributed — and a blind user, who cannot glance at a screen to sanity-check, is the least able to catch it. So the model is not permitted to remember. For anything about what a place is, it is handed a real entry, fetched for that place, and asked only to read it back and say where it came from. It is the same guard the maps already use for geography, extended from distances and directions to facts.

The cache, and why it is this shape

Wikipedia and Wikivoyage ask to be used gently, and a fresh request for every question would be slow besides. So each source sits behind a cache, filed by place rather than by question — in coarse cells about a kilometre across — so that everyone asking about roughly the same spot, however they phrase it, gets the answer already fetched for it. There is deliberately no background process filling the cache in or expiring it: a cell is fetched when first asked about and refreshed when next asked about after going stale. The load on the shared services tracks actual use, which is the only shape that scales to a whole country on a small server.

Two memories, two homes

This map now holds two kinds of remembered thing, and they deliberately live in opposite places. The knowledge cache is everyone’s — what Wikipedia says about a square is the same for every visitor — so it lives on the server, where one person’s visit warms it for all. Your personal memory is yours alone — where you parked, the bus you need, the schools you were comparing — so it lives on your device, and the server keeps no copy. The rule underneath both: shared knowledge belongs where sharing helps; personal information stays as close to the user as possible, even when it must transit elsewhere for a moment to answer the user’s own question.

Two design choices follow from who this is for. Nothing expires: for someone leaning on the map because memory is unreliable, a note that quietly evaporates is worse than no note at all — so the only way anything leaves is an explicit “forget”. And a remembered note keeps the substance, not a pointer: “remember that bus” stores the route, its destination, its first and last and frequency as told, so reading it back later needs no fresh lookup and cannot silently change under you.

Schedule knowledge, not arrivals

The transit answers are held to the same standard as the facts. What a published static schedule gives is a pattern — first and last service, typical frequency, the days a route runs — and that is what the map offers. What it does not give is where the bus is now, so the map refuses to imply it: no “next one in three minutes”, because it cannot know that. Saying what it has, and what it hasn’t, is the point.

All of this is recent, and a test learned from in the open. The reasoning is written down because a decision you can see is one you can argue with.

Source

GPL-3.0, part of the tiled Toronto map project — github.com/bobdodd/tiled-toronto-map. The place data is derived from OpenStreetMap, © OpenStreetMap contributors, under ODbL; transit from agencies’ published GTFS feeds; knowledge from Wikipedia and Wikivoyage (text under CC BY-SA) and Wikidata (CC0), each cited in the answer it appears in.