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.

Deterministic Code
LiveKitGoogle SheetsSlackOperationsEngineeringDaily DigestsNotifications & Alerts
PromptCreate

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?
No. The whole point is that the numbers show up in Slack and Google Sheets on their own, so leadership and on-call never need to open the LiveKit dashboard just to check activity.
What happens on weekends and holidays?
The workflow checks the day before it runs. Saturdays and Sundays are skipped automatically, and you can list company holidays you also want to skip.
What if there were no failed recordings yesterday?
The Slack message just shows the counts and a link to the Google Sheets row. The failure callout only appears when there is something worth investigating.
Can I send this to more than one Slack channel?
Yes. Duplicate the send step or add a second channel to the workflow after you generate it, and the same summary will post to both places.
Does this cost extra LiveKit usage?
The workflow only reads status information, it does not create rooms or start recordings. Reads against your LiveKit project are not billed as participant or recording minutes.

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.