The graph
Explore how the companies, sessions, people, places and fields of Web Summit Lisbon 2026 connect: start from one, expand, filter, rank, and ask how one company is connected to another.
Not everything
This picture is not everything. Web Summit's licence does not let us republish data from its site, so on 11 November 2026 we took off whatever rested only on it: a company left with nothing is not drawn, and each comes back when we find another public source. How items come back
The newsroom's graph, to explore: 801 nodes and 942 edges in four worlds (the summit's programme, the people, the industry, the evidence), joined by named verbs, each with its inverse. It starts from a question, never from the whole: a company, a session, a person, or the most important nodes by a ranking you choose.
How to use it
- Find a node by name, then expand it one hop at a time, or set the depth of the walk around it (the explore stepper of graphs.sgit.ai's reader).
- Anchor the nodes you start from: anchors are pinned to the edges of the canvas and held through every layout, so a path between two anchors reads left to right.
- How is A connected to B? Name two nodes and the explorer finds up to three shortest paths, each read as a sentence with its verbs (
Replit is filed under Developer tools; Developer tools classifies LaunchDarkly). - Top: keep the N most important nodes, by PageRank, betweenness or degree over the whole graph, or the N edges that carry the most shortest paths (edge betweenness): the bridges.
- Filters, at four levels: worlds, types, verbs, and facets (day, organiser Web Summit or other, field, country).
- Layouts: force, the map (the whole graph laid out once at build, so a large view draws at once), radial (rings by hops from the anchors), layered by world, tree, grid, and a list. A view of more than 200 nodes uses the map's positions.
- The panel shows the selected node's record, every connection read as a sentence with its source and the date it was read, and a link to its page.
- The URL holds the state, so a view can be shared.
- Centres of gravity: an animated picture of the companies orbiting the wells of their field or country.
Its address
| Parameter | Example | Meaning |
|---|---|---|
view | whole, industry, summit, people, companies/replit, events/<slug>, people/<slug> | the universe: a view of the whole graph from /api/v1/graph/ |
focus, depth | company:replit, 2 | the node to explore from and how many hops (max for all) |
anchors | company:replit,company:cloudflare | pinned start nodes |
expand | company:1password | nodes expanded by one hop |
path | company:replit~company:cloudflare | the paths between two nodes |
top, by, what | 60, betweenness, edges | the top N nodes (or edges) by a ranking |
worlds, types, verbs | industry,people, company,person, speaks_at | what to show (default: all) |
facets | date:2026-11-10;organiser:web-summit;category:security;country:Portugal | facet filters |
layout, sel | radial, company:replit | the layout and the selected node |
For a chat or an agent
The graph answers commands through the page's tool API (window.__tool, registered through window.__toolQueue), from this page or any other: off this page, the view commands return the explorer's address with the state they ask for (or open it, with open: true); graph.query, graph.search, graph.select and graph.path answer anywhere.
graph.load({view}): show a view: whole, industry, summit, people, or companies/<slug>, events/<slug>, people/<slug>graph.focus({id, depth?}): explore from one node (an id such as company:replit, or a name), depth hops (default 1, "max" for all)graph.expand({id}): add a node's neighbours, one hop, without moving what is already drawngraph.filter({types?, verbs?, worlds?, facets?, reset?}): what to show; facets: {date, organiser, kind, category, country, track}graph.anchors({ids, mode?}): pin start nodes (mode set, add or clear); a two-anchor view reads left to rightgraph.top({n, by?, what?}): keep the top n nodes (or edges) by pagerank, betweenness or degree; n 0 clears; returns the rankinggraph.layout({name}): force, map (the whole graph's layout, computed at build), radial, layered, tree, grid or listgraph.path({from, to, max?, avoid?}): up to three shortest paths between two nodes, each with its verbs and as a sentencegraph.select({id}): select a node; returns its record, its connections with their sources, and its pagegraph.state({}): what is on screen: view, filters, anchors, focus, counts, the selection, the URLgraph.snapshot({full?}): the canvas as a PNG data URL, for the chat to attach as an imagegraph.query({type?, verb?, from?, to?, text?, limit?}): read: edges (with verb) or nodes (without) matching, over the whole graphgraph.search({text, type?, limit?}): read: nodes whose name matches, with their idsgraph.reset({}): back to the start view
The data
The explorer loads graph/explorer.json: the whole graph compact, with each node's degree, betweenness and PageRank and each edge's betweenness, computed at build. The views it starts from are the API's own: graph/whole.json, industry, summit, people, and one per company, event and person. The grammar: ontology.json (22 types, 37 verbs).
Where it comes from
The engine is ported from the universe reader on graphs.sgit.ai (code Apache-2.0): the explore walk and its degree stepper, the stable-add layout (a node already on the canvas does not move when others arrive), pinned slots for anchors, the focus ring, the path query, preset views and the snapshot a chat attaches. It draws with Cytoscape.js 3.30.2 (MIT, copyright the Cytoscape Consortium), vendored as graphs.sgit.ai vendors it: its licence.