The public-tender watcher: stop hearing about the contract after it closed
One morning email with the public contracts you could actually bid on
Version history
Public buyers publish roughly 700,000 notices a year in the EU alone, worth around €2 trillion. About 250,000 of those are contracts you can actually bid on. The data is free and public. The reason small firms miss it is not access — it is that nobody has twenty minutes a day to read a procurement portal.
The problem
A painting firm, a small IT shop, a translation agency, an engineering consultant: all of them are eligible for public work, and most of them hear about a tender from a colleague two weeks after it closed. The official channels are open — TED (Tenders Electronic Daily) for the EU, SAM.gov for the US federal market — but both are firehoses built for procurement professionals, not for someone running a business between two site visits. The market's answer is a subscription: tender alert services run from about $19-49/month at the entry end (GovConToday, Jorpex) to €300/month (Tendium), £200/month (TenderLake), £500+/month (Stotles) and £1,000+/year (Tracker Intelligence), with per-seat platforms landing above £5,400/year for a three-person team. What you are paying for is a filter. The underlying data is free: TED's Search API is public and needs no key at all, and SAM.gov issues API keys to any registered account. This blueprint builds the filter yourself, once, and keeps it.
The architecture
free, no key free key RSS / open data
└─────────────────┴──────────────────┘
▼ 06:30 daily
[ n8n (self-hosted) — the watcher ]
├─ hard filter: your CPV / NAICS codes, country, region, value range
├─ dedupe on notice ID (corrigenda republish the same job)
└─ shortlist out
▼
[ Ollama (local model) — soft scoring ]
│ reads title + scope against your one-page capability profile
│ returns a 0-10 fit score and one plain line: what they want
▼
[ One email, sorted by deadline ] Worth a look · Maybe · Not for you
The model ranks and explains. It never deletes. Rejects stay visible.
Two filters, in this order, and the order is the design decision. The hard filter is deterministic — codes, country, value, deadline — and throws away 95% of the volume for free. Only what survives goes to the model, so a small local model is enough and your daily compute stays near zero. Run it the other way around and you are paying an LLM to read 2,000 irrelevant notices a day.
Tool choices — and why
TED Search API v3 is the EU source, and it is genuinely open: POST /v3/notices/search, no authentication, no account, no rate-limit headers observed in the wild. The EU's own developer docs state it plainly: "The Search API does not require a key." You can build the query on the TED website's expert search and paste the same expression into the API. Third-party resellers exist that charge roughly $1 per 1,000 records for this exact endpoint. There is no reason to pay it.
SAM.gov Contract Opportunities API is the US source. A free SAM.gov account gets you an API key immediately at 10 requests/day — enough for one digest run, not enough for a chatty workflow. Completing the entity registration (which you need anyway before you can be awarded anything) raises it to 1,000 requests/day. Context for whether it is worth the paperwork: the US federal government awards over $700 billion a year, and in FY2023 $163.4 billion of prime contract dollars — 28.4% — went to small businesses, above the statutory 23% goal.
n8n (fair-code Sustainable Use License, free for internal business use, 197.8k stars, pushed 24/07/2026) is the watcher itself. Scheduling, HTTP calls, filtering, deduplication and email in one canvas that a non-programmer can still read six months later. The dedupe matters more than it sounds: n8n's Remove Duplicates node has a "Remove Items Processed in Previous Executions" mode with "Value Is New", which remembers notice IDs across runs — that is what stops the same tender arriving three mornings in a row.
Ollama (MIT, 176.8k stars, pushed 24/07/2026) runs the scoring model locally. An 8B-class model is sufficient — this is a relevance judgement plus one sentence of summary, not a legal analysis. The reason to keep it local is not the notice text, which is public. It is the other half of the prompt: your capability profile, your certifications, your travel radius, the contract size you can carry. That is your commercial position, and it does not need to be sitting in a vendor's logs.
Monthly cost. Software: €0, all of it. Hosting: €5-12/month for a small VPS if the scoring model runs on an office machine that is switched on in the morning. €15-25/month if you want everything on one box with enough RAM for an 8B model. Drop the model entirely and score on codes plus keywords, and you are back to €5. Compare against €300/month for the mid-market alternative and the payback is the first month, before you have won anything.
Setup outline
1. Write the capability profile first, on one page: what you actually do, which CPV codes (EU) or NAICS codes (US) match it, how far you will travel, the smallest and largest contract you can carry, which certifications you hold. This page is the product. Everything below it is plumbing.
2. Pick 3-6 codes, not forty. CPV is hierarchical — searching a parent code such as 45000000 (construction works) also matches its subcategories — so a wide net fills your inbox with work you cannot do, and you stop reading the email in week two.
3. Test the query on the TED website in expert mode before you build anything. Confirm you get 5-30 hits a week, not 500.
4. Deploy n8n behind HTTPS. One workflow, schedule trigger at 06:30 so the digest is waiting with the coffee.
5. Build the EU branch: HTTP Request node, POST to the TED search endpoint with your expert query. Dates go in as YYYYMMDD, and buyer-country takes three-letter codes (BEL, DEU, NLD).
6. Build the US branch if the US market is relevant: SAM.gov key in the query string, filter on NAICS, set-aside type and posted date.
7. Dedupe on the notice ID with Remove Duplicates → "Value Is New". Never on the title.
8. Score locally: send title, scope and your profile to Ollama, ask for a 0-10 and one sentence. Group the mail into "Worth a look" (7+), "Maybe" (4-6) and "Not for you" (below 4, listed with the score, one line each).
9. Sort the whole mail by deadline, closest first, with days remaining next to each entry. Run it two weeks in parallel with a manual portal check before you trust it.
Pitfalls — the real ones
TED only carries above-threshold contracts, and that may exclude everything you do. From 01/01/2026 the thresholds (Commission Delegated Regulation (EU) 2025/2152) are €5,404,000 for works, €216,000 for supplies and services from sub-central authorities such as municipalities and hospitals, €140,000 from central government, €432,000 in the utilities sectors, €750,000 for social and other specific services. Below those figures a contract does not go to TED at all. Below-threshold work is roughly 60-70% of all public contracts by count, and it lives on national portals only. If your typical job is a €40,000 renovation, TED will never show it to you — add your national source (in the Netherlands, TenderNed publishes a free RSS feed and an XML API you request credentials for; in France, BOAMP carries everything above €40,000 excl. VAT) or the watcher is decorative.
Buyers classify badly. CPV codes are chosen by the contracting authority, sometimes carelessly, and a job you would obviously want can sit under a code you never search. Run one keyword branch alongside the code branch and compare what each finds for a month.
The 10-requests-a-day SAM.gov limit is easy to burn. One paginated run with a wide filter eats it before breakfast. Cache, page conservatively, and get the entity registration done.
The first query returns zero, and the format is why. Expert-query dates are YYYYMMDD, not ISO-8601, and buyer-country is three letters, not two. That single detail accounts for most failed first attempts.
Never let the model filter silently. It scores; you decide. Keep the rejected notices in the mail, with their scores, for at least the first month. If you cannot see what it threw away, you cannot tell whether it is any good — and the one it drops will be the one that mattered.
Deadline is the only sort order that matters. A tender you find with six working days left and no documents prepared is not an opportunity, it is a distraction. Flag anything under ten working days as unrealistic unless the file is ready.
Finding is not winning. This blueprint solves visibility. The bid still needs references, financial statements, certificates and, in the EU, an ESPD. A full digest is not a pipeline. Measure the number of bids submitted, not the number of notices received.
Verified repos
n8n — Sustainable Use License (free self-hosted internal use), 197.8k stars, active (24/07/2026)
Ollama — MIT, 176.8k stars, active (24/07/2026)
Data sources (free, official): TED Search API v3 documentation · TED · SAM.gov Contract Opportunities · EU thresholds 2026-2027 (European Commission)
Get the next blueprint as it publishes — free, practical, verified tooling only.
Subscribe · Want this audited or extended for your business? DM @RXed_EU
Get this blueprint tailored to your business — free
Tell us what you run and where. We research your sector's specifics — rules, tools, customer habits — and send you a version of this blueprint rebuilt for your situation, usually within 24 hours.