1. Realizacje
  2. wynagrodzeniezaslupy.pl
Case study Strona + kalkulator + CRM

Od frazy w Google do podpisanej umowy. Jeden system.

Serwis wynagrodzeniezaslupy.pl, kalkulator, panel CRM i skaner działek ze słupami - zbudowane od zera dla GAMA OZE w sześć tygodni. Poniżej: co dostał klient, które decyzje podjęliśmy za niego i czym to mierzymy.

Klient
GAMA OZE
Branża
odszkodowania za słupy i linie
Zakres
serwis, kalkulator, CRM, mapa
Produkcja
od 5 sierpnia 2026
Strona główna wynagrodzeniezaslupy.pl: nagłówek „Słupy energetyczne na Twojej działce? To mogą być Twoje pieniądze”, przycisk „Oblicz odszkodowanie”, numer telefonu i zdjęcie słupów na polu z kartą kwoty z orzeczenia sądu.
Strona główna wynagrodzeniezaslupy.pl na telefonie: duży nagłówek, przycisk „Oblicz odszkodowanie” i numer telefonu pod kciukiem.

Liczby, ktore mowia same za siebie

Trzy ograniczenia ustawiły cały projekt

GAMA OZE prowadzi sprawy właścicieli działek, na których energetyka postawiła słupy i linie bez umowy. Firma miała proces, kancelarię i wewnętrzny system spraw. Nie miała kanału, który przyprowadza klientów z internetu.

Dostaliśmy jedno zadanie: serwis, który rankuje na frazy o odszkodowaniach za słupy i zamienia wejście z Google w rozmowę handlowca. Zanim powstał pierwszy ekran, spisaliśmy trzy ograniczenia, których nie wolno było złamać.

  • Odbiorca

    Właściciel działki, 45-70 lat, na telefonie

    Często rolnik. Słup stoi „od zawsze”. Nie ufa firmom odszkodowawczym i woli zadzwonić, niż wypełniać formularz. Stąd tekst bazowy 18 px, telefon w każdym widoku i formularz o pięciu polach w jednym kroku.

  • Temat

    Prawo i pieniądze, czyli pełna odpowiedzialność

    Każda kwota, termin i sygnatura na stronie to twierdzenie, za które odpowiada klient. Treść przechodzi przegląd prawny przed publikacją, a liczby bez źródła nie wchodzą - nawet gdy stoją w prezentacji handlowej klienta.

  • Granica

    Klient ma już system do prowadzenia spraw

    Nasz CRM kończy pracę na podpisanej umowie i przekazaniu sprawy. Zero integracji na siłę, zero dublowania statusów kancelarii. Jeden lejek od zgłoszenia do umowy, dalej sprawa żyje u klienta.

Sześć modułów w jednym repozytorium

