Appearance
Collected Data Inbox ​
The Collected Data inbox (/collected) is where you review every record your agents extract from conversations using Data Templates. Instead of browsing a flat entity list, it groups captured responses like an email inbox — new items need attention, handled items are archived from view, and everything is filterable and searchable.
What You'll See ​
Each row is one captured response — a single template extraction from a conversation, with the person's name (if captured), a one-line summary, the template it belongs to, and when it arrived. Selecting a row opens its full detail on the right (or in a slide-over on mobile).
Tabs ​
| Tab | Server filter | Shows |
|---|---|---|
| Inbox | status=NEW | Fresh extractions not yet reviewed. Badge shows the live NEW count |
| All | none | Everything except archived records |
| Handled | status=REVIEWED | Records you've marked handled |
Note:
ACTIONEDandARCHIVEDare still valid statuses in the system (set via the API or the legacy entity views), but the inbox tabs don't filter on them directly —Allshows everything that isn't archived.
Header Stats ​
| Stat | Meaning |
|---|---|
| Need attention | Live count of NEW records (same number as the Inbox tab badge) |
| This week | Count of currently loaded rows captured in the last 7 days — grows as you scroll/load more, not a separate server query |
| All time | Total records ever captured, across all statuses |
Filtering and Searching ​
Type Chips ​
Below the search bar, one chip per data template shows how many records match it. Click a chip to filter to that template; click again (or click All Types) to clear it. Counts come from the list response's filter-aware facets when available; if the backend doesn't return facets for a request, chips still show with the template name and icon but no count.
Agent Filter ​
Dropdown listing every agent — filters to records extracted by that agent only.
Search ​
Free-text search across captured field values. Debounced 300ms before it hits the server, so typing doesn't fire a request per keystroke.
All three filters combine with the active tab and reset pagination (load-more) when changed.
Day Grouping ​
Rows are grouped into Today, Yesterday, This week, and Older, in that fixed order, with a sticky header for each group. Grouping is computed over whatever rows are currently loaded — loading more can add rows to any group, never reorders existing ones.
Detail Panel ​
Selecting a row loads its full record on the right:
| Section | What it shows |
|---|---|
| Person header | Avatar (initials or generic icon), display name (or "Anonymous visitor"), template badge, capture time, agent name, channel |
| Contact chips | Email / phone, if captured — click either to copy to clipboard |
| Captured fields | Every field defined on the record's template, in template order, as an "N of M fields" readout with a progress bar. Fields with no extracted value show Not captured. Each populated field has a hover-to-reveal copy button |
| Conversation excerpt | The relevant slice of the source conversation, visitor/agent bubbles, with the exact captured phrases highlighted. A quote the system captured but couldn't re-locate in the excerpt (truncated or from an earlier part of the conversation) shows as a small "captured" chip instead of an inline highlight. Only rendered when the record has an excerpt — extractions with no linked chat session (e.g. seeded directly via the API) omit this section entirely |
| Action bar | Mark handled (or Handled badge with a toggle to reopen), Reply by email (opens a mailto: link, only when an email was captured), and an overflow menu for Export this record / Delete |
Marking a record handled shows a toast with an Undo action that reopens it. If you're in the Inbox tab, marking a record handled automatically advances the selection to the next NEW row.
Bulk Actions ​
Check multiple rows to open a floating bulk action bar at the bottom of the screen:
| Action | Behavior |
|---|---|
| Mark handled | Bulk-updates all selected rows to REVIEWED |
| Export | Downloads a CSV of just the selected rows (client-side, see Exporting Data) |
| Delete | Opens a confirmation modal before permanently deleting the selected records |
| Clear (×) | Clears the selection without acting |
Exporting Data ​
There are two distinct export paths — they produce compatible CSV files (same column order) but work differently:
| Export | Trigger | How it works |
|---|---|---|
| Header "Export CSV" | Toolbar button, always exports the full current filter set | Streams directly from the server via a dedicated route (/api/entities/export) — respects every active filter (tab, agent, template, search), not just what's loaded on screen. Filename is set by the server |
| Selection / single-record export | Bulk bar Export, or a detail panel's Export this record | Builds a CSV client-side from rows already loaded in the browser. Convenient for a quick export of what you've selected, but won't include filtered-out or not-yet-loaded records |
Both exports quote every field and neutralize values starting with =, +, -, @, tab, or carriage return (CSV/spreadsheet formula-injection hardening).
Keyboard Shortcuts ​
| Key | Action |
|---|---|
↑ / k | Select previous row |
↓ / j | Select next row |
E | Mark the selected NEW response handled |
Esc | Clear an active bulk selection |
Shortcuts are ignored while focus is inside an input, textarea, or select, and when a modifier key (Cmd/Ctrl/Alt) is held.
Loading, Empty, and Error States ​
| State | What you see |
|---|---|
| First load | Skeleton rows while the list fetches |
| No data at all | "Nothing collected yet" with a CTA to your Gnosaris |
| Filtered to zero | "No matches" with a Clear filters action |
| List fetch fails | Friendly error message with Retry |
| Detail fetch fails | Error message with Retry in the detail pane (the person header stays visible) |
| Load-more fails | Existing rows are kept, a toast reports the failure, and the next attempt re-requests the same page |
Legacy Entity Views ​
The older generic entity browser (/entities and /entities-v2) is still URL-reachable and functional, but no longer linked from navigation — the sidebar's "Collected Data" entry points to /collected. Retirement of the legacy pages is tracked separately; they are not dead code.
Related Features ​
- Data Templates — define what agents capture
- Agents — assign templates and collection modes
- Sessions — view the full conversation behind a captured record