Weekly favorite artist concert radar in Slack

By General Input

Every Wednesday morning, get a Slack digest of every new show your favorite artists just announced within driving distance of your city.

Integrations

  • Ticketmaster
  • Google Sheets
  • Slack

Type

Agentic Task

Categories

  • Personal Productivity

Build me an agent workflow that runs every Wednesday at 9am in my local timezone and posts a Slack digest of newly announced shows by my favorite artists, within driving distance of my city.

Trigger: cron, weekly on Wednesday at 9:00 in my local timezone.

Inputs the agent should accept when I configure the workflow: (1) the Google Sheet ID and tab name where my favorite artists live, (2) my home city as a latitude/longitude string (latlong), (3) a default search radius in miles, (4) the Slack channel ID or user ID to post the digest to, and (5) the look-ahead window in months (default 6).

Sheet shape: one artist per row. Column A is the artist name (required). Optional columns: B = city override as latlong, C = radius override in miles, D = last_notified_event_id (the agent writes back here so it can dedupe future runs).

Step 1: Read the artist list from Google Sheets using the Get Values operation. Pull columns A through D so the agent can see existing dedupe state.

Step 2: For each artist row, call Ticketmaster Search Attractions with the artist name to resolve the Ticketmaster attraction ID. If there are multiple matches, pick the music attraction with the highest upcoming event count. If nothing matches, skip the row and note it for the digest.

Step 3: For each resolved attraction ID, call Ticketmaster Search Events filtered by attractionId, latlong (the artist's row override or my default), radius (artist override or default), unit=miles, startDateTime = now, and endDateTime = now + look-ahead window. Read events out of _embedded.events. If the row already has a last_notified_event_id, drop any events with an id at or before that id (Ticketmaster returns events in date order, so newer events have later announcement dates). Also drop events whose id matches anything we previously notified for this artist.

Step 4: For every new event, capture: artist name, event name, local event date and time, venue name and city, ticket URL, on-sale start datetime (sales.public.startDateTime), and presale windows if present (sales.presales[].name + startDateTime + endDateTime). On-sale and presale times are the actionable bits, do not omit them.

Step 5: Post a single Slack message via the Send a Message operation to the configured channel or DM. Format as a short header, then one bullet per new show in Slack mrkdwn: *Artist* — Date · Venue, City · <ticketUrl|Get tickets> · On sale Sat Jun 7 10am (presale Thu 10am with code ARTIST). Group bullets under each artist if there are multiple shows. If no new shows surfaced, post a short message instead: "No new tour dates from your favorites this week. I'll check again next Wednesday." Never stay silent.

Step 6: Update dedupe state. For each artist that had new shows, write the newest event ID back to column D of that artist's row using the Google Sheets Append Values operation against a tracking tab named "notified_log" (columns: timestamp, artist, event_id, event_name, event_date). Also overwrite column D of the artist's row in the main tab with the newest event_id so the next run can short-circuit. Use valueInputOption RAW for both writes.

Guardrails: throttle Ticketmaster calls to about 4 requests per second and back off on HTTP 429. Cap the digest at 25 shows so the Slack message stays readable; if there are more, mention the overflow count at the bottom. Skip any artist row with a blank name. Treat Ticketmaster errors per-artist (one bad lookup should not kill the whole run).

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageWin back LiveChat visitors whose chats went unansweredLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seats