Strona publiczna, kalkulator, panel CRM i mapa słupów stoją w jednym kodzie, na jednym serwerze i przechodzą te same bramki jakości. Nie ma tu wtyczek, gotowców ani zewnętrznego CRM-u na abonament - jest system, który klient rozumie i ma na własność.

  1. 01

    Serwis pod frazy, nie pod szablon

    26 adresów: pillar o służebności przesyłu, gałąź urządzeń (słupy, linia WN, transformator, kabel ziemny, gazociąg), kalkulator, blog i strony zaplecza. Każdy URL ma przypisaną frazę i rolę w lejku - mapa fraz powstała przed pierwszym ekranem.

    // 26 URL · 11 artykułów · 1 pillar
  2. 02

    Kalkulator, który nie udaje wyceny

    Cztery pytania, bez rejestracji i bez numeru telefonu. Wynik to widełki do rozmowy. Odpowiedzi i kwoty z ekranu zapisują się przy zgłoszeniu razem z wersją stawek, więc handlowiec widzi w CRM tę samą liczbę, którą zobaczył klient.

    // 4 pytania · formularz 5 pól
  3. 03

    Panel CRM od zgłoszenia do umowy

    Pulpit z lejkiem, lista z filtrami, karta leada z historią kontaktu, notatkami i przypisaniem. Dziewięć statusów od „nowy” do „wygrany”, eksport XLSX z wpisem w dzienniku audytu, logowanie tylko z drugim składnikiem.

    // 9 statusów · 2FA obowiązkowe
  4. 04

    Mapa słupów z rejestrów publicznych

    Skaner, który dla wskazanej gminy zestawia linie i słupy z BDOT10k z granicami działek z EGiB i adresami z PRG. Wynik: lista działek-kandydatek z priorytetem i miarą pewności, kolejka weryfikacji i osobna baza PostGIS.

    // worker w Pythonie · PostGIS · DPIA
  5. 05

    Treść po przeglądzie prawnym

    Strony i artykuły napisane po ludzku, bez żargonu. Każdy fakt prawny ma stempel „stan prawny na” i wpis w rejestrze przeglądów. Klauzula „treść przeglądamy okresowo” ma pokrycie w dokumencie, nie w dobrych chęciach.

    // 18 plików ze stemplem stanu prawnego
  6. 06

    Infrastruktura, która wdraża się sama

    VPS w Warszawie, Docker, obrazy z GHCR. Push na main przechodzi sześć bramek CI, potem automatyczny deploy z health-checkiem i rollbackiem. Sentry w regionie EU, monitoring dostępności, backupy szyfrowane kluczem, którego nie ma na serwerze.

    // 6 bramek CI · rollback automatyczny

Cztery decyzje, które podjęliśmy za klienta

Klient przyszedł z prezentacją handlową i listą fraz. Reszta to były nasze decyzje. Poniżej te, które kosztowały najwięcej rozmów i zmieniły najwięcej w produkcie.

  1. Liczby bez źródła nie wchodzą na stronę

    Problem
    Prezentacja handlowa klienta podawała typowy czas do ugody i czas sprawy sądowej. Żadnej z tych liczb nie dało się potwierdzić w publicznym źródle - a strona o pieniądzach odpowiada za każde zdanie.
    Decyzja
    Obie liczby zablokowaliśmy i zastąpiliśmy opisem jakościowym. Każdy fakt prawny dostał datę stanu prawnego, a monitoring orzecznictwa - comiesięczny wpis w rejestrze przeglądów.
    Skutek
    Zero twierdzeń, których klient nie obroni przed urzędem ani przed własnym klientem.
  2. Dane leadów nie opuszczają panelu

    Problem
    Branżowy standard to mail z imieniem i telefonem do handlowca. Wygodne, ale dane osobowe krążą po skrzynkach, których nikt nie audytuje.
    Decyzja
    Serwis nie wysyła żadnych powiadomień z danymi. Lead trafia wyłącznie do CRM, za logowaniem z drugim składnikiem. IP zapisujemy jako skrót z solą, leadów nie kasujemy - anonimizujemy.
    Skutek
    Jeden zbiór danych, jedno miejsce kontroli, pełna historia zdarzeń do audytu.
  3. Sprawą jest działka, nie słup

    Problem
    Warstwa słupów z BDOT10k ma dokładność kilku metrów, granica działki - geodezyjną. Na dwudziestometrowej działce prosty test „punkt w wielokącie” przenosi słup do sąsiada.
    Decyzja
    Każde przypisanie niesie miarę pewności liczoną z odległości od granicy. Wynik skanera to hipoteza do potwierdzenia w kolejce weryfikacji, nie werdykt.
    Skutek
    Handlowiec dostaje listę z priorytetem i wie, które sprawy wymagają ortofotomapy albo wizyty w terenie.
  4. Kolor marki tylko dla akcji, jeden akcent na ekran

    Problem
    Strona o pieniądzach dla odbiorcy 45+ nie może krzyczeć. Żółty marker w nagłówku obniżał powagę, a kolor marki użyty jako tekst nie spełniał progu kontrastu.
    Decyzja
    Teal dostały wyłącznie przyciski i stany „wybrane”. Tekst bazowy 18 px, mono dla kwot, obramowania kontrolek dociągnięte do 3:1 pomiarem, nie na oko.
    Skutek
    Kalkulator, strona i CRM wyglądają jak jedna rodzina narzędzi - razem z wewnętrznym kalkulatorem, na którym klient pracował wcześniej.

