Skip to content
Back to all case studies
Monitoring German industrial supplier

The daily check nobody has to do anymore

Open the insolvency register every morning and compare it against a customer list. A service does that now, and it only speaks up when a name actually appears.

0

manual checks per day

before: every morning in the register

Before

every morning, manually

After

daily, automatic

The problem

Someone had to open the German insolvency register every morning and work through a list of customers. Miss one entry and the company ships goods to a customer who can no longer pay. It is not demanding work, but it can never be skipped.

What I built

A service that queries the official register daily and compares it against the watchlist. The register resists automated access: every request needs a fresh session token, and the results table can only be read by column position rather than by label. Both quirks are handled explicitly in the fetch.

How it works in detail

The fetch first loads the page, reads the session token and only then submits the actual search. Without that step the register answers with an error that looks exactly like an empty result. That distinction matters: an empty result and a failed fetch must never be treated the same, otherwise the system reports calm for years while it has in fact gone blind.

The results table has no reliable labels, so it is read by fixed column positions. If the layout changes, the fetch fails loudly instead of quietly returning wrong data.

The target server has no Python environment, so everything runs in a container with its own schedule.

The result

Nobody opens that website anymore. The team only hears from the system when a name from the list genuinely shows up.

What I take from it

For monitoring work the hard question is not how to read data, but how to notice that you have stopped receiving any. A watchdog that silently goes blind is worse than no watchdog.

Built with

  • Python
  • Docker
  • Scheduled fetches
  • Email notification