Case study · Boty i integracje
FlatScout: obserwator rynku nieruchomości
Pipeline z 7 kontenerów, który całą dobę obserwuje portal z nieruchomościami, robi triage nowych ogłoszeń i pinguje bota na Telegramie, zanim inni kupujący się obudzą.
- Branża
- Nieruchomości
- Czas realizacji
- 2 tygodnie
- Rok
- 2026
- Usługi
- Automatyzacja, Boty, Infrastruktura scrapingu
Problem
Na gorącym rynku najmu i sprzedaży dobre ogłoszenia żyją godziny, czasem minuty. Powiadomienia portali są wolne, toporne i pomijają połowę kryteriów, które naprawdę się liczą (cena za metr, konkretne dzielnice, piętro, właściciel czy agencja). Wygrywa ten, kto najbardziej obsesyjnie odświeża stronę, a to robota dla maszyny, nie dla człowieka.
Co zbudowaliśmy
Czuwającego non stop obserwatora rynku: pipeline scrapingowy, który odpytuje portal w losowych odstępach, normalizuje i deduplikuje ogłoszenia, przepuszcza je przez filtr scoringowy dostrojony do faktycznych kryteriów kupującego i dostarcza ocalałe prosto na Telegram, ze zdjęciami, kluczowymi liczbami i przyciskami triage na jeden tap. Towarzyszący web UI pokazuje pełną tablicę triage: nowe, shortlista, odrzucone, obejrzane.
- Grzeczny z założenia. Losowe opóźnienia żądań 3-10 sekund, rozsądne interwały odpytywania i cache utrzymują scraper w roli dobrego obywatela, a nie problemu z obciążeniem.
- Deduplikacja odporna na reposty. Ogłoszenia dostają odciski oparte na treści, więc to samo mieszkanie wrzucone ponownie pod nowym ID nie pinguje dwa razy.
- Triage wspierany LLM-em. Ogłoszenia niejednoznaczne (czy to naprawdę bez pośredników? czy “przytulne” to kod na 12 m²?) dostają tani przebieg LLM przez nasz gateway, zanim trafią do scoringu.
- Człowiek w pętli. Bot odbiera decyzje z powrotem: shortlista, odrzuć, notatka. Te decyzje zasilają scoring, więc filtr ostrzy się z każdym użyciem.
Architektura
Siedem kontenerów pod jednym plikiem compose: API, worker scrapera, scheduler, bot Telegram, PostgreSQL, Redis i triage UI w React, całość za reverse proxy z UI chronionym 2FA. Wdraża się i aktualizuje przez git pull i jedną komendę compose.
Efekt
Opóźnienie od ogłoszenia do powiadomienia spadło do minut, a terminy oglądania zaczęły wpadać, zanim ogłoszenia zaliczyły pierwsze sto wyświetleń. Wzorzec (odpytaj, znormalizuj, oceń, powiadom, ucz się z feedbacku) był już wyceniany pod monitoring cen i śledzenie przetargów; przenosi się na każdy marketplace, w którym wygrywa szybkość.