Proposals answered within 2 business days
All case studies
IntegrationsRegulatory complianceAutomation

Automated system for statutory reporting of flat prices to dane.gov.pl

Client: Residential developer, two companies and three developmentsIndustry: Real estate15 September 2026
Results
days of backlog in price reporting
112 → 0
resources uploaded to the portal in a single session
409
errors in the validation of 645 archive files
0

Challenge

Developers must submit asking prices of flats to the dane.gov.pl portal every day, and neglecting this duty can lead to a charge of violating the collective interests of consumers. The client generated the files from its website, but generation only ran when the site had traffic, so no file was produced for 11 days.

The files also did not match the Ministry of Digital Affairs template: the KRS number contained a spreadsheet formula, the contact method was missing, parking spaces ended up in the wrong columns, and sold units remained in the data. The portal was missing 112 days in two series and 185 days in the third.

Approach

Audit first: we compared all 612 CSV files and 2 XML files with the act, the ministry template (58 columns), the guidelines and the official XSD schema. We fixed the generator at the source and rewrote the archive retroactively with the same rules, instead of patching files by hand.

The portal offers no write API, and uploading about 400 resources by hand was out of the question. So we wrote a browser-based automation that checks what is already on the portal and skips existing dates. We made a backup before every change, because the archive has to be preserved in full.

Implementation

The generator creates files twice a day from a system scheduler, before the time at which the portal collects them. A validator checks every file against the template and the act, and a control script compares the portal file with the local version byte by byte and makes sure the set of dates is complete and free of duplicates.

One thing could not be reconstructed retroactively: the sale dates that the system never recorded. Those units stayed in the history as they were published, and from the day of deployment the generator omits them correctly.

Results

In a single session we uploaded 409 resources in six parallel processes. Final check: 112 of 112, 112 of 112 and 185 of 185 days matching in the three series, with no gaps and no duplicates.

Validation of the whole archive, 645 files including the backfilled days, passed without errors. The XML file passes the official schema with no remarks. Files are now generated automatically every day, and the next step is registering automatic data collection by the portal.

How it is built

Generator
PHP in a WordPress theme: 58 columns according to the ministry's template, price history with effective dates, skipping of sold, commercial and unpriced units, and backfilling of missing days.
Scheduling
A system cron on the server twice a day instead of WP-Cron, which only fired on site traffic. Files are ready well ahead of the time the portal collects them.
Validation
A Python validator checks every file against the template and the statute, and an error stops further steps. The XML passes the official XSD schema, and MD5 checksums let the portal detect a changed file.
Portal automation
The portal has no write API, so uploads are done with Playwright. The script first fetches the list of existing dates and skips them, and parallel processes get disjoint date ranges.
Final check
A separate script compares the file downloaded from the portal with the local version byte by byte, and checks each series for a complete set of dates and no duplicates.
Deployment
A deployment script walks through the steps: check, backup, data, history, generation, schedule and verification. A function that could have deleted the archive was locked down.

Technologies

  • Node.js
  • Playwright
  • Python
  • PHP
  • WordPress
  • XML
  • XSD
  • dane.gov.pl
Case studies

More case studies

Real estate

AI sales assistant platform for property developers, powered by live inventory

A chat on the developer’s website answers questions about available flats and prices using live data. In a test of 106 scenarios, the number of answers containing invented facts fell to zero.

View case study
Education and personal development

AI coach on WhatsApp with participant memory and handover to humans

A thirty-day programme run as a WhatsApp conversation, with the author’s knowledge base and a memory of each participant. AI resolved 92% of cases without human involvement, and difficult conversations went to the coaches.

View case study
Real estate

Sales and after-sales system for a developer, with 3D walkthroughs built from floor plans

An offer generator with open tracking, a defects dashboard with the statutory 14-day deadline, complaints with a phone line, and 360° walkthroughs generated automatically from floor plans for 81 of 82 flats.

View case study
Healthcare

Health app taken over, with a new product catalogue and 47 languages

We took over the app from the previous contractor: an audit, security and payment fixes, a new product search and localisation into 47 languages, without stopping sales.

View case study
Construction

Public tender analytics platform with a competitor relationship graph

The application combines data from the Public Procurement Bulletin, KRS, GUS and the VAT White List. It shows who is bidding, at what price and how they are connected, instead of manual searching before every tender.

View case study
Technology

Kubernetes platform with GitOps and image signing for 32 applications

We are moving several dozen applications from a single server to a Kubernetes cluster with Git-based deployments, a security policy and backups whose restoration we check every week.

View case study
Media

AI short-video factory with human approval in a mobile web app

Script, illustrations, voiceover, subtitles and render in a single pipeline. A person approves every episode in a phone app, and publishing runs in scheduled slots.

View case study
Customer service

Voice AI assistant for a helpline, with a custom audio pipeline for Polish

A phone line where the caller talks to an AI. We rebuilt the whole audio path so that conversation in Polish flows, and the system detects the end of an utterance by meaning, not by silence.

View case study
Hospitality

Video menu platform for restaurants with HLS streaming and QR codes

A guest scans a code at the table and sees short videos instead of a list of dishes, with no app to install. Video in three quality levels, data isolation for each restaurant and a database restore verified in practice.

View case study
Pharma

Analytics dashboard for a group of e-prescription online shops, with no patient data

The dashboard collects orders from many shops in real time, while patients' personal data never leaves the shops. Privacy by design from the first version.

View case study