Monthly demographic refresh for your candidate markets

By General Input

Pull fresh population, income, and household stats for every ZIP code on your expansion shortlist, append them to a tracker sheet, and recap in Slack.

Integrations

  • Sites USA
  • Google Sheets
  • Slack

Type

Deterministic Code

Categories

  • Operations

On the first business day of every month at 8am, run a deterministic code workflow that refreshes demographics for every ZIP code on my expansion shortlist and appends the results to a Google Sheet so I can watch trends over time. Trigger: cron, first business day of each month, 8am in my timezone.

Inputs live in a Google Sheet called "Candidate Markets" with columns: zip code, market name, target customer profile note. The workflow should read this sheet via Google Sheets Get Values at the start of each run.

Demographic variables to pull per ZIP: total population, median household income, median age, total households, daytime population, and growth rate. At the start of the workflow, call Sites USA List Demographic Variables once to resolve the IDs for those six variables. Also call Sites USA List Known Trade Area Types once to confirm the type ID for ZIP code (it is 0 per the Sites USA docs, but resolve it dynamically the first time). These two lookup calls happen once per run, not per row.

Main loop: for each row read from the Candidate Markets sheet, call Sites USA Get KTA Demographics with the ZIP code, the ZIP KTA type ID, and the six variable IDs. Pace the loop at one request per second to respect Sites USA's rate limit. If a ZIP is not found, log it and continue, do not fail the whole run.

Output: append one row per ZIP per run to a tab called "Snapshot" in the same spreadsheet via Google Sheets Append Values. Columns in order: snapshot date (YYYY-MM-DD), zip code, market name, target customer profile note, population, median household income, median age, households, daytime population, growth rate. Do not overwrite existing rows. The Snapshot tab accumulates one row per ZIP per month so historical trend lines build up.

After the snapshot finishes writing, post a single Slack Send a Message to the channel #market-research (configurable). The message should include the snapshot date, a link back to the spreadsheet's Snapshot tab, the number of ZIPs processed successfully, and the count of any ZIPs that were skipped or failed.

Keep this fully deterministic. Same inputs, same outputs. No AI nodes, no judgement calls, no LLM-generated summaries in the message. The Slack recap is a templated string filled with counts and a link.

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