Panel, do którego dyrektor wraca po liczby

Zgłoszenie z kalkulatora, formularza albo telefonu ląduje w jednym lejku. Dyrektor widzi, ile leadów przyszło w tym tygodniu, ile czeka na pierwszy kontakt i gdzie sprawy utykają. Każdy wiersz lejka to link do listy z gotowym filtrem.

Na zrzutach są dane syntetyczne. Prawdziwych leadów nie pokazujemy - to nie jest nasz zbiór i nie mamy do niego dostępu z tej strony.

  • Lejek dziewięciu statusów - od „nowy” do „wygrany”, z granicą na przekazaniu sprawy do systemu klienta.
  • Historia tylko dopisywana - statusy, notatki, próby kontaktu, przypisania. Nic nie znika, wszystko ma autora i czas.
  • Eksport XLSX z dziennikiem audytu - kto, kiedy, ile wierszy i w jakim zakresie filtra.
  • 2FA TOTP obowiązkowe - hasła argon2id, sesje 7 dni w ciasteczku HttpOnly, reset unieważnia wszystkie sesje.
  • Anonimizacja zamiast kasowania - statystyki źródeł zostają, dane osobowe znikają, zdarzenie trafia do historii.
  • Zero powiadomień z danymi - serwis nie wysyła maili z imieniem i telefonem; lead żyje wyłącznie w panelu.
  • Samouczek pierwszego logowania - osiem kroków, zapisany per konto, nie per przeglądarka.
  • Mapa z osobną bazą PostGIS - dane z rejestrów publicznych trzymamy poza bazą leadów, z własną retencją i sprzeciwem „nie kontaktować”.

Liczby, które da się powtórzyć

Każda liczba niżej ma komendę, która ją odtwarza, i datę pomiaru. Testy chodzą przy każdym pushu, Core Web Vitals mierzymy skryptem z repozytorium na profilu wolnego telefonu - nie na laptopie deweloperskim.

Stack

  • Next.js 16
  • TypeScript
  • React 19
  • Tailwind 4
  • Postgres 17
  • Drizzle ORM
  • better-auth + TOTP
  • PostGIS
  • MapLibre
  • Python (worker skanera)
  • Docker Compose
  • GitHub Actions
  • GHCR
  • Cloudflare
  • Sentry
  • Vitest
  • Playwright

Jakość

1 779
testów jednostkowych w 139 plikach, komplet zielony w 13 sekund. // npm test · vitest 4 · pomiar 2026-09-11
8
zestawów e2e Playwright - desktop i telefon 390 px, z prawdziwym logowaniem i enrollmentem 2FA. // npm run test:e2e
6
bramek CI przed każdym wdrożeniem: prettier, tsc, eslint, vitest, knip, npm audit. // .github/workflows/ci.yml
≤ 64 ms
INP na siedmiu trasach i CLS 0,0001 na kalkulatorze - profil mobile z czterokrotnie wolniejszym CPU. // scripts/cwv.mjs · 3 przebiegi · 2026-09-11
2,1 s
LCP kalkulatora (mediana) przy 1,6 Mbit/s i 150 ms opóźnienia; strona główna 2,7 s. // ten sam pomiar, profil „standard”

Co mierzymy i kiedy pokażemy wynik

Serwis jest na produkcji od 5 sierpnia 2026. Wyniki SEO w tej branży przychodzą po miesiącach, nie po tygodniach - dlatego nie publikujemy tu liczb, których jeszcze nie ma. KPI ustaliliśmy przed pierwszym ekranem i to one wracają w raporcie.

  • KPI 1 Leady / mies.

    Formularz i telefon, liczone w CRM, nie w Analytics. Cel liczbowy ustalamy z klientem po pierwszym miesiącu danych - wcześniej byłby zgadywaniem.

    // pomiar: pulpit CRM
  • KPI 2 TOP 10

    Na frazy główne z mapy fraz - „odszkodowanie za słupy energetyczne”, „służebność przesyłu wynagrodzenie” i pochodne. Horyzont: 4-9 miesięcy.

    // pomiar: Search Console
  • KPI 3 ≥ 3 %

    Konwersja wejście → lead na ruchu organicznym z fraz komercyjnych. Liczona z kliknięć w Search Console i zgłoszeń w CRM.

    // pomiar: GSC × CRM

