Every morning it pulls all new public tenders from official EU sources,
downloads each PDF, and extracts structured data automatically. Anything
above €100k lands in Slack within minutes.
The output looks like this:
Title: Website Redesign
Authority: Institute of Science and Technology Austria
Region: Lower Austria
Value: €350,000
Deadline: 04/05/2026
CPV: 72413000
Four gotchas I hit building this that might save you time:
The API returns a notices array — you need a Split Out node before
the Loop, otherwise you only ever process the first itemAdd 2s Wait nodes before the PDF download and before the extraction
node to avoid 429 rate limit errors from both servicesUse $now.toFormat('yyyyMMdd') for the date filter — hardcoding a date
means you get identical results every dayContract value is null for many documents — use
Number($json.data.estimated_contract_value) || 0 in the IF node
with "Convert types where required" enabled
The data source and notification channel are both swappable — works
with any procurement API on the input side and any messaging platform
on the output side.
Template JSON in the first comment. Happy to answer questions.
I'm now adding a Q&A Bot and Vector DB to the workflow.
Ideally, the system will automatically apply for pre-filtered tenders.
Top comments (0)