Itinera Network Explorer
An interactive map of who knew whom in the world of the 18th-century Grand Tour — built on relationship data from Itinera, the University of Pittsburgh’s digital-humanities project documenting historical travelers, artists, and their journeys. Itinera is their project; this explorer is a prototype I built on exports from it, not an official Itinera tool. Pick a figure, search for anyone by name, and click nodes to walk the network.
scroll to zoom · drag the canvas to pan, a node to reposition · click a person for details — bright-outlined nodes expand one degree further · / to search · esc to close panels.
What this is
Itinera is a long-running research project in Pitt’s History of Art & Architecture department that reconstructs the itineraries of 18th- and 19th-century travelers — the artists, architects, collectors, and statesmen of the Grand Tour era — from archival sources into a structured collections database.
The relational half of that data (who traveled with whom, who patronized whom, who was whose student) is rich but hard to see in a database interface. During my summer at the Visual Media Workshop I worked on getting it out: exporting entity-relationship graphs into portable JSON and prototyping this explorer.
Built as a prototype during my Summer 2025 internship with Pitt’s Visual Media Workshop; rebuilt and polished afterward as a portfolio piece. The three named figures are real exports from the Itinera database; the fourth tab is a clearly-marked synthetic demo network included to show how the explorer behaves at larger scale.
Three moving parts
01 Export pipeline
Each figure’s network is pulled from the Itinera database into a
self-contained JSON document: the root entity, its relationships
(in these three files, only acquaintance of and
travel companion of), and one further degree of nested
relationships wherever the export carried them.
02 Force-directed layout
A D3 force simulation lays the graph out physically — charge repulsion, link springs, collision radii — with first-degree connections seeded in rings around the central figure so large networks open legibly instead of as a hairball. Zoom, pan, and search keep big graphs navigable.
03 Progressive expansion
Nodes carrying nested relationship data render with a bright outline; selecting one merges its connections into the live simulation. The graph grows only where you’re looking — the same way archival research actually proceeds.
Design decisions
Roles as color. Itinera encodes occupation as numeric role codes. The explorer resolves the codes I have a mapping for (architect, artist, collector, administrator, monarch…) and colors nodes by profession; a code I can’t map is shown as the raw number rather than guessed at. Most people in these three exports carry no role code at all, so most of the graph is gray — and Robert Adam’s coded connections are mostly artists, not fellow architects. The palette is chosen so the closest pairs still separate under simulated red-green colorblindness, and every node also carries a text label, so identity never rides on color alone.
Directed where the archive is directed. Asymmetric relationships (patron of, student of, child of) draw with a subtle arrow; symmetric ones (travel companion, sibling) don’t. Worth saying plainly: the three real exports contain only acquaintance of and travel companion of, both symmetric, so arrows appear on the demo network and nowhere else. The visualization encodes exactly as much as the record states.
Data stays honest. The viewer renders exactly what the export contains — no inferred links, no smoothing — and the synthetic demo network is labeled as synthetic everywhere it appears. Where the archive is silent, the graph is silent.
A defect I did not paper over. Each relationship in these exports can carry a detail record (role, dates, further connections), and in most cases that record describes a different person than the one named — usually someone else who appears elsewhere in the same file. Of the 29 detail records across the three exports, 6 name the person they are attached to. Rather than print one person’s dates and connections under someone else’s name, the explorer checks that a detail record names the person it is attached to and drops it when it doesn’t: those nodes appear with no role, no dates, and nothing to expand. The status line under the graph reports how many were dropped. Fixing it properly means re-running the export against the source database.