Quick overview
This workflow runs every morning at 7:00 to query SpecStream for open federal grants matching your field, appends newly found grants to a Google Sheets log, and posts a single Slack message listing the new opportunities with links, funders, and deadlines.
How it works
- Runs every day at 7:00 on a schedule.
- Reads your search parameters and loads the existing grant log from Google Sheets to determine whether to start a new SpecStream search or extend the most recent results list.
- On the first run, SpecStream reads the search request; on later runs, it reopens the previous SpecStream list so only new grants come back.
- Requests a SpecStream price quote for the run and stops with an error if the maximum cost exceeds your configured spending limit.
- Approves the quote so SpecStream starts the run, then checks every 30 seconds until the run finishes.
- Fetches all result rows from SpecStream, normalizes them into one item per grant (including the official source link and list ID), and appends them to Google Sheets.
- Formats a single Slack message containing one bullet per new grant and posts it to your chosen Slack channel.
Setup
- Create a SpecStream API key and add it to an n8n HTTP Bearer Auth credential used by the SpecStream HTTP Request steps.
- Connect Google Sheets credentials and select the target spreadsheet and sheet for both reading and appending the grant log.
- Connect Slack credentials and choose the channel to post the daily grant digest to.
- Update the search text, result count, and maximum spend (in cents) in the search parameters to match your field and budget.
Requirements
- A SpecStream account and API key (specstream.ai, under Agents & API). New accounts get $10 of work free, no card.
- Google Sheets and Slack credentials in n8n. The workflow uses only core nodes, so it runs on n8n Cloud and self-hosted n8n.
Customization
- Change the request in Your grant search, for example "Open federal grants for rural broadband" or "Open federal grants that tribes can apply for". Use a new empty sheet for each field.
- Run it weekly instead of daily by changing the schedule trigger to Monday morning.
- Send the digest by email: replace Post to Slack with a Gmail or Outlook node and use the text field as the body.
Additional info
Each grant costs 10¢, and the price shows before anything runs. You pay only for new grants, so a morning with nothing new costs nothing. The default maximum is $2.50 a morning.