Skip to main content

Search and filters

AuditorIA indexes every call by dozens of criteria. This guide covers the three search paths (quick, card-based, and full history) and how to combine them to find exactly the call you need.

Quick search by card

From the Dashboard, the quick-access cards launch pre-filtered searches:

CardApplied filter
Search by campaignspecific campaign_id
Search by operatoroperator_id or name
Search by dateDate range with date-picker
Search by directionPhone direction or geography
View problematic audiosNegativity or hate speech > threshold

Clicking a card prompts for the specific criterion. Example — Search by campaign:

Search by campaign dialog prompting for campaign ID

Enter the ID and click Confirm. The system builds the query using the composite index (campaign_id, date) for fast responses even on millions of records.


Result list

Results are shown in a dense table with server-side pagination.

Search results table with tickets, transcription status, and actions

Columns

ColumnWhat it shows
Checkbox for bulk selection
TicketInternal ticket ID (e.g., 16722762)
CampaignNumeric campaign ID
UserAgent operator_id
DateCall date
TimeLocal time
File nameOriginal .mp3 name
StatusBadge: Ready to process, Transcribe audio, Audio not found

Ticket states

StateMeaning
Ready to processAudio available, task not yet created
Transcribe audioHover → CTA to launch manual transcription
Audio not foundFile is not in MinIO (deleted, never uploaded, rotated)

Pagination controls

  • Recordings per page: 10, 25, 50, or 100.
  • Navigation: < > + page-number input.
  • Counter: "0 of 1816 rows selected" + "Page 179 of 182" in the lower corner.
info

Performance

The backend uses range queries (date >= :start AND date < :end) over composite indexes — date filtering is O(log n) even on tables with tens of millions of rows. See the architecture note.


Full history and combined filters

From the sidebar → Dashboard > History you access the advanced view with every available filter.

Available filters

FilterTypeDetail
StatusMulti-selectpending, processing, completed, error, approved, rejected
Date rangeDate pickerStart / end, presets (today, 7d, 30d, custom)
CampaignMulti-selectRespects user permissions
OperatorAutocompleteBy name or operator_id
EngineSelectwhisperx / openai / deepgram
DirectionRadioinbound / outbound / any
DurationRange slider0s to 2h
ScoreRange0 to 100
SentimentMulti-selectpositive / neutral / negative
TagsChipsFilter by GPT-generated tags
Free textInputFull-text search within the transcription

Combining filters

Example: completed tasks from campaign 162, by operator 1897, in the last 30 days, with negative sentiment, sorted by descending score.

tip

Persistence

Filters are saved in the URL (?status=completed&campaign=162&...) so you can share the view by link.


The Text search field searches inside the transcribed content.

Supported operators

OperatorExampleBehavior
Implicit ANDcancel serviceBoth words in the same segment
ORrefund OR returnEither of the two
"...""customer number"Exact phrase
-sales -spamExcludes the term
~invoice~Fuzzy search (tolerates typos)
info

Search engine

Texts are indexed in PostgreSQL using tsvector + GIN indexes for sub-second search up to ~10M segments.


Sorting

Click a column header to toggle asc/desc. Compound sorting is supported by holding Shift while clicking.

ColumnOrderTypical use
DateDESC by defaultSee the most recent first
ScoreASCDetect failed audits
DurationDESCIdentify abnormally long calls
OperatorAlphabetical ASCGroup by agent

Bulk selection and batch actions

  1. Use the header checkbox to Select all on the page.
  2. Or check tasks individually.
  3. A floating action bar appears:
ActionBehavior
Approve allMarks selected tasks as approved
Re-runReprocesses the selected tasks (same or different engine)
ExportDownloads CSV with the selected rows
Assign campaignRe-associates the tasks to another campaign
ArchiveMoves to historical archive
warning

Limits

  • Max batch: 500 tasks per action (configurable per tenant).
  • Re-run in batch re-queues in Redis and can saturate workers: do it outside peak hours.

Export

From the filtered listing:

  1. Apply the desired filters.
  2. Click Export.
  3. Choose format:
    • CSV (Excel-ready, with UTF-8 BOM).
    • XLSX (native Excel, with styles).
    • JSON (object per task with full metadata).
  4. The file downloads as auditoria-export-YYYY-MM-DD-HHmm.ext.
info

The export respects active filters. If you select rows, only those are exported; otherwise all that match filters are exported.


Performance

  • Key composite indexes: (operator_id, date), (campaign_id, date) on call_logs.
  • Range queries for dates: date >= :start AND date < :end (not DATE(col) = :val, which doesn't use indexes).
  • Server-side pagination: LIMIT/OFFSET with a bounded WHERE, avoiding millions of rows on the client.
  • Full-text search in PostgreSQL with tsvector, refreshed on transcription INSERT/UPDATE.

Troubleshooting

ProblemCauseSolution
"0 results" with reasonable filtersIncorrect date range time zoneVerify TZ in profile (es-AR = GMT-3)
Pagination always returns the same pageAggressive browser cacheHard refresh (Ctrl + Shift + R)
Export > 100k rows takes a long timeBackend processes in backgroundWait for the notification when ready
Full-text doesn't find obvious termsTranscription not yet indexed (async)Retry in 1–2 min

Next steps