Pierwszy raport z liczbami: po 90 dniach od startu, na początku listopada 2026. Ta strona dostanie wtedy sekcję z wynikami - datowaną, z komendą pomiaru, którą da się powtórzyć. Do tego czasu stan techniczny wyżej jest jedynym, co możemy uczciwie pokazać.

Pytania, które padają po tym case study

Zebrane z rozmów o podobnych systemach. Kwoty z cennika, terminy z tego projektu. Nie ma tu Twojego pytania? Napisz - odpowiemy bez owijania.

Zadaj pytanie

Wolisz porozmawiać?

Zadzwoń w godzinach pracy na numer +48 731 412 684. Bez infolinii, odbiera człowiek z zespołu.

Ile kosztuje taki serwis z panelem CRM?

Strona firmowa z blogiem to 5 500 - 9 000 zł, system CRM od 9 500 zł w wersji podstawowej i od 18 000 zł z lejkiem sprzedaży, raportami i eksportem. Moduł mapy wyceniamy osobno, bo zależy od źródeł danych i zakresu weryfikacji. Pełne widełki z terminami są w cenniku - jawnie, bez „wycena indywidualna” przy każdej pozycji. Sprawdź cennik systemów CRM .

Ile trwało wdrożenie?

Od planu do produkcji sześć tygodni: plan 30 lipca 2026, pierwszy commit 4 sierpnia, pierwszy automatyczny deploy 5 sierpnia. Strona publiczna działała od pierwszego tygodnia, CRM i mapa dochodziły etapami na żywym serwisie - do 11 września repozytorium miało 568 commitów.

Czy kod i dane są własnością klienta?

Tak. Repozytorium Git, obrazy Dockera, baza na VPS klienta i klucz do backupów są jego. Nie ma licencji per użytkownik ani zamkniętego panelu, z którego nie da się wyjść. Prawa majątkowe przechodzą umową po zapłacie za etap.

Dlaczego Next.js, skoro strony budujecie w Astro?

Bo ten projekt to aplikacja z logowaniem, sesjami, 2FA i mapą, a nie strona statyczna. Astro daje najszybsze strony marketingowe - tak zbudowany jest digidraft.pl. Gdy pojawia się panel z uprawnieniami i baza z danymi osobowymi, bierzemy framework serwerowy. Stack dobieramy do zadania, nie do przyzwyczajenia.

Jak wygląda RODO w takim systemie?

Dane leadów zostają w CRM za logowaniem z drugim składnikiem. Serwis nie wysyła powiadomień z danymi osobowymi, adres IP zapisuje jako skrót z solą, a leadów nie kasuje - anonimizuje, żeby statystyki zostały. Moduł mapy, który przetwarza dane z rejestrów publicznych, dostał ocenę skutków dla ochrony danych i mechanizm sprzeciwu „nie kontaktować”.

Zrobicie podobny system dla innej branży?

Tak, jeśli macie proces, który da się opisać lejkiem, i klientów, którzy szukają was w Google. Sprawdza się u kancelarii, firm odszkodowawczych, instalatorów i w usługach z dłuższą decyzją zakupową. Zaczynamy od briefu i mapy fraz, kod wchodzi dopiero po zaakceptowanym scope. Opisz swój proces .

Wyceń projekt

Wycena, termin i pierwszy pomysł na realizację - na maila w 24h. Możesz też zobaczyć pełny cennik.

Krok 1 z 3 - Kategoria

  1. 1
  2. 2
  3. 3
Czego dotyczy Twoje zapytanie?

Wysłane!

Odezwiemy się do 24 godzin.