GraphQL Conf 2026

One Graph.
Twelve Data Sources.
Every City Block in San Francisco.

A Viaduct-powered GraphQL API that federates 12 civic data sources into a unified graph — serving both spatial UIs and AI clients from a single endpoint.

12 Data Sources
8 User Profiles
3.5M+ Records
1 GraphQL Endpoint
Viaduct Kotlin/JVM PostgreSQL + PostGIS MapLibre Claude MCP

Twelve Sources. One Schema.

All data seeded offline — no external API calls at query time. Every record time-windowed, geocoded, and enum-normalized.

Building Permits DataSF
150K Point
Zoning Districts DataSF
130 MultiPolygon
Land Use DataSF
200K Polygon
Muni Stops DataSF
3,500 Point
Muni Routes DataSF
150 MultiLineString
GTFS Schedule SFMTA
1.5M FK
311 Cases DataSF
1.5M Point
Census ACS Census
200 Demographics
Census TIGER Census
200 MultiPolygon
Street Trees DataSF
190K Point
Green Spaces OSM
Varies Polygon
Parcels DataSF
200K Polygon

Same Query. Different Eyes.

The X-UrbanMesh-Profile header controls which fields resolve. Same schema, eight perspectives.

Urban Planner

Zoning compliance, permit history, land-use trends

zoningCompliancepermitHistorylandUseTrends
Profile: urban-planner
Real Estate Developer

Permit timelines, home values, investment metrics

permitDurationDaysmedianHomeValueinvestmentMetrics
Profile: real-estate-developer
Transit Planner

Stop frequency, coverage gaps, commute patterns

departuresPerHourcoverageGapScoretransitCommuterPct
Profile: transit-planner
Resident

Nearby trees, transit options, walkability, open 311 cases

walkabilityScorenearbyTreesopen311Cases
Profile: resident
Small Business Owner

Zoning verification, foot traffic, disruption risk

footTrafficProxydisruptionRisknearbyPermits
Profile: small-business-owner
Environmental Advocate

Tree canopy, green spaces, commute modes, equity

canopyCoveragegreenSpaceAccessbikeCommutePct
Profile: environmental-advocate
Data Journalist

Time-series trends, anomalies, cross-correlations

permitVelocityyoyAppreciationcomplaintTrends
Profile: data-journalist
Accessibility Advocate

ADA stops, accessible routes, sidewalk issues

adaAccessiblewheelchairBoardingsidewalk311Cases
Profile: accessibility-advocate

Two Clients. One Graph.

A browser-based map UI and an AI client via MCP consume the same GraphQL endpoint — differentiated only by a profile header.

Browser Client MapLibre GL Click, pan, search, compare layers on an interactive map
AI Client Claude via MCP Natural language queries, multi-step reasoning, 11 tools
POST /graphql X-UrbanMesh-Profile: <profile>
Viaduct Server Kotlin/JVM
:parcels :permits :transit :civic :census :environment :geography
PostgreSQL + PostGIS 11 tables · spatial indexes · no runtime API calls

Five Moments. One Story.

A narrative arc across four real San Francisco locations, showing what a unified data graph makes possible.

01

One city, one graph

16th & Mission

A single query resolves a parcel with permits, zoning, transit stops, 311 cases, and census data — all from one endpoint.

“Five data sources. One query. Zero client-side joins.”

02

Same question, different answers

16th & Mission

Switch the profile header and watch fields appear and disappear. The urban planner sees zoning compliance; the resident sees walkability.

“Same query, three profiles, completely different results.”

03

Who needs this stop?

Market & Van Ness

The accessibility advocate sees ADA boarding and wheelchair access. The transit planner sees headway stats and coverage gaps.

“Same Muni stop, two planners, two different answers.”

04

The invisible city

Outer Sunset

The environmental advocate reveals tree canopy coverage, green space access, and bike commute patterns — an entirely different San Francisco.

“The data you never knew was there.”

05

Disruption radar

Valencia Corridor

The small business owner queries a single block and sees active construction permits, 311 complaints, and foot traffic proxy — a disruption risk assessment.

“Every permit and complaint that could affect your storefront.”