Intelligence workflow¶
On this page¶
- Question and source records
- Build stable entities
- Build relationships
- Render for investigation
- Use the returned evidence
Question and source records¶
Assume an analyst wants to compare two vehicles observed near the same location within an hour. Start with source records, not a pre-shaped graph:
| vehicle | location | observed at | source | confidence |
|---|---|---|---|---|
ABC123 |
Harbour camera 7 | 2024-09-02 08:14 | ANPR | 0.96 |
12VEC |
Harbour camera 7 | 2024-09-02 09:10 | CCTV | 0.88 |
Build stable entities¶
Create one node for each durable entity: vehicle, location, observation time,
camera, person, or device. Prefix IDs where source namespaces can overlap, for
example vehicle:ABC123 and location:harbour-camera-7. Preserve source keys
and confidence inside data for selectors and later joins.
Build relationships¶
Create explicit edge records for OBSERVED_AT, RECORDED_BY, and
OBSERVED_DURING. Edge IDs should be deterministic when the source record is
durable, such as sighting:anpr:8941. Validate all endpoint references after
constructing the graph.
Render for investigation¶
Enable only the tools required by the workflow:
event = graph_workbench(
elements,
layout="fcose",
node_styles=node_styles,
edge_styles=edge_styles,
selection_mode="box",
return_selection=True,
search=True,
node_actions=["show_neighbors", "hide_unselected", "restore_hidden"],
analysis_actions=["shortest_path", "connected_components", "degree"],
return_positions=True,
key="vehicle-location-investigation",
)

Vehicles, locations, times, people, and devices remain distinguishable while sharing one analytical workspace.
Use the returned evidence¶
Turn selected_elements or matched_elements into a dataframe. Join it to the
source table, preserve provenance, and show the records beside any analytical
result. A shortest path is easier to review when each node and edge ID resolves
to its authoritative record.
For persistent changes, route CRUD or expansion events through application services and issue validated graph commands only after the data operation succeeds.
Conclusion¶
The graph should expose relationships without replacing the records that justify them. Stable IDs, source fields, and returned element dictionaries keep visual analysis connected to auditable data.