Yashdeep Singh

Case study, AI agent for a Berlin water-tech startup

Tender agent

Every morning it reads Germany's public procurement data and emails only the new tenders that fit, with deadline and link.

Role
Built it end to end
Stack
Python, GitHub Actions, eForms data
Runs
Every morning

The problem

Finding tenders meant checking platforms by hand or paying 50 to 200 € a month for alerts.

How I built it

FetchDownload the day's notices from the public procurement data service
FilterMatch keywords like groundwater or hydrogeology and water-sector CPV codes
EnrichPull the deadline and document link from each notice's eForms data
CleanDrop tenders already sent and deadlines that have passed
SendEmail a short HTML digest and save what was sent

Testing and what I fixed

Problem

Results without a link.

Fix

Fallback chain. Every result has a link now.

Problem

Missing deadlines.

Fix

Read them from the original eForms record.

Problem

A town fountain matched "well renovation".

Fix

Keywords plus sector codes.

Impact

0 €

Running cost.

What I would do next

Commercial platforms, and a thumbs up or down in every email.