TrueServe Conversation Intelligence

AWS account 465572510980 · us-east-1 · deployed MVP

From Call to Answer

A clear pipeline for turning customer service calls into evidence-backed operational insight: redacted transcripts land in S3, a 15-minute compiler analyzes them with Bedrock and memory distillation, Athena stores the facts, and the Codex skill answers questions with charts.

1

Call Happens

A customer talks to an agent through Amazon Connect.

2

Redacted Transcript Lands

Contact Lens writes redacted `VOICE` JSON to S3. The stack does not read raw audio.

3

15-Minute Compiler Runs

EventBridge starts Step Functions. New objects are discovered using a watermark.

4

Bedrock Applies Meaning

Labels from the taxonomy: driver, root cause, intent, friction, escalation, confidence, evidence.

5

Memory Is Distilled

Calls are rolled up into hourly, daily, and weekly summaries: issue types, changes, claims, and evidence.

6

Athena Stores Facts

Conversations, utterances, annotations, evidence, and memory versions land in Iceberg tables.

7

Codex Answers

The skill queries Athena, reads memory pages, finds evidence, and generates dashboards.

M

What “memory distillation” means here

Bedrock analyzes each call one at a time. Memory distillation is the next layer up: the compiler takes those call-level labels, evidence spans, durations, and counts, then rolls them into time-window summaries. The goal is to maintain a useful memory for each hour, day, and week: what people called about, what changed, which examples prove it, and what an LLM should know before answering. Athena keeps the structured facts; the distilled memory gives Codex, agent assist, or a future customer portal compact context without rereading every transcript.

Real Demo Example

One Delta synthetic call, end to end.

This example uses `syn-delta-airline-v1-0242-0cb34882`, a synthetic redacted Contact Lens call from the Delta demo dataset. It shows what arrives, what labels get applied, what gets distilled, and what Athena can answer.

1. Source Transcript Snippet

S3 redacted JSON
Customer I am calling about mobile check-in loop. I already tried the mobile app and I still need this fixed today.
Agent Thanks for calling Delta. I can help with that. I will verify the account and look at what happened.
Customer The main problem is voucher not applying. This is affecting my trip timing.
Agent I see the digital channel failure case. Let me check the recent activity and policy notes before I make a change.

2. Labels Applied

convintel.annotation.v1
  • primary_driver: digital_channel_failure
  • root_cause: voucher_not_applying
  • intent: digital_channel_failure.support
  • resolution_status: resolved
  • confidence: 0.90
  • evidence: turn-0003

Bedrock’s role is not just “summarize.” It turns the conversation into structured facts: taxonomy labels, issue intent, root cause, friction and escalation signals, confidence, and evidence spans that point back to redacted turns.

3. Distilled Assessment Page

hour/day/week memory

Distilled memory: Daily issue summary for Delta demo

Input: individual call annotations for the time window. Each call contributes labels, evidence turns, duration, sentiment, resolution status, and a source contact ID.

Reduction: group calls by taxonomy label, compare this window with earlier windows, preserve representative examples, and turn the facts into a narrative memory that says what an LLM should know about the current operating picture.

Output: a versioned memory page for an hour, day, or week. A future LLM can use it as context: "Delta callers are currently over-indexing on digital channel failures, especially vouchers not applying; here are the counts, trend direction, representative contacts, and evidence."

  • Conversations annotated: 250
  • Top driver: digital_channel_failure: 79
  • Top root cause: voucher_not_applying: 34
  • Next: identity_verification_failure: 25
  • Memory version: dd1a6058421ef2540ef5e898637979bd

4. Final Athena Facts

query-ready tables
TableExample Row
ci_conversationcontact_id `syn-delta...0242`, synthetic `true`, duration `516,882 ms`
ci_utteranceturn `turn-0003`, role `CUSTOMER`, redacted content about voucher not applying
ci_llm_annotationdriver `digital_channel_failure`, root cause `voucher_not_applying`, confidence `0.90`
ci_memory_page_versiondriver summary page for `delta-airline-v1`
What drove calls this week?
Which root causes are accelerating in the last three days?
Show representative contacts for voucher failures.
Generate a dashboard of driver mix and evidence.

Drill Down

How the simple process maps to AWS components.

Click a component to see what it does, why it exists, how it scales, and where it lives in AWS.

What It Solves

From transcript piles to evidence-backed operating intelligence.

The compiler gives operations teams a repeatable way to ask what is driving calls, why issues are moving, and which contacts prove the pattern, without opening raw recordings.

Driver Discovery

Normalizes every conversation into comparable drivers, root causes, friction points, and resolution signals.

Evidence Discipline

Annotations carry utterance-level evidence spans, memory pages, and representative contact IDs for defensible summaries.

Demo Reset

Synthetic datasets can be generated, reseeded, validated, ingested, and reset by `dataset_id` without touching real data.

Analyst Speed

Codex can query metrics, find contacts, read memory pages, and generate dashboard artifacts from the packaged skill.

Redaction Boundary

The data plane is scoped to redacted Contact Lens JSON. Original audio and unredacted transcripts are out of bounds.

Future Channels

The schema leaves space for chat transcripts, BI dashboards, agent-assist surfaces, and customer-specific taxonomies.

250Delta demo conversations
7,027Redacted utterances
15 minIncremental schedule
11Iceberg tables

Runtime Flow

The same seven-step story, with the technical gears exposed.

The non-technical view is call to answer. The technical view is Step Functions coordinating Lambda, Bedrock, Glue, S3, and Athena.

1. Call and redaction

