Pre-market watchlist briefing in Slack

Every US trading day at 8:30am ET, get a written watchlist briefing in Slack covering biggest movers, 52-week extremes, and valuation flags before the bell.

Agentic Task
YChartsGoogle SheetsSlackFinancePersonal ProductivityDaily DigestsAI ReportsResearch & Monitoring

Build me a pre-market watchlist briefing as an agent workflow. It should run on a cron every US trading weekday (Monday through Friday) at 8:30am ET.

Step 1. Read my watchlist tickers from Google Sheets using the Get Values operation. The tickers live in a single column of a sheet I will configure on the workflow (spreadsheet ID, sheet/tab name, and A1 range). Parse the column into a clean list of ticker strings and trim whitespace. Skip blank rows.

Step 2. For each ticker, call YCharts using the Get Company Data Points operation to pull: current price, prior close, 1-day percent change, P/E ratio, market cap, 52-week high, and 52-week low. Batch the symbols into a single YCharts call where possible (YCharts allows up to 100 symbols per request). If YCharts returns an error for a specific ticker (per-symbol meta.status of "error" or a missing result), skip that ticker and continue. Do not fail the whole run because one symbol is bad. Keep a short list of the skipped tickers so you can mention them at the end of the briefing.

Step 3. Write a short narrative briefing (roughly 150 to 300 words). It should:

  • Lead with the biggest movers (top gainers and top decliners by 1-day percent change). Name the tickers, the price, and the percent move.

  • Call out any tickers trading near a 52-week extreme (within roughly 3 percent of the 52-week high or low). Say which extreme and how close.

  • Flag any unusual valuation signals (for example, a P/E that looks unusually high or low for the watchlist, or a notable market cap shift). Keep this short and qualitative.

  • End with a one-line note listing any tickers that were skipped because YCharts did not return data, if there were any.

Step 4. Post the briefing to a Slack channel using the Send a Message operation. The target channel is a workflow setting. Format the message using Slack mrkdwn (not standard Markdown), which means:

  • Use *single asterisks* for bold around ticker symbols, section headings, and the most important numbers.

  • Use _underscores_ for italics sparingly.

  • Lead with a date-stamped headline like *Pre-market watchlist — Mon May 29*.

  • Use short sections (Movers, Near 52-week extremes, Valuation flags) so the post is scannable on mobile.

  • Prices should be formatted with a dollar sign and two decimals. Percent moves should include a sign and a percent symbol (for example, +2.4% or -1.1%). Market cap should be human-readable (for example, $2.1T or $48.6B).

Error handling and run safety:

  • If the Google Sheet read fails or returns zero tickers, post a one-line Slack message saying the watchlist could not be loaded and stop. Do not silently no-op.

  • If YCharts is fully down (all symbols error or the call itself fails), post a one-line Slack message saying market data is unavailable and stop.

  • Otherwise always post the briefing, even if some tickers were skipped.

Configurable settings I want exposed on the workflow: the Google Sheet (spreadsheet ID, sheet/tab name, A1 range for the ticker column), the Slack channel to post to, and the schedule (default 8:30am ET, Monday through Friday). Keep the agent instructions clear so I can later edit the tone of the briefing or what counts as a notable mover.

Additional information

What does this prompt do?
  • Pulls your watchlist tickers from a Google Sheet and looks up the latest price and fundamentals for each one before the US market opens.
  • Writes a short, scannable narrative briefing that calls out the biggest overnight movers, tickers trading near 52-week highs or lows, and unusual valuation signals.
  • Posts the briefing to a Slack channel of your choice every weekday at 8:30am ET, formatted so tickers, prices, and percent moves are easy to skim on mobile.
  • Skips any ticker that fails to return data instead of breaking the whole run, so a single bad symbol never costs you the briefing.
What do I need to use this?
  • A Google Sheet with the ticker symbols you want covered, one per row.
  • A YCharts API subscription so the workflow can look up prices and fundamentals.
  • A Slack workspace and a channel where the briefing should be posted.
How can I customize it?
  • Change the schedule. Move the post time earlier or later, or run it twice a day (pre-market and post-close).
  • Edit the watchlist any time by adding or removing tickers in the Google Sheet. No code changes needed.
  • Tweak what the briefing highlights. Ask for sector groupings, dividend yield callouts, or a different definition of "near 52-week high."
  • Swap the Slack channel, route different watchlists to different channels, or DM the briefing to yourself instead.

Frequently asked questions

Do I need a YCharts subscription to use this?
Yes. YCharts is a paid market data provider, and you need an active API subscription to pull live prices and fundamentals. If you do not have one yet, contact YCharts at sales@ycharts.com to set up access.
How many tickers can I put on my watchlist?
Dozens of tickers work fine in a single briefing. If your list is very long, the agent batches the lookups efficiently. For most desks, 20 to 50 tickers strikes the right balance between coverage and a briefing you can actually read in a minute.
What happens if YCharts cannot return data for one of my tickers?
The bad ticker is skipped and the rest of the watchlist still runs. The briefing posts on time, and the agent can optionally note which symbols were missing so you can fix typos in the sheet.
Can I change which Slack channel the briefing posts to?
Yes. The channel is a setting on the workflow. Change it any time, or duplicate the workflow to send different watchlists to different channels (for example, equities to one channel, ETFs to another).
Will this run on weekends and US market holidays?
The schedule fires Monday through Friday, so weekends are already excluded. You can extend the workflow to also skip US market holidays if you want a fully clean calendar.

Walk into the open already briefed.

Connect Google Sheets, YCharts, and Slack once, and Geni posts your watchlist briefing every trading day at 8:30am ET.