# City Guide > Ask anything about a city — what it is like to live in or visit, how its districts differ and > why, the history and geography that gave it its shape, getting around, what is genuinely worth > seeing against what is merely famous, and what first-time visitors consistently get wrong. URL: https://city-guide.skillsafe.ai/ API: https://city-guide.skillsafe.ai/api.html ## The one idea worth quoting A language model states last year's opening hours with this year's confidence, and a traveller acts on it. Hedging everything is the same as hedging nothing, so this app sorts every claim by **how fast it decays** — a property of the claim, not of the city — and treats the three classes differently. - **durable** — set by physical geography, history, how the built environment was laid down, or an accumulated social pattern. The river, the wall that came down, the grid imposed after the fire, the ridge that forced everything into one valley, why a district feels the way it does. It does not become false because a year passed. - **slow-drift** — true over years, drifting over years. Population, the broad shape of the transit network, whether a district is expensive, the direction it is moving. Every one carries an **as-of year**; a drifting figure without a date is the thing this app exists to stop. - **current-state** — the present operational status of a specific named thing. Prices, opening hours, timetables, whether a business or line is still running, current construction, entry and visa conditions, exchange rates, event dates. **These are never stated.** Not with a hedge, not approximately, not "as of my knowledge". Instead of stating a volatile fact, the app returns three things: the durable structure around it (how timed entry works at all, why the airport line has always been the slow one), the shape of the answer without the number, and **the named authority that actually holds the fact** — the operator's booking page, the transit agency, the government's own entry-requirements page. "Look it up online" is not an answer; naming who holds it is. **A missing label is a finding, not a blank field.** A claim that arrives with no stability label is not treated as durable — it is reported to the reader as an unclassified claim, which is the defect it is. ## The second idea worth quoting: whose city is the default A closed vocabulary of neighbourhood types built on European and North American cities describes Lagos, Chongqing, La Paz, Ahmedabad or Kinshasa badly and with total confidence. "Inner-city", "suburb", "downtown", "gentrifying" carry the history of one particular way a city grew, and they mislabel a city that grew a different way — where the wealthy live on the periphery, where altitude sorts people by class, where the informal settlement is the economic engine, where there is no single centre at all. **So this app ships exactly one closed label set, `stability`, and it classifies claims rather than places.** Every field that describes somewhere is open text, deliberately. The page additionally flags descriptions that map a district onto a district of another city — "the Brooklyn of X", "the Venice of the North" — because those tell you about the reference city and import a social structure that may not apply. ## The third idea: a citation has to bear the claim The city is named in the user's input, so one Wikipedia retrieval grounds it before the run. But `ss.search` returns a MediaWiki **snippet**, not an infobox, and a "cite only retrieved records" contract is therefore satisfied by citing a real page for a fact the page never mentions — a confabulation laundered behind a real URL, with the verification passing. The page re-reads every abstract that was cited and checks it **literally contains** the value claimed. A citation that fails is displayed as a **false citation, more prominently than an honest "model knowledge" would have been**, because false evidence is worse than absent evidence. The snippet is printed in full underneath so the reader can adjudicate the finding themselves. ## What it answers well - Why a city is the shape it is, and what actually divides it — a river, a rail line, altitude, the wind direction over the old factories, the difference between planned and self-built. - What a district is like and *why it got that way*, in its own terms. - What the city is genuinely, unusually good at, which is often not what it is known for. - What locals are tired of, without contempt for either side. - What is overrated: the gap between what people expect and what a famous thing actually is, and what to do instead. - What first-time visitors structurally misunderstand, and what it costs them. - How the city moves: which modes matter, whether walking is realistic and what the barrier is. ## What it will not do - State a price, a fare, an admission cost or an exchange rate. - State an opening hour, a closing time, a timetable or a service frequency as fact. - Say whether a named business, museum or line is currently open, running or still in existence. - Give current safety, health, visa or entry conditions. - Describe a city it cannot identify. `found: false` followed by a description is a contradiction, and the description is the wrong half. - Silently merge two cities that share a name. ## Contract Input: `{city, country?, question?, angle, depth, sources[], page_facts, ask_flags[], follow_up?}` where `angle` is `living | visiting | both` and `depth` is `quick | standard | deep`. Output: one JSON object with `found`, `confidence` (`grounded | recalled | uncertain`), `identity` (each anchor fact paired with a `_source`), `answer` (`headline`, `body`, `stability`, `as_of`), `shape`, `sorting_axis`, `districts[]`, `getting_around[]`, `worth_it[]`, `overrated[]`, `good_at`, `tiresome`, `misreadings[]`, `changing[]`, `check_before_you_go[]`, `declined[]`, `limits`. Model: `gpt-terra`. Visibility: unlisted. Answers are generated and nothing here is a substitute for the operator, the transit agency, or your government's travel advice.