Daily LiveKit voice AI activity digest in Slack
Every weekday at 9am ET, post a plain summary of active rooms, recordings, and agent workers to Slack and log the row in Google Sheets.
Integrations
LiveKit
Google Sheets
Slack
Type
Categories
- Operations
- Engineering
Build a deterministic code workflow that runs on a cron every weekday at 9am America/New_York to publish a daily voice AI activity digest for our LiveKit project. It should not run on Saturday or Sunday and should skip a configurable list of holiday dates. This is a fixed sequence of list-then-format-then-write steps against known APIs, so it belongs as a code workflow and not an agent.
Data collection. On each run: (1) Call LiveKit List Rooms and count both the number of active rooms and the total number of participants across them right now. (2) Call LiveKit List Egress with a 24 hour window (i.e. filter the results to those created in the last 24 hours based on created_at) and bucket them by status into egress_complete_24h, egress_failed_24h, and egress_active. Also sum the recorded duration across the complete egresses into total_recorded_minutes. (3) For each currently active room, call LiveKit List Agent Dispatches for that room and sum the results into a single agent_dispatches_24h count, filtering to dispatches created in the last 24 hours.
Sheet write. Use Google Sheets Append Values to append one row to a configurable spreadsheet id and tab name. The row columns, in order, are: date (YYYY-MM-DD in America/New_York), active_rooms, active_participants, egress_complete_24h, egress_failed_24h, egress_active, agent_dispatches_24h, total_recorded_minutes. After the append, keep the link to the appended row so we can include it in the Slack message.
Slack summary. Use Slack Send a Message to post to a configurable leadership channel. Render the same eight numbers as a compact summary that stays under 15 lines total, plus a link to the Google Sheets tracker. If egress_failed_24h is greater than zero, list the top three failed egresses with their room name and error message so on-call can jump in. If there are no failures, omit the failure block entirely.
Configuration inputs the workflow should expose: LiveKit credential (project url, api key, api secret), Google Sheets credential, target spreadsheet id and tab name, Slack credential, target channel, timezone (default America/New_York), and a list of holiday dates to skip.
Operations to use: livekit.list_rooms, livekit.list_egress, livekit.list_agent_dispatches, google-sheets.append_values, slack.send_message.
What it does
- Counts active voice or video rooms and participants happening in your LiveKit project right now.
- Rolls up the last 24 hours of recordings by status: finished, failed, and still running.
- Adds one row per weekday to a Google Sheets tracker so you can see trends over time.
- Posts a short summary to a leadership Slack channel, and calls out the top failed recordings so on-call can investigate.
- Runs itself on a weekday schedule and skips weekends plus any holidays you list.
What you’ll need
- A LiveKit Cloud project you can read rooms, recordings, and agent workers from.
- A Google Sheets file with a tab set aside for the daily numbers.
- A Slack workspace and the channel you want the summary posted to.
How to customize it
- Change the schedule or timezone, or add company holidays the digest should skip.
- Point it at a different Google Sheets tab, or add extra columns like week number or notes.
- Swap the Slack channel, tune the message length, or change how many failed recordings get called out.
Use cases
- Daily Digests
- Notifications & Alerts