flowhelpDokumentacja

Wszystko o flowhelp — co to jest, co potrafi, ile kosztuje

Wersja 1.2 · 2026-09-22 · Strona publiczna, bez logowania. Każda liczba na tej stronie ma źródło w naszym własnym kodzie i datę stanu, na który została odczytana — przy każdej sekcji stoi wiersz „Źródło". Tam, gdzie zamiast faktu z kodu składamy Ci obietnicę, jest to napisane wprost. Instrukcja techniczna osadzenia jest osobno: instrukcja widgetu.

flowhelp to asystent AI dla Twojej strony. Czyta to, co już masz w internecie — stronę, cennik, regulamin, FAQ — i odpowiada z tego Twoim klientom, przez całą dobę, w oknie czatu wklejonym u Ciebie jedną linijką. Pod każdą odpowiedzią stoi odnośnik do podstrony, z której odpowiedź pochodzi. Kiedy odpowiedzi nie ma w materiałach, asystent mówi to wprost, zamiast zgadywać.

Ta strona opisuje stan na 2026-09-22 — nie plany. Sekcja „Czego flowhelp dziś nie robi" jest pełnoprawną częścią dokumentu, a nie przypisem.

1. Dla kogo to jest

Czego flowhelp nie zastępuje: konsultanta przy sprawach nietypowych. Dlatego w oknie czatu mieszkają dwie akcje — formularz kontaktowy i przekazanie rozmowy człowiekowi mailem (sekcja 7).

Źródło: docs/SPEC.md § 1 (profil klienta), docs/LANDING.md § 1 (dwa segmenty ICP: sklepy internetowe i oprogramowanie).

2. Jak to działa

2.1 Skąd asystent bierze wiedzę

Trzy rodzaje źródeł, wszystkie dodawane w panelu:

