Global operations exposure map for your sites and suppliers

Open one board each morning to see which of your facilities, suppliers and shipping lanes are sitting near trouble in the news right now.

App
GDELTAirtableSlackOperationsResearch & MonitoringNotifications & Alerts
PromptCreate

I run global operations and I want an exposure board I open every morning that answers one question: which of our sites, suppliers and shipping lanes are sitting in trouble right now. Build it on GDELT for the news signal, Airtable for our own register of what we depend on, and Slack for escalation. This is a board I read and act from, not a scheduled digest, so everything happens when I open it or click something.

The register is the spine of the app. On load, read our facility and supplier register from Airtable with List Records. Each row has a name, city, country, tier (tier 1 or tier 2), category (for example manufacturing, warehouse, port, carrier, component supplier) and an owner. Let me pick the base and table during setup using List Bases and Get Base Schema so I can map my real field names onto those roles instead of renaming my columns. Cache the register in app state for the session and give me a refresh control.

The main screen is a world map. Call the GDELT Geographic News Map (GEO 2.0) operation with a single query string that ORs together my risk themes, and render the returned GeoJSON as the coverage layer, sized or shaded by mention count. On top of that layer, pin every location from my Airtable register with a marker that reads clearly against the coverage layer and shows the site name, tier and category on hover. The point of the map is instant visual proximity: I want to see where coverage is clustering and whether one of our pins is sitting inside that cluster. The GEO API only covers the last seven days, so that window is fixed. Label the map explicitly, something like 'News coverage, last 7 days' right on the panel, so nobody reads it as a longer trend.

Beside the map, show a ranked side list of my own locations, scored by how noisy their country and city are this week. Compute the score from the same GEO response: count mentions whose location name matches the record's city, count mentions falling inside the record's country, and weight city matches heavier than country matches. Show both raw counts next to the score so the number is auditable rather than magic. Sorting rule that matters: tier 1 always sorts above tier 2, even when a tier 1 site is quieter than a noisy tier 2 one. Coverage volume only orders locations within a tier. Show tier as a visible badge so the grouping is obvious, and let me filter the list by category and by country.

Clicking a location opens a drill-down panel for that place. It has three things. First, the actual stories driving the noise: call Search News Articles (DOC 2.0) with a query that combines my risk themes with location operators for that record, using locationcc: for the country and the city name as a quoted phrase, and list the headlines with source, date, tone and a link out. Second, a coverage volume trend for that place from Article Volume Timeline (DOC 2.0). Third, a sentiment trend from Article Tone Timeline (DOC 2.0). Both timelines run on the DOC rolling three month window, which is the whole reason they are useful here: the map tells me something is happening, the trends tell me whether it is a one day blip or a building situation. Label the timeline window too so the difference from the map's seven days is never confusing.

Two actions live on every location, both in the drill-down and on the side list row.

The first is 'Assess this site'. It kicks off a background agent for that record. The agent reads the underlying coverage for that location and theme set (its own Search News Articles calls plus the volume and tone timelines), then writes a short exposure assessment in three parts: what happened, who or what it affects on our side given the site's category and tier, and what to watch over the next week. Keep it tight, a few short paragraphs, and make it cite the specific stories it drew from. When it finishes, log the assessment back against that record in Airtable so the history lives next to the site: either Update Record on the register row with the assessment text and an assessed date, or Create Records in a linked incidents table with the site name, date, theme, assessment and source links, whichever the user configured during setup. Prefer the incidents table when it exists so assessments accumulate as dated rows rather than overwriting each other. The app should show the run in progress on the card, then show the finished assessment inline along with any earlier assessments for that site.

The second is 'Escalate'. It takes the most recent assessment for that location, picks the top three source links from the coverage behind it, and posts them into our operations channel with the Slack Send a Message operation. Let me choose the channel during setup using List Channels. Format the message properly for Slack: site name, tier and category in the header, the assessment body, then the three links. Tag the record owner from the register in that message, reading the owner's Slack handle or member ID from the owner field on the Airtable row and rendering it as a real mention when it is a member ID. If the owner field only holds a name or email, fall back to including it as plain text rather than posting a broken mention. Stamp the escalation back onto the Airtable record too, with a timestamp and who escalated, so the board shows what has already been raised and I do not escalate the same thing twice.

Risk themes have to be editable, not hardcoded. Ship with protests, strikes, port closures, severe weather, sanctions, conflict and power outages, and give me a settings panel where I can add, remove or reword them. The theme list drives the query string for the map, the drill-down article search and both timelines, so changing it should refresh everything consistently. Persist the theme list, the Airtable base and table mapping, the incidents table choice and the Slack channel so the board comes back configured the way I left it.

