Przejdź do treści
Inżynier automatyzacji AI
PL
Wróć do projektów

2026

Ocena leadów przez AI, która nie gubi żadnego zgłoszenia

Pipeline zamieniający surowe zgłoszenia z formularza w ocenione, ustrukturyzowane leady w arkuszu i wysyłający wiadomość na Slacka w chwili, gdy pojawi się gorący lead.

Problem

Większość małych zespołów zbiera leady formularzem, a potem czyta je ręcznie. Ktoś otwiera skrzynkę, ocenia kto wygląda poważnie, przepisuje dane do arkusza i w zabiegany dzień o kilku zapomina. Koszt nie leży w przepisywaniu. Koszt polega na tym, że najlepszy lead leży nieprzeczytany przez sześć godzin.

Co zbudowałem

Webhook odbiera zgłoszenie z formularza. Dane są normalizowane i trafiają do modelu językowego, który zwraca ścisły JSON: ocenę od jednego do pięciu, krótkie uzasadnienie, wykryty język i flagę needs_review. Wiersz trafia do arkusza, a wszystko z oceną cztery lub wyższą natychmiast ląduje jako wiadomość na dedykowanym kanale Slacka.

Całość działa na natywnych node’ach n8n. Bez node’ów Code i bez zapytań HTTP sklejających integracje, bo workflow, który klient potrafi przeczytać, to workflow, który klient potrafi utrzymać.

Jak sprawić, by odpowiedź modelu była wiarygodna

Model językowy czasem zwróci tekst zamiast JSON-a albo wymyśli pole. Zajmują się tym dwie warstwy:

  • Structured Output Parser z jawnym schematem JSON odrzuca wszystko, co się nie zgadza.
  • Gdy odrzuci, osobny model auto-fix dostaje jedną próbę naprawienia własnej odpowiedzi według tego samego schematu.

Jeśli i to zawiedzie, lead i tak trafia do arkusza z flagą needs_review, a na Slacka idzie ostrzeżenie. Lead nigdy nie znika po cichu, bo dokładnie ten scenariusz awarii naprawdę kosztuje pieniądze.

Miejsca, które okazały się naprawdę trudne

Równoczesne zapisy nadpisywały się nawzajem. Node Google Sheets domyślnie czyta ostatni wiersz i go aktualizuje. Dwa leady w tej samej sekundzie dawały jeden wiersz. Przełączenie node’a w prawdziwy tryb append to naprawiło, a test z trzema równoczesnymi zgłoszeniami sprawdza teraz, że wierszy jest dokładnie trzy.

Ponowne próby mnożyły dane. Włączony retry na node Sheets sprawił, że n8n zapisywał każdy wiersz trzy razy i wydłużył przebieg z 2,5 do 16 sekund. Retry należy się wywołaniom, które padają przejściowo, a nie operacji append, która już się udała.

Ochrona przed botami blokowała moje własne testy. Skrypt testowy był odrzucany przez weryfikację Cloudflare, dopóki nie zaczął wysyłać realistycznego User-Agenta. Warto o tym wiedzieć, zanim zaczniesz debugować workflow, który nigdy nie był problemem.

Niezawodność, nie funkcje

Projekt zawiera osobny workflow błędów. Każda awaria w dowolnym miejscu pipeline’u wysyła alert na Slacka z nazwą workflow i node’em, który padł. Zepsuta automatyzacja sama się zgłasza, zamiast po cichu gasnąć.

Niewielki dashboard w Next.js za hasłem pokazuje ostatnich pięćdziesiąt leadów, żeby nikt nie musiał otwierać arkusza dla pytania “czy coś dziś przyszło?”.