Weekly OKR nudge: DM stale key result owners from Coda

Every Monday at 9am, scan your Coda OKR tracker for stale or at-risk key results and ping each owner in Slack, plus post a leadership digest.

Agentic Task
CodaSlack BotOperationsProductNotifications & AlertsDaily Digests
PromptCreate

Every Monday at 9am in my timezone, run an agent that nudges stale OKR owners in Slack so my program managers stop manually chasing key result updates.

Start by reading my Coda OKR tracker table with Coda's List Table Rows. Each row is one key result and has at minimum an Owner column (name or work email), a Status column with values like On Track, At Risk, and Off Track, a Last Updated date column, and a link back to the Coda row. Pull every row and identify the ones that count as stale: either Status equals At Risk (or Off Track), or Last Updated is more than 14 days ago. Skip any key result that was already refreshed this calendar week, even if it would otherwise qualify.

Group the stale key results by owner. For each owner, resolve their Slack identity using Slack Bot. Call List Users to pull the workspace directory and match on the owner's name or work email stored in Coda; use Get User Info if you need the full profile for a confident match. If you cannot confidently match an owner to a Slack profile, do not DM anyone and instead note them as unmatched for the leadership digest.

For every matched owner, use Open a Conversation to get the DM channel, then call Send a Message to deliver one grouped nudge. The DM should greet the person by first name, list each of their stale key results (KR name, current status, days since last update, and a direct link back to the Coda row), and ask for a fresh update by end of day Tuesday. Vary the tone gently when someone has only one mildly stale KR versus when someone has several at-risk ones, but always stay friendly and concise. Send only one DM per owner per run, even if they own many stale key results.

After all per-owner DMs are sent, post one summary digest to the #okrs Slack channel using Send a Message. Rank every stale key result by severity: at-risk and off-track KRs first (sorted by how long they have been flagged), then on-track KRs that have simply gone untouched the longest. Each line should show the KR name, owner, status, days since last update, and a link back to the Coda row. Open with a short header like 'Stale OKRs as of Monday DATE: N key results need attention from M owners' and call out any unmatched owners at the bottom so leadership can fix the Coda mapping.

When you set this up, ask me which Coda doc and table to read, which Slack channel should receive the leadership digest, my timezone, and whether I want the staleness window to be the default 14 days or something else. Confirm that the Slack bot has already been added to the digest channel before the first run.

Additional information

What does this prompt do?
  • Reads your Coda OKR tracker every Monday morning and finds key results that have not been updated in the last two weeks or are flagged at-risk.
  • Sends each owner one grouped Slack DM that names the KR, shows the last status, and links straight back to the Coda row.
  • Posts a single leadership digest to your OKRs channel that ranks every stale key result by severity, so program managers stop manually chasing.
  • Skips any key result that was already refreshed this week, so people only hear from the agent when there is real follow-up to do.
What do I need to use this?
  • A Coda account with your OKR tracker table set up (one row per key result, with columns for owner, status, and last updated).
  • A Slack workspace and a channel where leadership wants the weekly digest posted.
  • The owner's name or work email captured on each Coda row, so the agent can match it to a Slack profile.
  • A Slack bot added to the digest channel once at setup.
How can I customize it?
  • Change the schedule. Run it Friday afternoon, biweekly, or right before your weekly OKR review instead of Monday at 9am.
  • Adjust the staleness window. The default is 14 days, but you can shorten it during a critical quarter or extend it for slower-moving teams.
  • Pick a different digest channel, or turn the channel rollup off entirely and keep only the private DMs.
  • Edit the tone of the DM. Choose a gentle reminder, a firmer escalation for at-risk KRs, or a manager CC for repeat misses.

Frequently asked questions

What if an owner has no stale OKRs?
They will not be messaged. The agent only DMs people who have at least one key result that needs attention this week.
Will an owner get a separate DM for each stale key result?
No. The agent groups all of one person's stale key results into a single DM, so nobody gets pinged multiple times in a row.
How does it know which Slack user matches which Coda owner?
It looks up Slack profiles by the owner name or work email recorded in your Coda tracker. If a match cannot be found, the agent skips that owner and lists them at the bottom of the leadership digest so you can fix the mapping.
Can I use this with an OKR tracker that is not in Coda?
This prompt is wired for Coda. You can swap the source by reconnecting to another tracker like Airtable, Notion, or Google Sheets, and the rest of the flow stays the same.
Will it post to a Slack channel my bot is not in yet?
Add the bot to your OKRs channel once at setup, and it will post the weekly digest there from then on.

Stop chasing OKR updates by hand.

Connect Coda and Slack once, and Geni nudges every stale key result owner first thing Monday morning.