Practical notes on GDELT. It is free and needs no credential, so nothing to connect there. Everything goes through one query string with operators inside it rather than separate parameters: locationcc: for country, locationadm1: for state or province, theme: for GDELT themes, and sourcelang: or sourcecountry: if I want to narrow the press. Country names on my register need mapping to the two letter codes locationcc: expects, so keep a lookup and fall back to searching the country name as a quoted phrase when a code is missing. Always request JSON or GeoJSON explicitly, keep requests serial rather than parallel, back off on rate limiting, and cache responses for a few minutes since the underlying data only refreshes every fifteen minutes. Validation problems come back with a normal success status and an error body, so read the body before trusting a response.

Keep the framing throughout on opening the board and checking exposure. Dense but legible: the map should be the largest thing on the screen, the ranked list should be readable at a glance, and I should be able to go from opening the app to escalating a real situation in under a minute.

What does this prompt do?

  • Reads your facility and supplier register straight out of Airtable and pins every location on a world map of news coverage from the last seven days
  • Ranks your locations by how noisy their city and country are this week, with tier one suppliers held above tier two even when they are quieter
  • Opens a drill-down on any location with the actual stories driving the noise, plus a coverage volume trend and a sentiment trend so you can tell a one day blip from a building situation
  • Gives you two buttons per location: have an assistant write a short exposure assessment back into Airtable, or escalate it to your operations channel in Slack with the top three source links and the record owner tagged

What do I need to use this?

  • An Airtable base holding your facility and supplier register with name, city, country, tier, category and owner
  • A Slack workspace and the operations channel you escalate into
  • Nothing to sign up for on the news side, the worldwide coverage data is a free public source with no login
  • Optional but recommended: each owner's Slack handle or member ID stored on the register row, so escalations tag the right person automatically

How can I customize it?

  • Edit the risk themes you watch at any time, starting from protests, strikes, port closures, severe weather, sanctions, conflict and power outages
  • Point it at a different table, or add an incidents table so every assessment is filed as its own dated row next to the site
  • Change the escalation channel, the number of source links included, or the sort rule if you group by region or category rather than supplier tier

FAQs

Why does the map only cover the last seven days?
The worldwide location data behind the map keeps a rolling seven day window, so the board is labelled that way on purpose rather than pretending to show more. The per location trend charts in the drill-down reach back about three months, which is what lets you see whether coverage is building or fading.
Do I need an account or a subscription for the news data?
No. The worldwide news coverage comes from a free public source with no login and no billing. The only things you connect are your Airtable base and your Slack workspace.
Does it post to Slack on its own?
No. Nothing reaches your operations channel unless somebody opens a location and clicks Escalate. The board is something you read, and escalation is a deliberate action.
How does it decide a story is relevant to one of my sites?
It matches coverage against the city and country on each register row, filtered to the risk themes you chose. That is a signal that news is clustering near something you depend on, not proof that you are affected, which is exactly why the assessment step exists before you escalate.
What happens to the assessments after they are written?
Each one is written back into Airtable against that site or supplier, either onto the record itself or as a dated row in an incidents table. The history lives beside the register, so next month you can see whether a location has been flagged before.
Can tier two suppliers ever outrank tier one on the list?
Not in the default sort. Tier one always sits above tier two, and coverage volume only orders locations within a tier. You can change that rule if you would rather sort purely by noise.

Related templates

Partner tier review board for quarterly promotion calls

Work every partner tier decision from one board, with the revenue and commission numbers, clear promotion thresholds, and AI review briefs.

Introw
HubSpot
Slack
App
Reconcile partner commissions between HubSpot and Introw

Open one board at month end to find every closed deal missing a commission, every commission with no deal behind it, and every amount that does not add up.

Introw
HubSpot
Slack
App
One control room for every Instantly sending mailbox

See warmup status, daily send volume, and bounce risk for every sending account in one grid, with the riskiest mailboxes floating to the top.

Instantly
Slack
App
Partner payout approval queue with Xero bill handoff

Review Introw partner payouts line by line, approve them from one board, raise the matching bill in Xero, and post every approval to Slack.

Introw
Xero
Slack
App
Run your nutrition clients' weekly meal plans from one console

See who is due, build a week of dinners on demand, swap anything you do not like, then send the recipe and grocery links yourself.

Instacart
Airtable
Gmail
App
Instagram UGC rights tracker and repost approval board

See every customer photo that tags your brand, ask for permission in one click, and repost only once a yes is on the record.

Instagram
Airtable
Slack Bot
App

Stop hearing about disruption from your supplier first.

Open one board each morning and see exactly where the news is clustering around the sites, suppliers and lanes you depend on.