Mit csinál végig egy lead életén
A Nortinia Sales AI nem egy chatbot, és nem egy lista-importáló script. Egy zárt körű orchestrator, amely egy lead bekerülése után végig vezérli az életét — onnantól, hogy a sor megérkezik egy CSV-ből vagy egy webform-submit POST-ból, addig, hogy egy emberi sales képviselő átveszi a beszélgetést. Ebben a cikkben végigmegyünk a teljes úton, megnevezzük az érintett komponenseket, és megmutatunk pár valós számot egy közepes ügyfél tenant-jétől.
1. Ingest
Három belépési pont van: CSV-feltöltés a sales-ai-admin felületen, public webform POST (POST /api/v1/leads/intake), vagy egy harmadik fél CRM webhook (HubSpot / Pipedrive / Salesforce). Mindhárom ugyanabba az eng_lead_ingest táblába kerül, normalizált JSON formában. A tenantId Host-header vagy bearer-token alapján dől el — soha nem trust client-side input.
A ingest pillanatban három kötelező mező van: cégnév, kapcsolódó URL vagy email-domain, forrás. Minden más opcionális — az enrichment pótolja.
2. Web enrichment
A Python FastAPI service (enrichment-svc, port 3021) átveszi a lead-et és elindít egy Playwright + browser-use sessiont. A folyamat:
- Robots.txt ellenőrzés (ha tilt, eldobjuk és csak public source-ot használunk)
- Landing oldal scrape (hero szöveg, CTA, navigációs struktúra)
- About / Team oldal scrape (alkalmazotti létszám-jelek)
- Tech stack detect (BuiltWith-szerű heurisztika a HTML-ből + HTTP header)
- LinkedIn company page (csak public, nincs scrape login mögött)
- Recent news (Google News API)
A scraping output egy strukturált LLM extract-en megy át (gpt-4.1-mini, költségoptimalizált). Átlag költség: 0.02 USD / cég. Átlag latency: 38 másodperc.
3. Score
14 feature alapján egy gradient-boosted tree (LightGBM) ad egy 0-100 közötti pontszámot. A modell 8 000 historikus labeled példán tanult, és havonta egyszer újratanul. LLM re-rank csak a 60-65 pont közötti határeseteket nyomja el vagy fel — drága lenne minden lead-re hívni.
A lead a pontszáma alapján egy bucket-be kerül: A (80+), B (60-79), C (40-59), D (40 alatt — auto-discard, csak retarget pool).
4. Assign
A bucket dönt a következő pipeline-ról:
- A bucket: azonnali human assign + email-szekvencia indítás
- B bucket: email-szekvencia, voice call opcionálisan a 3. lépés után
- C bucket: nurture content, retarget ad audience-be
- D bucket: csak ad-retarget, nincs aktív outreach
Az assign logika tenant-szinten konfigurálható — egy ügyfelünk például A-t és B-t is azonnal humánnak adja át.
5. Outreach
Három csatorna fut párhuzamosan, mindegyik az engine-en keresztül:
- Email — perszonalizált, az enrichment outputjából generált. Brand voice mátrixból merít.
- Voice — Telnyx-en keresztül outbound call, csak permission-based (lásd külön cikk a hideghívás etikai keretről).
- Ad retarget — Meta + Google audience seed (lásd külön cikk).
Minden touch eseményt rögzítünk az eng_lead_touch táblába, és visszacsatoljuk a score-ba.
6. Handoff
A kvalifikált küszöb (alapból: B+ bucket + minimum 2 pozitív touch response) elérésekor a lead átkerül egy emberi sales képviselőhöz. A handoff egy Slack DM + egy admin UI-felvillanás. A kontextus (teljes enrichment + touch history + javasolt következő lépés) egy összefoglaló kártyán jelenik meg.
Az orchestrator állapotgép
Mindezt egy XState-szerű állapotgép vezérli, 24 átmenettel. A főbb állapotok: INGESTED → ENRICHING → SCORED → ASSIGNED → OUTREACH_ACTIVE → QUALIFIED → HANDED_OFF. Mellékágak: ENRICHMENT_FAILED, OPT_OUT, BOUNCED, STALE. Az állapotgép Postgres-ben él, minden átmenet auditolt.
Számok egy közepes tenanttól
Egy ügyfél, közepes méretű B2B SaaS:
- 1 420 lead / hét átlagos throughput
- 67% sikeres enrichment (a maradék vagy robots-tiltás, vagy túl kevés public data)
- 18% A+B bucket arány
- 7,3 nap átlagos idő ingest → handoff
- 0,41 USD átlagos teljes pipeline-költség lead-enként (modellek + Telnyx + ad seed)
Mit nem csinál a rendszer
Nem küld cold emailt opt-in nélkül. Nem hív ismeretlen számot. Nem ad át pontszámot harmadik félnek. Nem vásárol lead-listát. A rendszer csak azt csinálja, amire a tenant explicite jogosult — és ezt nem véletlenül emeljük ki minden cikkben.