Weekly competitor intel digest from X to Slack

Every Monday at 8am ET, get a single Slack brief on what competitors posted on X last week, with launches, pricing, and hires pulled to the top.

Agentic Task
X (Twitter)Slack BotMarketingProductResearch & MonitoringAI ReportsDaily Digests

Build me an agent workflow that produces a weekly competitive intelligence digest from X (Twitter) and posts it into Slack.

Trigger: a cron that runs every Monday at 8:00am US Eastern Time.

Inputs the user should configure: (1) a list of competitor X handles to track, e.g. ["acmecorp", "rivalco", "upstartai"], and (2) the target Slack channel ID where the digest should be posted.

On each run, the agent should:

1) For each competitor handle, use the X (Twitter) "Get User by Username" operation to resolve the handle to a numeric user ID. Cache the IDs in memory for the duration of the run so it doesn't re-resolve handles.

2) For each resolved user ID, use the X (Twitter) "Get User Timeline" operation to pull every post that competitor published in the last seven days. Paginate via the cursor until the seven-day window is covered. Request tweet fields that include created_at, public_metrics, entities, and referenced_tweets so the agent can filter and link properly.

3) Filter the haul before synthesis. Drop retweets and quote-only reposts (anything where referenced_tweets includes a retweeted entry), drop replies (where the tweet is in_reply_to_user_id of someone else), and drop generic banter that does not match any signal category. Keep only original posts from the competitor.

4) Synthesize a single brief. The brief should be grouped by competitor, with each competitor as a section header. Inside each section, surface the highest-signal items first across these categories: product launches and shipped features, pricing or packaging changes, hiring announcements (especially exec hires), customer wins or named-logo case studies, partnership and integration news, and notable narrative or positioning shifts. If a competitor was quiet that week, list them as "quiet this week" rather than omitting them, so the reader knows they were checked.

5) Every callout must link back to the original post on X. Use the URL pattern https://x.com/<handle>/status/<tweet_id>.

6) Add a TL;DR section at the very top of the brief with three to five bullets covering the biggest moves across the whole competitive set.

7) Post the final brief into the configured Slack channel using the Slack Bot "Send a Message" operation. Format with Slack-compatible markdown: TL;DR at the top, then a section per competitor with a bold header, then bullets per highlight with the link to the source post.

Use the Slack Bot integration (xoxb- token) for posting, not the user OAuth Slack integration — this is automated workflow output, so the bot identity is the right fit.

Error handling: if a handle cannot be resolved, skip it and note it at the bottom of the brief under "could not fetch". If the X API returns 429, respect x-rate-limit-reset and retry. If a single competitor's timeline call fails, continue with the others and note the failure in the brief rather than aborting the whole run.

The goal is a digest a product marketer or founder can skim in two minutes on Monday morning and walk away knowing exactly what competitors shipped, hired, priced, and bragged about last week.

Additional information

What does this prompt do?
  • Watches a configurable list of competitor X accounts and pulls everything they posted in the last seven days.
  • Filters out retweets, replies, and generic banter so the brief stays signal-heavy.
  • Synthesizes a single weekly intel brief grouped by competitor, calling out product launches, pricing or packaging changes, hiring announcements, customer wins, partnerships, and narrative shifts.
  • Posts the brief into the Slack channel of your choice every Monday at 8am ET, with a TL;DR up top and links back to the original posts.
What do I need to use this?
  • An X (Twitter) account connected so the agent can read competitor profiles and recent posts.
  • A Slack workspace and a channel where the digest should land.
  • A short list of competitor handles you want to track.
How can I customize it?
  • Change the cadence or time of day. Twice a week, daily, or a different morning all work.
  • Edit the competitor handle list whenever your competitive set changes.
  • Tune what counts as high signal. Add categories like fundraising, exec moves, or open roles, or remove ones you do not care about.
  • Pick a different Slack channel, post to a private channel, or send to a DM.

Frequently asked questions

Can I add or remove competitors after it is set up?
Yes. The list of competitor handles is a setting you can edit any time. The next run uses whatever is in the list.
Will the digest include retweets and replies?
No. Retweets, replies, and generic chatter are filtered out so the brief stays focused on original posts that signal something real.
What if a competitor's account is private or has no posts that week?
Private accounts are skipped because the agent can only read public profiles. Competitors with nothing notable that week are listed as quiet so you know they were checked.
Can I run this more often than weekly?
Yes. You can switch the schedule to daily, twice a week, or any cadence. The same logic still groups and ranks the highlights.
Do the highlighted items link back to the original posts?
Yes. Every callout in the brief includes a link to the original X post so anyone in the channel can dig deeper.

Stop pasting tweets into a competitor doc every Friday.

Connect X and Slack once, and Geni delivers a clean weekly competitive intel brief every Monday at 8am ET.