AI Reporting and Summaries for Live Events
Step Functions aggregation and grounded Bedrock summaries over event data
The problem
After an event, organizers want one comprehensive report — attendees, user activity, login history, Q&A, polls, surveys — plus plain-language summaries and insight. That data is spread across several DynamoDB tables and an Athena telemetry store, one of those queries is asynchronous, and the obvious implementation re-fetches every user's profile inside every report branch. It also cannot hang on a long HTTP request while all of that runs.
Options on the table
Architecture at a glance
The decision
An HTTP call starts a Step Function that fans out across the report domains and returns an execution id; clients poll for status, so nothing hangs on a long connection. Every branch hydrates from a single attendee dictionary, and Amazon Bedrock (Converse over a Knowledge Base, with role-based model fallback chains) writes the summaries.
How it works
- 1The HTTP request starts a Step Function and returns an execution ARN. Clients poll a status endpoint, so there is no long-lived request to time out.
- 2It fetches the event profile and session list, then builds one attendee dictionary (userId to profile) as the single source of truth for hydration.
- 3Parallel branches run: user activity from Athena behind a wait-and-choice poll loop, login history from DynamoDB, and Q&A, poll and survey as Map states fanned out over sessions.
- 4Each branch hydrates names and groups from the attendee dictionary instead of re-querying user profiles, turning many redundant reads into one.
- 5Bedrock Converse over a Knowledge Base (S3 Vectors) generates transcription summaries, question sets and the comprehensive report, with role-based model fallback chains so one model outage does not stop the run.
- 6Reports render to Excel and CSV, land in S3, and ship through CloudFront; the report password is encrypted with KMS.