ŹródłoCo robimy
StronaPodajesz jeden adres. Szukamy mapy witryny, wchodzimy na podstrony w obrębie tej domeny (respektując robots.txt), wycinamy nawigację, stopki i banery cookies — zostaje sama treść.
TekstWłasna notatka w markdownie (np. „Regulamin zwrotów"). Nagłówki ## stają się kontekstem fragmentów.
Q&AJedna para pytanie–odpowiedź. Najkrótsza droga, żeby domknąć lukę, której nie ma na stronie.

Treść jest dzielona na fragmenty i zamieniana na wektory (model BGE-M3, 1024 wymiary). Pytanie odwiedzającego przechodzi tę samą drogę, więc asystent szuka po znaczeniu, nie po słowie kluczowym.

Źródło: apps/web/app/(panel)/(app)/(workspace)/knowledge/strings.ts (rodzaje źródeł w oknie „Dodaj źródło"), apps/web/app/(panel)/(app)/onboarding/strings.ts (opis czytania strony), docs/DECYZJE.md ADR-003 i ADR-004 (model embeddingów i wymiar).

2.2 Odpowiedź z cytatem albo „nie wiem"

Źródło: packages/db/src/agent-config.ts (refusalMode: 'strict', fallbackAnswer), packages/config/src/constants.ts (INSUFFICIENT_CONTEXT_SENTINEL), docs/DECYZJE.md ADR-031 i ADR-032 (odnośniki do źródeł), ADR-027 (markdown bez HTML-a), CLAUDE.md („kontekst RAG oznaczony jako niezaufane dane").

2.3 Języki

Interfejs okna czatu jest po polsku i angielsku. Język bierze się z konfiguracji asystenta (domyślnie auto, czyli z przeglądarki odwiedzającego) albo z atrybutu data-locale w snippecie. Kierunek tekstu każdej wiadomości ustala się z jej treści, więc odpowiedź po arabsku na polskiej stronie wyświetla się poprawnie.

Panel jest dziś tylko po polsku (angielski to osobny etap). Strona flowhelp.ai ma wersję polską i angielską.

Źródło: packages/widget-core/src/i18n.ts, packages/db/src/agent-config.ts (widget.locale: 'auto'), docs/WIDGET.md § 1 i § 9, docs/PANEL.md § 0 pkt 7.

3. Instalacja — jedna linijka

<script async src="https://cdn.flowhelp.ai/loader.js" data-key="pk_live_…"></script>

Tag idzie przed </body>. Klucz publiczny bierzesz z panelu; z założenia jest widoczny w kodzie strony i nie chroni go tajność, tylko allowlista domen, limity tempa i dobowy sufit kosztu (sekcja 8).

Jeśli Twoja strona ma Content-Security-Policy, potrzebne są dokładnie dwa źródła: https://cdn.flowhelp.ai w script-src i https://app.flowhelp.ai w connect-src. Style widgetu żyją w Shadow DOM, więc style-src zostaje bez zmian, a style Twojej strony nie wchodzą do okna czatu i odwrotnie.

Sprawdzone 14.09.2026 na trzech środowiskach: WordPress z Elementorem, Bootstrap 5, Tailwind. Mechanizm jest ten sam wszędzie, gdzie da się wkleić jeden tag <script>.

Pełna instrukcja dla dewelopera — allowlista domen, publiczne API okna (open/close/sendMessage), rozpoznawanie zalogowanych użytkowników podpisem HMAC, tabela błędów: app.flowhelp.ai/docs/widget.

Źródło: docs/WIDGET.md § 1–3 i § 10, docs/LANDING.md § 5 (lista sprawdzonych środowisk z datą).

4. Plany, limity i kredyty

Jedna odpowiedź asystenta to jedna wiadomość na najszybszym paśmie modeli. Liczymy wyłącznie odpowiedzi asystenta — samo pytanie odwiedzającego, także kliknięte z gotowej podpowiedzi, nie jest liczone osobno (ale odpowiedź na nie już tak).

PlanCenaWiadomości w miesiącuPasma modeli
Trial0 $, 14 dni, bez karty100szybkie
Starter19 $/mc albo 190 $/rok2 000szybkie
Growth49 $/mc albo 490 $/rok6 000szybkie, zrównoważone, inteligentne
Scale149 $/mc albo 1 490 $/rok20 000wszystkie cztery
Enterprisecena nie jest publikowana100 000wszystkie cztery
PlanAsystenciStrony na asystentaMiejsca w zespoleAkcjeOdświeżanie treści
Trial12512ręcznie
Starter120012co tydzień
Growth32 00036codziennie
Scale1010 00010bez limituco godzinę
Enterprisebez limitubez limitubez limitubez limituco godzinę

Rok kosztuje tyle co dziesięć miesięcy — dwa miesiące gratis.

Cięższy model liczy się jako kilka wiadomości. Pasmo szybkie to mnożnik 1×, zrównoważone 5×, inteligentne 20×, najmocniejsze 50×. W Starterze jest jedno pasmo i jedna stawka, więc 2 000 wiadomości znaczy 2 000 odpowiedzi.

Doładowanie: 9 $ za 1 000 wiadomości — kupowane wtedy, kiedy chcesz, ale dziś jeszcze niedostępne, bo płatności uruchamiamy w kolejnym etapie produktu. Do tego czasu każdy plan zaczyna się od 14-dniowego okresu próbnego bez karty, a doładowania i wybór planu nie są dostępne do kupienia.

Źródło: packages/config/src/plans.ts (limity wszystkich planów, TRIAL_DAYS = 14), apps/web/lib/pricing-plans.ts (kwoty i TOPUP_PRICE), packages/config/src/model-bands.ts (mnożniki kredytów), apps/web/messages/pl.json sekcja marketing.pricing (nazwy planów i zdanie o braku płatności) — stan repozytorium 2026-09-22.

5. Co się dzieje, gdy limit się skończy

Nic się nie psuje i asystent nie milknie. Progi są trzy:

SytuacjaZachowanie
zużyte 100 % pakietuasystent schodzi na tańsze pasmo ustawione w konfiguracji asystenta (nigdy droższe niż pasmo żądane) i odpowiada dalej; w planach z jednym pasmem — Trial i Starter — nie ma na co schodzić, więc jakość odpowiedzi się nie zmienia
zużyte 200 % pakietuczat odmawia z kodem 429 i nagłówkiem Retry-After — dwukrotność pakietu to już rachunek, którego nikt nie zamówił
koniec 14 dni okresu próbnegookno czatu na Twojej stronie przestaje odpowiadać, ale w panelu dalej testujesz asystenta
1 000 kredytów na asystenta w ciągu doby (czas UTC)429 do północy UTC — sufit pieniędzy, który działa niezależnie od liczby odwiedzających

Dobowy sufit kredytów jest jedynym bezpiecznikiem, którego nie da się obejść zmianą adresu IP ani czyszczeniem przeglądarki: sumuje cały ruch jednego asystenta.

Źródło: apps/web/lib/chat/quota.ts (progi 100 % / 200 % / koniec okresu próbnego), packages/config/src/constants.ts (WIDGET_DAILY_CREDIT_CAP = 1000), packages/config/src/chat-stream.ts (QUOTA_EXCEEDED → HTTP 429).

6. Panel

6.1 Onboarding — cztery ekrany

  1. Adres strony — podajesz adres, my szukamy podstron.
  2. Czytanie — zwykle 2–4 minuty; można iść dalej, trening kończy się w tle.
  3. Wygląd — imię asystenta, kolor (podpowiadamy go z Twojej strony), powitanie, podpowiadane pytania.
  4. Instalacja — gotowy snippet do skopiowania albo wysłania deweloperowi.

Zmierzony przebieg skryptem Playwright 22.09.2026: 42,6 s od rejestracji do snippetu (17.09.2026 było 48,7 s). To pomiar automatu, czyli dolna granica, a nie średni czas człowieka.

6.2 Sekcje panelu

SekcjaCo w niej jest
StartCo się dzieje z asystentem i co zrobić dalej; ostatnie rozmowy.
WiedzaLista źródeł (strona / tekst / Q&A), stan każdego z nich, liczba stron pobranych i zaindeksowanych, „Odśwież" na pojedynczym źródle i „Przetrenuj" na całym asystencie.
WyglądImię, avatar, kolor główny, motyw jasny/ciemny/auto, róg ekranu, powitanie, podpowiadane pytania, zdanie ujawniające AI. Podgląd na żywo obok.
RozmowyPełne transkrypty, oceny kciukiem od odwiedzających, znacznik rozmowy eskalowanej, zebrane leady.
WnioskiPytania, na które asystent nie znalazł odpowiedzi — każde zamykasz jedną parą Q&A, prosto z listy. Plus wskaźnik deflekcji i najczęstsze pytania z ostatnich dni.
UstawieniaAkcje (sekcja 7), Zespół, Dane, Instalacja, Profil.

Imię i avatar asystenta ustawiasz w Wyglądzie — widać je w nagłówku okna czatu przez całą rozmowę, razem z nieusuwalną plakietką „AI" obok (sekcja 8.1). Bez avatara pokazujemy inicjały imienia. Avatar ma być ilustracją, nie zdjęciem prawdziwej osoby.

6.3 Zespół, retencja, eksport

Źródło: apps/web/app/(panel)/(app)/onboarding/strings.ts (cztery kroki), docs/qa/etap4-2026-09-22/results.md (pomiar 42,6 s i jego zastrzeżenie; poprzedni przebieg 48,7 s — docs/qa/etap4-2026-09-17/results.md), apps/web/app/(panel)/(app)/(workspace)/*/strings.ts (sekcje panelu), apps/web/app/(panel)/(app)/(workspace)/settings/strings.ts (role, retencja, eksport), packages/widget-core/src/ui/App.tsx (imię, avatar i plakietka „AI" w nagłówku okna, inicjały zamiast avatara), packages/db/src/schema/tenancy.ts (retention_days domyślnie 90), docs/PANEL.md § 5 (kontrakt sekcji).

7. Akcje: kontakt i przekazanie człowiekowi

Dwie akcje, obie włączane w panelu. W snippecie nic się nie zmienia i nie ma tu żadnego API do wołania ze strony.

Formularz kontaktowy (lead). Do ośmiu pól, które sam definiujesz (etykieta, typ, czy wymagane). Pokazuje się według wyzwalacza: po N odpowiedziach asystenta, zaraz po odpowiedzi „nie mam tej informacji", albo wyłącznie z przycisku. Otwiera się jako karta nad rozmową, zamykana krzyżykiem lub klawiszem Esc; zamknięcie wyłącza wyzwalacz automatyczny do końca tej rozmowy.

Przekazanie człowiekowi (eskalacja). Ten sam formularz z dodatkowym polem „Wiadomość" i własnym przyciskiem, którego napis ustawiasz. Rozmowa dostaje znacznik „eskalowana", który zasila wskaźnik deflekcji we Wnioskach.

Gdzie trafia zgłoszenie. Do panelu i na e-mail: adres z ustawień akcji, a gdy go nie ma — adres powiadomień workspace'u, a gdy i tego nie ma — adres właściciela. Wiadomość zawiera pola formularza i ostatnie 10 wiadomości rozmowy, żeby dało się odpowiedzieć bez wchodzenia do panelu. Pocztę wysyłamy przez Resend.

Limity nadużyć (bez nich formularz na cudzej stronie jest otwartym kanałem spamu):

LicznikWartość
jeden odwiedzający u jednego asystenta5 zgłoszeń na dobę (UTC)
jedna sieć (adres IP)20 zgłoszeń na godzinę
jeden asystent łącznie200 zgłoszeń na dobę (UTC)

Źródło: apps/web/lib/widget/lead.ts (WIDGET_LEAD_DAILY_LIMIT = 5), apps/web/lib/widget/limits.ts (WIDGET_LEAD_IP_HOURLY_LIMIT = 20, WIDGET_LEAD_AGENT_DAILY_LIMIT = 200), packages/config/src/widget-embed.ts (WIDGET_LEAD_MAX_FIELDS = 8, wyzwalacze), docs/WIDGET.md § 12, docs/DECYZJE.md ADR-029 i ADR-032.

8. Bezpieczeństwo i prywatność

8.1 Odwiedzający Twojej strony

8.2 Twoje dane

8.3 Gdzie stoją dane i kto je przetwarza

Aplikacja, baza danych i kolejka stoją na jednej maszynie — VPS w OVH, wystawionej do świata wyłącznie przez nasz serwer WWW. Poza nią w łańcuchu są trzej dostawcy: OpenRouter (model językowy generujący odpowiedź), deAPI (wyliczanie wektorów) i Resend (poczta powiadomień).

Dokładnej lokalizacji centrum danych ta strona nie podaje, bo nie jest udokumentowana w naszym repozytorium, a liczba bez źródła tutaj nie wchodzi.

Umowę powierzenia (DPA) i pełną listę podprocesorów przygotowujemy na życzenie — poproś przez formularz w oknie czatu na flowhelp.ai. Komplet dokumentów prawnych trafia na stronę razem ze startem sprzedaży (sekcja 9), więc dziś nie ma tu pliku do pobrania.

Źródło faktów: docs/DECYZJE.md ADR-006 (RLS jako granica bezpieczeństwa), ADR-026 (klucz publiczny, allowlista, limity), ADR-028 (HMAC identify), ADR-033 (plakietka „AI", avatar jako ilustracja), packages/db/src/agent-config.ts (domyślne consentMode: 'deferred', rateLimitMessages: 20, rateLimitWindowSeconds: 300, aiDisclaimer), apps/web/lib/widget/limits.ts (WIDGET_IP_RATE_LIMIT = 200 / 300 s), CLAUDE.md (zasada RLS), docs/PANEL.md § 0 pkt 6 i docs/DECYZJE.md ADR-024 inwariant 9 (logi bez PII, egzekwowane w apps/web/lib/widget/lead.ts i apps/web/lib/widget/feedback.ts), docs/INFRASTRUKTURA.md § 10.2 (maszyna w OVH).

Źródło obietnic (dwie, oznaczone wyżej — nie wynikają z kodu, tylko z tego, co obiecujemy klientowi): apps/web/messages/pl.json sekcja marketing.faq (odpowiedź o RODO na flowhelp.ai), docs/LANDING.md § „FAQ o RODO nie obiecuje dokumentu opublikowanego" (decyzja: DPA i lista podprocesorów na życzenie, dokumenty na stronie razem z otwarciem sprzedaży).

9. Czego flowhelp dziś nie robi

To nie jest lista wad ani obietnic — to stan na 2026-09-22.

Źródło: apps/web/app/(panel)/(app)/(workspace)/knowledge/strings.ts (zakładka „Pliki (wkrótce)", ADR-023), apps/web/lib/panel/actions-config.ts (dwa typy akcji: lead_capture, email_escalation), docs/PANEL.md § 0 pkt 7 (panel po polsku), docs/ETAPY.md (billing jako kolejny etap; „Prawne: ToS, Privacy Policy, DPA, lista subprocesorów" jako etap przyszły), CLAUDE.md (SIGNUP_MODE), docs/WIDGET.md § 6 (zgoda nieutrwalana).

10. Kontakt i wsparcie

Najszybsza droga: napisz do asystenta w oknie czatu na flowhelp.ai. Gdy odpowiedzi nie ma w jego bazie wiedzy, pokaże formularz kontaktowy — zgłoszenie trafia prosto do nas razem z całą rozmową, więc nie trzeba niczego powtarzać.

Nie podajemy tu adresu e-mail celowo: domena flowhelp.ai nie odbiera dziś poczty, więc adres na stronie byłby adresem donikąd. Wsparcie w każdym planie, także w Starterze, działa przez okno czatu na flowhelp.ai i jego formularz kontaktowy — wiadomość trafia do nas e-mailem razem z zapisem rozmowy. Regulamin i polityka prywatności wchodzą razem ze startem sprzedaży.

Źródło: docs/LANDING.md § 5 (brak adresów e-mail w treści — MX domeny nie odbiera poczty; regulamin i prywatność „wchodzą z launchem").

11. English summary

flowhelp is an AI assistant for your website. It reads what you already publish — your pages, pricing, terms, FAQ — and answers your customers from that material, around the clock, in a chat window you embed with one line of code. This summary states the facts as of 2026-09-22; the Polish sections above carry the full detail and name the source file behind every number.

How it works. You add knowledge as a website (we follow the sitemap, respect robots.txt and strip navigation, footers and cookie banners), as plain text, or as Q&A pairs. Everything is embedded with BGE-M3 (1024 dimensions), so the assistant searches by meaning. It answers only from your material; when the answer is not there it says so and the question lands in your panel as a gap to close. Under each answer there is a "Sources" row: one link per page, at most three. Retrieved page content is passed to the model as untrusted data, never as instructions, and the model's markdown never becomes HTML.

Install. One tag before </body>: <script async src="https://cdn.flowhelp.ai/loader.js" data-key="pk_live_…"></script>. With a CSP you need exactly two origins: https://cdn.flowhelp.ai in script-src and https://app.flowhelp.ai in connect-src. Full developer instructions: app.flowhelp.ai/docs/widget.

Plans (one answer on the fast band = one message). We count assistant answers only — a visitor's question, including one clicked from a suggested prompt, is not counted separately (the answer to it is).

PlanPriceMessages per month
Trial$0, 14 days, no card100
Starter$19/mo or $190/yr2,000
Growth$49/mo or $490/yr6,000
Scale$149/mo or $1,490/yr20,000
Enterpriseprice not published100,000
PlanAssistantsPages per assistantSeatsActionsRefresh
Trial12512manual
Starter120012weekly
Growth32,00036daily
Scale1010,00010unlimitedhourly
Enterpriseunlimitedunlimitedunlimitedunlimitedhourly

Heavier model bands cost more per answer: 1x fast, 5x balanced, 20x smart, 50x max. Top-up is $9 per 1,000 messages. Billing is not live yet — every plan currently starts as a 14-day trial.

When the allowance runs out. At 100 % the assistant drops to the fallback band configured for that assistant — never a more expensive one than requested — and keeps answering; at 200 % the chat returns HTTP 429 with Retry-After; a per-assistant cap of 1,000 credits per UTC day protects the wallet regardless of how many visitors call it.

Panel. Four onboarding screens (site → reading → appearance → install; a Playwright run on 2026-09-22 took 42.6 s from sign-up to snippet, down from 48.7 s on 2026-09-17 — a scripted lower bound, not an average human). Sections: Start, Knowledge, Appearance, Conversations, Insights, Settings (actions, team, data, install, profile). Roles: owner, admin, editor, viewer. Conversation retention 30 / 90 / 365 days or forever, default 90; full CSV and JSON export for owner and admin.

Actions. A contact form (up to 8 fields, triggered after N answers, on a fallback answer, or from a button) and an email escalation to a human. Submissions go to the panel and by e-mail (via Resend) with the last 10 messages attached. Abuse limits: 5 per visitor per UTC day, 20 per IP per hour, 200 per assistant per UTC day.

Security and privacy. Tenant isolation is enforced by Postgres row-level security, not by WHERE clauses. The public widget key is assumed to leak — the defence is the domain allowlist, rate limits and the daily credit cap. Logged-in visitors can be verified with an HMAC signature computed on your server. No cookies from us: the visitor id is a UUID in localStorage. Consent modes: open, deferred (default), blocked. The "AI" badge in the header cannot be turned off — EU AI Act Article 50 — and the avatar must be an illustration, never a photo of a real person. Chat rate limits default to 20 messages per 5 minutes per visitor and 200 per 5 minutes per IP. Your content is never used to train anyone's model — a commitment we make to you, not a switch in our code. The stack runs on a single OVH VPS; the other processors are OpenRouter (language model), deAPI (embeddings) and Resend (e-mail). We do not state the data-centre region here because it is not documented in our repository; the DPA and the full subprocessor list are prepared on request through the chat form — the legal documents go on the site when sales open.

Not available today: file uploads (PDF/DOCX), actions that call your own systems (order status, stock), voice, a panel UI in any language other than Polish, payments, published legal documents (terms, privacy policy, DPA — they arrive with sales), and open sign-up (an invite code is required). Consent is not remembered between visits.

Contact: ask the assistant in the chat window on flowhelp.ai — when it does not know, it offers a contact form that reaches us with the whole conversation. We publish no e-mail address because the domain does not receive mail today.