Skip to main content

Projects Featured

Vitellus

Procurement intelligence platform that scrapes the official EU tender database (TED), processes 10,000+ documents/day, and surfaces AI-ranked opportunities across all 27 EU countries.

TypeScriptBunSupabasePostgreSQLRedisDockerGoogle GeminiLangChainCheerio
View on GitHub

10k+/day

Tenders processed

27

EU countries covered

€2T

Annual market reached

← the part clients ask about first

The problem

European public procurement is a €2 trillion/year market — roughly 14% of EU GDP — but the data lives across 27 government portals in dozens of languages, published as semi-structured documents on TED (tenders.europa.eu). Business development teams either pay for expensive incumbent data vendors or spend hours each week manually searching, with no good way to filter or rank what’s relevant.

The approach

Production-grade backend that turns the TED firehose into an analyst-ready stream of qualified opportunities.

  • Continuous discovery. Scrapers monitor TED for new publications across all 27 EU member states, normalize multi-language documents into a unified schema, and deduplicate at ingest.
  • Queue-driven processing. Redis-backed job queue handles bursty volume (10,000+ tenders/day) with retries, backoff, and per-source rate limiting. Bun runtime gives ~3× throughput vs. Node on the same hardware.
  • AI ranking layer. Google Gemini evaluates each tender against configurable criteria — sector fit, budget bands, SME suitability, risk flags — and outputs GO / NO-GO / CONSIDER with rationale.
  • Postgres + Supabase. Schema designed for the EU procurement domain (CPV codes, tender lifecycles, buyer relationships) with realtime subscriptions for downstream apps.
  • API-first. RESTful surface ready to power a web app, a CRM integration, or alerting workflows.

The outcome

  • 10,000+ tenders/day processed end-to-end
  • 27 EU countries covered from a single backend, multi-language by default
  • 85% reduction in manual procurement research time
  • 40% improvement in qualified lead identification vs. keyword search
  • Ready-to-deploy: complete backend that drops into a SaaS, agency, or in-house BD team

My role

Full architecture and implementation — scraping pipelines, queue infrastructure, AI prompting, database design, API surface, deployment. Open source so teams can self-host or fork it as the backend for their own procurement product.

Have a similar problem?

I build automation and AI pipelines like this for B2B teams. Most projects start with a 30-minute diagnostic call.

Related projects