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.
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.
Additional information
What does this prompt do?
- 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 do I need to use this?
- 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 can I 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.
Frequently asked questions
Do I have to log in to LiveKit Cloud every morning to see this?
What happens on weekends and holidays?
What if there were no failed recordings yesterday?
Can I send this to more than one Slack channel?
Does this cost extra LiveKit usage?
Related templates
Stop logging in to LiveKit Cloud just to check the numbers.
Connect LiveKit, Google Sheets, and Slack once, and Geni posts the daily voice AI digest every weekday at 9am ET.