Neotoma

Inspector, Entities

The Entities section is where most operator work happens. It exposes the typed list of every entity Neotoma has resolved, the live snapshot of each one, the immutable observations that produced that snapshot, and the controls to make corrections without erasing history.

Entity list

The entity list (/entities) is a virtual table backed by retrieve_entities. It supports free-text search on canonical_name and snapshot fields, type-scoped filtering, identity-basis filtering (so you can audit how each row was resolved, schema rule, schema lookup, heuristic name, etc.), and offset pagination tied to the URL.

inspector.neotoma.io/entities?type=transaction
Entities
3,104 transactions · sorted by last_observation_at
Search…type: transaction ×
identity_basisschema_ruleheuristic_name25 / page
NameTypeLast writerTierLast seen
Subscription · Verceltransactionclaude-code@1.4software12:41
Domain renewal · namecheaptransactioncursor-agent@build-918hardware11:08
Coffee · Blue Bottletransactioningest-pipeline@mycosoftware10:55
Refund · Amazontransactionmanual-importanonymous09:14
Filterable entity list with type chip, identity-basis filter, and a column for the resolved trust tier.

Entity detail, Snapshot tab

Clicking a row opens the entity detail page. The Snapshot tab shows the resolved snapshot, the same JSON retrieve_entity_by_identifier returns, with per-field provenance: which observation produced that value, when, and from which agent / trust tier. Hovering a field surfaces the source row's identifier and a deep link to the source content endpoint.

inspector.neotoma.io/entities/ent_4ad…/snapshot
Subscription · Vercel
transaction · ent_4ad9f1c2
softwareEdit
SnapshotObservations (8)Relationships (3)GraphEdit
amount
20.00 USD
claude-code@1.4·software
merchant
Vercel Inc.
claude-code@1.4·software
billing_period
2026-04
ingest-pipeline@myco·software
category
subscription
operator (you)·software
Per-field provenance: each field shows the observation that 'won', the agent, and the trust tier.

Observations tab

The Observations tab is the immutable history. Every store / correct / merge that touched this entity appears here, oldest first, including overwritten or losing observations. Observations are never deleted; corrections layer on top via a higher source_priority or observation_source tie-break (sensor < workflow_state < llm_summary < human < import). The reducer column shows which observation currently "wins" for each field.

Relationships tab

Lists incoming and outgoing typed edges (PART_OF, REFERS_TO, EMBEDS, SUPERSEDES, and any custom types). Each row links to the related entity and shows the agent that created the edge.

Graph tab

Renders the 1- or 2-hop graph neighborhood centred on this entity using @xyflow/react. Nodes are coloured by entity_type; edges by relationship type. Useful for confirming that a refund linked correctly to the underlying transaction, or that a meeting invite linked to the right attendee contacts.

Edit tab, multi-field corrections

The Edit tab batches multiple field corrections into a single correct call. Pre-fill it with the current snapshot, change one or more fields, and the Inspector emits a new observation per changed field, with observation_source: "human" so the reducer prioritises them appropriately. Nothing is overwritten, see the Observations & sources page for how the reducer applies these.

Duplicate detection & merge

From the entity detail menu, "Find potential duplicates" calls list_potential_duplicates(entity_type) and displays candidate pairs with score and matched fields. The detector is read-only and never auto-merges; merging is an explicit action that invokes merge_entities(from, to) after operator confirmation.