Klient z branży ochrony szukał kogoś do wdrożenia AI w firmie. Zamiast wysłać ofertę i czekać, zbudowałem działający kawałek rozwiązania i wdrożyłem go tego samego dnia — żeby mógł go dotknąć, a nie tylko o nim przeczytać. Zobacz działające demo → (dane procedur w demie są przykładowe).
Sytuacja wyjściowa
Firma ochrony prowadząca całodobową stację monitorowania alarmów (CMA), obsługującą około 150 obiektów. Każdy obiekt ma własną procedurę postępowania. Problem nie był techniczny, tylko organizacyjny: cała wiedza firmy żyła w głowach ludzi i w prywatnych, rozproszonych kontach ChatGPT. Każdy pracownik miał swój login, swój czat i swoją wiedzę. Nic wspólnego, nic scentralizowanego.
Problem
- Brak ciągłości: pracownik odchodzi i zabiera wiedzę ze sobą — zero śladu.
- Nowi ludzie: operator na dyżurze nie wie, jak postąpić na konkretnym obiekcie o 22:00.
- Rozproszenie: kilkanaście prywatnych czatów AI zamiast jednej firmowej bazy.
- Dwie obawy blokujące: „nie chcemy wystawiać danych na zewnątrz" oraz „nie chcemy uzależnić się od jednego dostawcy — za pół roku wyjdzie coś lepszego".
Podejście — RAG, nie „trenowanie" modelu
Klient mówił „nauczmy model". Ale trenowanie własnego modelu byłoby drogie, trudne do aktualizacji i nieprzejrzyste. Wybrałem RAG (retrieval-augmented generation): wiedza siedzi w osobnej, firmowej bazie, a model tylko z niej wyszukuje i odpowiada. Dzięki temu:
- baza jest aktualizowana na bieżąco, bez przetrenowywania modelu,
- każda odpowiedź wskazuje źródło (konkretną procedurę) — to rozwiązuje „ślad po pracowniku" i audytowalność,
- model nad bazą jest wymienny — co wprost rozbraja lęk przed uzależnieniem od dostawcy.
Rozwiązanie
Działająca aplikacja (Next.js) z dwiema częściami, wdrożona na Vercel.
1. Czat operatora
Operator pyta naturalnym językiem — np. „Obiekt 157 — partycja w niewłaściwym stanie, godzina 22:00. Co mam zrobić?" (to autentyczne zdanie z rozmowy z klientem). System odpowiada krok po kroku na podstawie firmowej bazy i pokazuje, z której procedury skorzystał (📄 Źródło). Nie zmyśla — odpowiada z wiedzy firmy.
2. Baza wiedzy — pełna kontrola klienta
To była kluczowa korekta: klient nie chciał „czarnej skrzynki", chciał widzieć i kontrolować swoją wiedzę. W drugiej zakładce klient widzi wszystkie procedury, dodaje je, edytuje i usuwa, a także tworzy procedurę z pomocą AI — opisuje obiekt jednym zdaniem („Obiekt 300 — apteka całodobowa, reakcja na alarm po 22:00"), AI układa kompletny szkic, klient go poprawia i zapisuje. Czat odpowiada z żywej bazy — dodana procedura działa natychmiast.
3. Wymienny model = brak uzależnienia od dostawcy
Nad tą samą bazą jednym kliknięciem przełącza się model: Claude, ChatGPT, Gemini. Wiedza zostaje w bazie firmy — zmienia się tylko „silnik" na wierzchu. To bezpośrednia odpowiedź na największą obawę klienta: gdy za pół roku pojawi się lepszy model, podpina się go bez przebudowy całości.
Architektura
Celowo prosta i pod kontrolą klienta:
- Hosting: serwer firmy (Ubuntu Linux) lub bezpieczna chmura — bez drogiej karty graficznej.
- Modele: przez API (Claude / OpenAI / Gemini) z umową powierzenia danych — dane nie służą do uczenia modeli.
- Wiedza: w osobnej bazie firmy; model tylko z niej czyta.
Jedno zdanie, które domyka temat dla klienta: „To stoi u Was, na Linuksie, bez drogiego sprzętu — model pracuje przez API, a wiedza zostaje w Waszej bazie, pod Waszą kontrolą."
Efekt
Od rozmowy rozpoznawczej do działającego, wdrożonego demo — w jeden dzień. Klient nie dostał slajdów ani obietnic, tylko link, który może otworzyć na telefonie i przetestować na scenariuszu ze swojej własnej pracy. Demo pokazuje wszystko, czego potrzebował: jedno źródło prawdy, kontrolę nad bazą, tworzenie procedur (ręcznie i z AI) oraz niezależność od dostawcy.
Wnioski
Najszybszy sposób, żeby sprzedać złożony projekt AI, to nie oferta — to działający kawałek, którego klient może dotknąć. „Pokażę, że to działa" bije „opiszę, jak to zrobię".
A pod spodem leży prosta, lecz niedoceniana prawda: w firmowym AI najcenniejsza nie jest sama sztuczna inteligencja, tylko uporządkowana wiedza firmy. Model to wymienny dodatek na wierzchu — wartość zostaje w bazie.