Log meaningful analyst rating shifts to your Notion research log
Every weekday after the close we check your watchlist for shifts in analyst sentiment, write up each one in Notion, and email you only when something moved.
Every weekday at 6:00pm Eastern, after the US market closes, check my stock watchlist for meaningful shifts in analyst sentiment, log each one to my Notion research database, and email me a roundup only when something material actually changed. Run this on a cron schedule, Monday through Friday. My watchlist is: AAPL, MSFT, NVDA, AMZN, GOOGL (replace these with the tickers you actually follow).
For each ticker on the watchlist, pull Finnhub's Recommendation Trends. That operation returns one row per month with strongBuy, buy, hold, sell, and strongSell analyst counts. Compare the most recent month against the month before it, which is a straight read of the two newest rows, so there is no state to store between runs and nothing to remember from yesterday.
Then try to enrich each ticker with Finnhub's Price Target for the consensus target, and Finnhub's Upgrade/Downgrade for individual analyst rating actions. Treat both as optional enrichment. Some Finnhub plans do not include them and will return HTTP 403. When that happens, skip that enrichment for the ticker, note internally that the data was unavailable, and carry on. The run must never fail because of a 403 on these two. Recommendation Trends is the signal this workflow genuinely depends on, and it is available on the free tier.
Decide for yourself what is actually material instead of logging every wiggle. One analyst nudging a price target by 2 percent is noise and should be ignored. Treat the following as material: a net shift of two or more ratings between the buy, hold, and sell buckets month over month; a fresh downgrade that has appeared since the previous run; or a consensus price target that has moved more than 10 percent. Use judgement on borderline cases. When nothing clears the bar for a ticker, write nothing for that ticker.
For each material change, use Notion's Create a Page to add one entry to my research log database. Create one page per material change rather than one page per run. Capture the ticker, the date, exactly what changed with the before and after numbers spelled out (for example, buy went from 12 to 9 while hold went from 5 to 8), and a two sentence read on why it matters for the position.
Only if at least one material change was found across the whole watchlist, use Gmail's Send a Message to send me a roundup listing each material change with a one line summary, along with links to the Notion pages you created. If nothing was material, send no email at all. A quiet day should produce an empty inbox, not a message telling me nothing happened.
Finnhub's free tier allows 60 calls per minute, so pace the requests if my watchlist is long. If a ticker returns no recommendation data, or only a single month of history with nothing to compare against, skip it rather than guessing at a trend.
Example output
Additional information
What does this prompt do?
- Checks every ticker on your watchlist after the US market closes and compares this month's analyst buy, hold, and sell counts against last month's.
- Decides what is genuinely material, so a single analyst nudging a target by a couple of percent is ignored while a real swing in ratings, a fresh downgrade, or a big move in the average price target gets flagged.
- Writes one entry per material change into your Notion research log with the ticker, the date, exactly what changed, and a short read on why it matters.
- Emails you a roundup only on days when something actually moved, so quiet days stay quiet.
What do I need to use this?
- A Finnhub account. The free plan covers the analyst rating data this workflow runs on.
- A Notion workspace with a research log database for the entries to land in.
- A Gmail account to receive the roundup.
- The list of tickers you want watched.
How can I customize it?
- Change the watchlist to whatever tickers you follow, and shift the schedule if you track a market that closes at a different time.
- Raise or lower the bar for what counts as material, for example requiring a bigger swing in ratings or a larger move in the average price target.
- Send the roundup to a different address, or point the entries at a different Notion database.
FAQs
Does this work on Finnhub's free plan?
Will it email me every single day?
What actually counts as a material change?
How many stocks can I put on the watchlist?
Does it work for stocks listed outside the US?
Related templates
Every weekday, find every unpaid JobNimbus invoice, email each customer one reminder that gets firmer as it ages, and post a receivables summary to Slack.
Every evening we find the jobs you just finished, email each customer a personal review request, and log it on the job so nothing slips.
Every weekday morning, review your unpaid ERPNext invoices, email each customer a reminder that gets firmer as the debt ages, and brief finance in Slack.
Every Monday, we find your new engineering hires, write each one a guide to your actual tech stack from current documentation, and send it to them in Slack.
Every weekday morning each student gets one short, friendly email listing everything they still owe across all of their courses.
Every intake form response becomes a Blackboard account, a course enrollment, a welcome email, and a logged row in your intake spreadsheet.
Stop finding out about downgrades a week late.
Let this run after every close and build a permanent record of what analysts changed their minds about, and when.