Amazon Connect and Contact Lens produce redacted voice analysis JSON. Raw audio is outside this workflow.

2. Discovery every 15 minutes

EventBridge starts the compiler, which checks S3 for new redacted files using an incremental watermark.

3. Normalize for analytics

The Lambda turns Contact Lens JSON into stable conversation, utterance, and signal rows.

4. Bedrock applies taxonomy

Bedrock labels driver, root cause, intent, resolution, friction, escalation, channel conflict, novelty, confidence, and evidence spans.

5. Distill memory

The compiler compresses call-level labels into a reusable assessment page that summarizes patterns across the run.

6. Load into Athena

Glue merges staged facts into Iceberg tables so analysts can query trends and examples.

7. Answer through Codex

The skill asks Athena, reads memory pages, finds evidence contacts, and renders charts or dashboards.

Technical drill-down: state machine
The deployed state machine is `tsf-convintel-dev-compiler`. It runs `DiscoverNewObjects`, exits through `NoNewObjects` when object count is zero, and otherwise proceeds through `Normalize`, Glue loads, `Annotate`, `CompileMemory`, and optional KB sync. Glue steps retry transient concurrency errors.
Technical drill-down: idempotency
Iceberg writes use table-specific merge keys such as `conversation_id`, `conversation_id + utterance_id`, and `version_id`. Replayed runs update existing rows instead of duplicating contacts.
Technical drill-down: redaction guard
Real data must arrive under `/Redacted/` and pass Contact Lens shape validation. Synthetic data is explicitly marked with `AnalyticsMetadata.Synthetic` and `synthetic=true`.
Technical drill-down: memory distillation
This is the Karpathy-like compression step: the system takes many call-level facts and turns them into hour/day/week memory pages. Those pages become context for Codex, dashboards, agent assist, and future systems so they can answer with the latest operating picture without rereading every transcript.

Scale and Performance

Designed for incremental work first, batch backfills second.

The current deployment favors safe, observable increments. The next performance step is materializing common dashboard aggregates into `ci_trend_snapshot`.

Bounded Discovery

`MAX_DISCOVERY_KEYS` limits a Lambda discovery pass. Watermarks prevent repeatedly scanning old objects.

Iceberg Merge

Glue 5.0 writes Parquet-backed Iceberg tables and merges by deterministic keys for replay safety.

Athena Result Reuse

The helper enables recent-result reuse for repeated dashboard and metric queries when Athena can reuse a matching result.

Concurrency Buffer

The Glue loader allows up to five concurrent runs, and Step Functions retries transient Glue concurrency errors.

Annotation Control

Bedrock calls are isolated to the annotation phase, making cost and latency easier to measure and tune.

Materialized Trends

`ci_trend_snapshot` and memory pages are ready for precomputed hour/day/week windows, so dashboards and LLMs can reuse the same distilled operating picture.

Integration Model

One compiler, many consumers.

Codex is the first analyst surface, but the data contract is intentionally generic: Athena tables, S3 evidence, and memory-page versions can feed BI, agent-assist, or customer portals.

Consumer
Codex SkillAnswers, charts, dashboards.
BI DashboardAthena metrics and snapshots.
Agent AssistKnown issues and policy memory.
Customer DemoResettable synthetic datasets.
Interface
`convintel.py`Query helpers and HTML/SVG output.
Athena SQLGoverned table access.
Memory PagesVersioned insight summaries.
Generator CLIGenerate, validate, ingest, reset.
Evidence
Contact IDsRepresentative records for summaries.
Trend RowsDriver/root-cause windows.
Evidence SpansUtterance-level rationale.
Dataset MetadataSeed, prompt, model, quality scores.

Codex Skill Today

Uses Athena, S3 memory pages, offline Delta snapshot fallback, and generated dashboards.

BI Tomorrow

Point QuickSight or another BI layer at `ci_trend_snapshot` and aggregate views.

Knowledge Base Later

Enable Bedrock KB once an OpenSearch Serverless vector collection and index are selected.

Data Model

Conversation facts, annotation facts, memory lineage.

The model keeps transcript turns separate from annotations and evidence so analysts can aggregate safely while still drilling down to representative contacts.

Table Grain Primary Use Join Path
ci_conversationContact/conversationHeader, dataset, source, queue, duration.Root table by `conversation_id`.
ci_utteranceTranscript turnRedacted content, role, offsets, sentiment.Many to `ci_conversation`.
ci_llm_annotationConversation annotationDriver, root cause, confidence, novelty.One to `ci_conversation`.
ci_annotation_evidenceEvidence spanQuote and rationale supporting an annotation.Annotation to utterance.
ci_memory_page_versionCompiled page versionVersioned insights and dashboard provenance.Dataset and page lineage.
ci_trend_snapshotTrend windowMaterialized dashboard acceleration.Dataset, driver, root cause.
ci_claimAnalyst claimClaim text, SQL, confidence, evidence contacts.Links claims to contacts and pages.
Technical drill-down: annotation schema
`convintel.annotation.v1` includes drivers, intent, root cause, resolution status, friction points, escalation triggers, channel conflict, novelty score, confidence, and evidence spans.
Technical drill-down: synthetic data contract
Synthetic datasets emit Contact Lens-shaped redacted JSON under `conversation-intelligence/synthetic/source/<dataset_id>/Analysis/Voice/Redacted/`. Ground-truth labels are evaluation-only and not treated as model findings in normal demos.

AWS Links

Jump directly to the deployed resources.

Links open the AWS Console in `us-east-1`. Access depends on the active AWS account and IAM session.