Challenge
Before every tender, the team manually checked who else might bid, what prices they had submitted before and how often they had won. After the tender, the knowledge was kept nowhere, so the next one started from zero and the price was set by feel.
Tools available on the market help find tenders and write bids, but they do not analyse competitors or their pricing strategy. That was exactly what was missing.
Approach
Instead of a subscription to a ready-made service, we built the tool on free public sources: the Public Procurement Bulletin, KRS, the REGON register and the VAT taxpayers White List. The starting point is the company, not the notice.
The statistical layer came first and works on hard data. The language layer, which describes findings in plain text, is added on top of it in the next stage, so that the model comments on the numbers instead of inventing them.
Implementation
The backend synchronises notices daily and hourly, and enriches company profiles with registry data: management board, shareholders, capital and industry. The historical import runs as a stream, page by page, because loading hundreds of thousands of records at once overflowed memory.
The analytics modules calculate the probability of winning, the optimal price range and anomalies, for example companies that always win with one contracting authority or abnormally low bids. The interface has 17 views, including a graph of personal connections, a map, company comparison and alerts for watched competitors.
Results
The database holds 537k tenders and 315k bids linked to specific companies. Bid statistics, meaning the number of bids and the minimum, maximum and winning prices, have been calculated for 215k proceedings.
A competitor profile that used to require searching several registers is available in one view. The next stages are importing the years 2021-2024 and the AI descriptive layer.











