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.

Agentic Task
FinnhubNotionGmailFinancePersonal ProductivityResearch & MonitoringAI ReportsNotifications & Alerts
PromptCreate

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

NVDA, 4 August 2026 What changed: Buy ratings fell from 42 to 38 while hold rose from 6 to 10, a net shift of four ratings away from buy. The average price target dropped from $185 to $161, a move of roughly 13 percent. Why it matters: This is the first meaningful cooling in sentiment since the spring, and it shows up in the ratings themselves rather than in one outlier note. Worth checking whether the target cuts cluster around the same demand concern before making any change to position size.

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?
Yes. The analyst rating trends this workflow depends on are included on the free plan. Consensus price targets and individual upgrade and downgrade notices are extras that some plans do not include, so if yours does not, the workflow simply leaves that detail out and keeps running rather than failing.
Will it email me every single day?
No, and that is the point. You only get an email when at least one ticker had a material change. On quiet days it writes nothing and sends nothing.
What actually counts as a material change?
Out of the box: a net swing of two or more analyst ratings between the buy, hold, and sell buckets, a fresh downgrade, or an average price target that moved more than 10 percent. One analyst tweaking a target slightly is treated as noise and ignored.
How many stocks can I put on the watchlist?
A few dozen tickers is comfortable. The workflow paces its requests so a longer watchlist stays inside the free plan's limits.
Does it work for stocks listed outside the US?
It can, as long as the ticker is covered by analyst rating data. You will probably want to move the schedule to match that market's closing time.

Related templates

Chase past-due JobNimbus invoices with escalating emails

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.

JobNimbus
Gmail
Slack Bot
Agentic Task
Turn every completed roofing job into a review request

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.

JobNimbus
Gmail
Agentic Task
Chase overdue ERPNext invoices with escalating reminders

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.

ERPNext
Gmail
Slack
Agentic Task
Personalized onboarding guides for new engineers in Notion

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.

Context7
BambooHR
Notion
+1
Agentic Task
Weekday Blackboard reminders for work due in the next 48 hours

Every weekday morning each student gets one short, friendly email listing everything they still owe across all of their courses.

Blackboard
Gmail
Google Sheets
Agentic Task
Enroll new student intake form responses in Blackboard

Every intake form response becomes a Blackboard account, a course enrollment, a welcome email, and a logged row in your intake spreadsheet.

Blackboard
Google Forms
Gmail
+1
Deterministic Code

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.