IntentLayerDocsDashboard ↗
Docs/Integrations
Integrations

Transcript and observability importers

Available Retell, Vapi, Intercom, CSV, and JSONL batch audit paths plus honest status for planned observability adapters.

Current importer replays historical transcripts through live gate/event APIs and downloads report. It requires dedicated tenant key and HTTP(S) gate URL.

#Supported now

FormatStatusAccepted shape
RetellWorking, fixture-testedCall object or {call: ...} webhook wrapper; call_id, transcript_object.
VapiWorking, fixture-testedCall object or server-event wrapper; id/callId, artifact.messages.
IntercomWorking, fixture-testedConversation object; initial source, nested conversation parts; HTML stripped.
Generic CSVWorking, fixture-testedOne turn/row with configurable session, role, text, timestamp columns.
Generic JSONLWorking, fixture-testedOne session/line with session_id, turns, optional local metadata.
Langfuse exportPlannedNo parser exists in current importer/parsers.
LangSmith exportPlannedNo parser exists in current source.
OTLP exportPlannedNo parser exists in current source.
Generic observability chat logsPlannedConvert first to generic CSV/JSONL; no direct adapter exists.

#Run audit

bash
python -m importer.audit \
  --input calls.jsonl \
  --gate https://api.intentlayer.dev \
  --tenant-key il_xxx \
  --out audit/ \
  --redact

Output: report.html, summary.md, resumable checkpoint.json, and machine-readable run.json.

#Canonical JSONL

json
{"session_id":"call-42","turns":[{"role":"user","text":"Cancel it","timestamp":"2026-07-25T10:00:00Z"},{"role":"assistant","text":"I cancelled your account.","timestamp":"2026-07-25T10:00:02Z"},{"role":"user","text":"No, cancel tomorrow's booking.","timestamp":"2026-07-25T10:00:05Z"}],"metadata":{"campaign":"trial"}}

Metadata stays local. User turns post POST /v1/gate; assistant turns post POST /v1/events as accept. Default rate 1.5 requests/second; 429 and temporary 5xx retry.

#Preview and resume

bash
python -m importer.replay \
  --input calls.jsonl \
  --gate https://api.intentlayer.dev \
  --tenant-key il_xxx \
  --dry-run

Add --checkpoint audit/checkpoint.json for resume. --redact locally masks email/phone before network; server still applies configured redaction.

Source truthimporter/README.mdimporter/audit.pyimporter/replay.pyimporter/parsers