Case Studies / Grant Radar

Our own product · ETL

Funding calls from many sources,
one catalogue in 5 languages

Grant Radar is our grant monitoring service. A daily job collects calls from EU portals and funder sites, cleans them up and publishes searchable cards in English, Polish, Russian, Ukrainian and German.

ETL pipeline

From a funder page to a translated card

Each stage runs on its own and records what it did, so one broken source does not stop the rest.

Extract

A scheduler runs every morning at 06:00 Warsaw time. It reads the EU Funding & Tenders Portal API and source-specific adapters such as Interreg, Vinnova and EEA. A registry of about 300 EU sources decides which ones are due, and every run is logged.

Normalise and deduplicate

Titles, amounts, deadlines and eligible countries are brought to one model. A grant that arrives from two sources is stored once, and calls whose deadline has passed are marked closed.

Classify

Each call gets a type (research, innovation, culture, education, social, environment, health), a status and the funder's country, which drive filters and statistics.

Translate

A translation job sends new texts in batches to our local translation service and stores the result per language next to the original. The service runs on our own hardware, so grant texts are not sent to a cloud LLM.

Load and serve

Cards land in the database and appear in a dashboard with full-text search and filters by type, status, country, applicant type and amount. Grant pages are rendered on the server, so search engines can read them.

Language follows the reader

The grant text is shown in the interface language. There is no separate translate button: switching language switches the card.

Verified and planned

What runs today and what is still a plan

Running

Daily collection from the EU portal and adapters, deduplication, closing of expired calls, translation into 5 languages, public grant cards, search and filters behind login.

Not yet

Many registry sources are only probed until a dedicated adapter exists, and sources with anti-bot protection are skipped. Long descriptions and conditions are translated in a separate, slower pass.

FAQ

About this case

No. It is our own product, so we can describe how it works in detail. No client data or results are shown here.
English, Polish, Russian, Ukrainian and German. Adding a language means adding it to the interface and to the translation job.
Cost and control. Thousands of texts are translated every week, and a local service keeps them on our hardware.
Yes. Each source is an adapter with its own schedule and log, so new sources are added without changing the rest of the pipeline.

Need a monitoring pipeline like this?

Tell us which sources you follow and in which languages your team reads. We reply within one business day.