AI w firmie
Automatyczne raporty z AI: agent, który co tydzień zrobi podsumowanie
Automatyczne raportowanie z AI to zaplanowany proces, który co tydzień pobiera dane z CRM, Jiry, GA4 czy monitoringu, liczy wskaźniki w kodzie lub SQL, a model językowy dopisuje tylko komentarz i wskazuje anomalie. Gotowy raport trafia na maila, Slacka lub Teams, a przed wysłaniem szerszemu gronu sprawdza go człowiek.
Poniżej znajdziesz przykłady raportów, architekturę krok po kroku, wzorzec chroniący przed zmyślonymi liczbami i listę pułapek.
Jakie raporty najlepiej zautomatyzować
Zacznij od raportu, który ktoś już dziś składa ręcznie, co tydzień, z tych samych źródeł. Masz wtedy gotową definicję wskaźników i punkt odniesienia do porównania.
| Raport | Źródła danych | Co liczy kod | Co pisze AI |
|---|---|---|---|
| Sprzedaż tygodniowa | API systemu CRM | Nowe leady, wygrane i przegrane szanse, wartość lejka, konwersja między etapami, porównanie z poprzednim tygodniem | Które zmiany są nietypowe, które duże szanse od dawna stoją bez aktywności |
| Status projektów | Jira, GitHub | Zamknięte zadania, PR otwarte dłużej niż ustalony próg, otwarte błędy krytyczne, odchylenie od planu sprintu | Ryzyka dla terminu, blokery, krótkie streszczenie dla klienta |
| Marketing | GA4 Data API, Search Console API, Google Ads API | Sesje, konwersje, koszt konwersji, kliknięcia i CTR z wyszukiwarki, zmiany dla najważniejszych stron | Co się zmieniło i jakie przyczyny warto sprawdzić |
| Przepływy pieniężne | System księgowy, wyciągi bankowe | Wpływy, wydatki, należności przeterminowane, prognoza salda na kolejne tygodnie | Komentarz o należnościach i odchyleniach od budżetu |
| IT i bezpieczeństwo | Wazuh, Grafana, Prometheus | Alerty według poziomu, nowe podatności, dostępność usług, zajętość dysków, wygasające certyfikaty | Co wymaga działania w tym tygodniu, a co jest szumem |
Ostatni typ raportu opiera się na dobrze skonfigurowanym monitoringu. Jeśli dopiero go budujesz, zajrzyj do wpisów Wazuh w małej firmie i Monitoring logów: ELK i Grafana.
Architektura agenta raportowego krok po kroku
Większość tego procesu to zwykła inżynieria danych. Model językowy odpowiada za jeden etap z ośmiu.
- Wyzwalacz według harmonogramu: cron na serwerze, zaplanowany workflow w CI, n8n albo funkcja w chmurze. Uruchom raport o stałej porze, np. w poniedziałek o 6:00, po zamknięciu tygodnia.
- Pobranie danych przez API lub serwery MCP (czym jest MCP) na koncie technicznym z uprawnieniami tylko do odczytu.
- Zapis migawki surowych danych z datą pobrania. Dzięki temu odtworzysz raport sprzed miesiąca i wyjaśnisz, skąd wzięła się liczba.
- Kontrola kompletności: czy każde źródło odpowiedziało, czy liczba rekordów mieści się w oczekiwanym zakresie, czy dane obejmują cały okres.
- Obliczenia w SQL lub kodzie: wskaźniki, porównania okresów, średnie kroczące.
- Wykrywanie anomalii regułami, np. zmiana o więcej niż ustalony procent albo wartość poza zakresem z ostatnich tygodni. Reguła decyduje, co jest anomalią, model tylko ją opisuje.
- Komentarz AI na podstawie gotowych wyników i listy anomalii.
- Dostarczenie i przegląd: szkic do właściciela danych, po akceptacji wysyłka do odbiorców i archiwizacja.
Jeśli uruchamiasz raport jako zaplanowany workflow w GitHub Actions, pamiętaj, że harmonogramy działają tylko z domyślnej gałęzi, a w publicznych repozytoriach GitHub wyłącza je po 60 dniach bez aktywności.
Dlaczego model językowy nie może liczyć liczb w raporcie
Model generuje tekst, który brzmi prawdopodobnie. Suma, procent czy zaokrąglenie mogą wyjść błędnie, a w gładkim akapicie nikt tego nie zauważy. OWASP opisuje ten problem jako misinformation (LLM09) i zaleca m.in. weryfikację wyników przez ludzi.
Najpewniejszy wzorzec: model w ogóle nie wpisuje liczb. Dostaje słownik gotowych wartości i pisze komentarz z nazwanymi miejscami, a kod podstawia wartości i odrzuca tekst, który odwołuje się do nieistniejącej nazwy albo zawiera cyfry spoza miejsc. Uproszczony szkic w Pythonie:
import re
facts = {
"przychod_tydzien": "48 200 zł",
"przychod_zmiana": "-12,4%",
"wygrane_szanse": "14",
}
# Tekst od modelu, np.:
# "Przychód wyniósł {przychod_tydzien} ({przychod_zmiana} tydzień do tygodnia)."
commentary = llm_commentary
bez_miejsc = re.sub(r"\{[a-z_]+\}", "", commentary)
if re.search(r"\d", bez_miejsc):
raise ValueError("Model wpisał liczbę poza miejscami na wartości")
try:
report_text = commentary.format_map(facts)
except KeyError as missing:
raise ValueError(f"Model użył nieznanej wartości: {missing}")
Reguła „żadnych cyfr poza miejscami” jest surowa: odrzuci też zdanie „trzy największe szanse” zapisane cyfrą. To dobra cena za pewność, że każda liczba w raporcie pochodzi z obliczeń. Nieudane sprawdzenie powinno uruchomić ponowną generację, a po kilku próbach wysłać raport bez komentarza.
Przykładowa struktura tygodniowego raportu
Dobry raport da się przeczytać w dwie minuty. Poniższy układ sprawdza się dla sprzedaży, projektów i marketingu:
- Najważniejsze w trzech zdaniach: komentarz AI z wartościami wstawionymi przez kod.
- Tabela wskaźników: wartość, poprzedni tydzień, zmiana, średnia z ostatnich tygodni. Całość generuje kod.
- Anomalie: lista wykryta regułami, każda z jednozdaniowym opisem od AI i linkiem do źródła, np. do filtra w CRM.
- Sprawy do decyzji: maksymalnie trzy punkty, np. szansa bez kontaktu od trzech tygodni czy należność przeterminowana powyżej progu.
- Stan danych: z jakich źródeł, o której pobrano, czego brakuje i które dane nie są jeszcze ostateczne.
- Przegląd: kto i kiedy zatwierdził raport.
Sekcja o stanie danych wydaje się formalnością, dopóki raport nie pokaże spadku ruchu, który w rzeczywistości wynika z niepełnych danych z ostatnich dni.
Dostarczenie raportu: e-mail, Slack, Teams, PDF
Wybierz kanał, w którym odbiorca i tak pracuje. Raport, po który trzeba gdzieś wejść, przestaje być czytany po kilku tygodniach.
- E-mail: najprostszy i dobry do archiwum. Wysyłaj z dedykowanej skrzynki z poprawnie ustawionymi SPF, DKIM i DMARC.
- Slack: incoming webhook przyjmuje JSON wysłany metodą POST na unikalny adres. Ten adres zawiera sekret, więc nie może trafić do repozytorium.
- Microsoft Teams: Microsoft wycofuje konektory Office 365, a ich wyłączenie zaplanował na 18–22 maja 2026. Jeśli raport korzysta ze starego webhooka, przejdź na aplikację Workflows.
- PDF: przydatny dla zarządu i klientów. Grafana w wersjach Enterprise i Cloud potrafi wysyłać zaplanowane raporty PDF z dashboardów, więc część raportów technicznych nie wymaga własnego generatora.
Na etapie przeglądu wystarczy, że szkic trafia najpierw do jednej osoby z przyciskiem lub odpowiedzią „zatwierdzam”. Po kilku tygodniach bez poprawek możesz rozważyć automatyczną wysyłkę dla raportów wewnętrznych o niskim ryzyku.
Najczęstsze pułapki automatycznych raportów
- Zmyślone liczby. Opisane wyżej. Jedyna skuteczna obrona to liczby wyłącznie z kodu.
- Nieaktualne i niepełne dane. Search Console API domyślnie zwraca dane ostateczne; z parametrem
dataStateustawionym naalldostaniesz świeższe, ale część wierszy może jeszcze się zmienić. Zaznacz to w raporcie. - Pusta odpowiedź potraktowana jak zero. Wygasły token, limit zapytań albo zmiana API i raport ogłasza spadek sprzedaży o 100%. Brak danych musi zatrzymać raport, a nie wejść do obliczeń.
- Różne definicje tygodnia i stref czasowych. Ustal, że tydzień zaczyna się w poniedziałek i liczysz go w czasie polskim, także dla danych z systemów działających w UTC.
- Zbyt szerokie uprawnienia. Konto techniczne widzi wszystko, a raport łączy dane z kilku systemów. Odbiorca raportu sprzedaży nie powinien przy okazji zobaczyć wynagrodzeń z raportu przepływów.
- Zmiana definicji wskaźnika. Ktoś zmienia etapy lejka w CRM i porównanie z poprzednimi tygodniami traci sens. Wersjonuj definicje razem z kodem raportu.
- Raport, którego nikt nie czyta. Mierz otwarcia albo pytaj odbiorców raz na kwartał, co z raportu wykorzystali. Usuwaj sekcje, których nikt nie potrzebuje.
Od czego zacząć automatyczne raportowanie
Pierwszy raport nie musi obejmować wszystkich systemów. Lepiej, żeby był mały, poprawny i czytany, niż rozbudowany i podważany na każdym spotkaniu.
- Wybierz jeden raport i jednego właściciela. Osoba, która dziś składa go ręcznie, zna wyjątki i wie, które liczby budzą pytania zarządu.
- Spisz definicje wskaźników. Co to jest „wygrana szansa”, od której daty liczysz przychód, czy faktury korygujące obniżają sprzedaż w tygodniu wystawienia. Ten dokument jest ważniejszy od promptu.
- Zbuduj część bez AI. Pobranie danych, obliczenia i tabela wskaźników muszą działać samodzielnie. Jeśli model przestanie odpowiadać, raport nadal wychodzi, tylko bez komentarza.
- Dodaj komentarz AI z ograniczonym zadaniem. Na początek wystarczy streszczenie w trzech zdaniach i opis anomalii wykrytych regułami.
- Uruchom raport równolegle z ręcznym przez trzy, cztery tygodnie i porównuj wyniki liczba po liczbie.
- Zbierz uwagi odbiorców i dopiero potem dokładaj kolejne źródła lub sekcje.
Rozbieżności z etapu równoległego prawie zawsze pokazują różnice w definicjach, a nie błędy w kodzie. Wyjaśnij je, zanim ktokolwiek zacznie podejmować decyzje na podstawie nowej wersji. Więcej przykładów automatyzacji znajdziesz we wpisie Automatyzacje AI w 2026, a jeśli chcesz zlecić zbudowanie takiego raportu, zobacz nasze usługi.
Najczęściej zadawane pytania
Czy ChatGPT może sam przygotować raport sprzedaży z danych z CRM?
Może napisać tekst, ale nie powinien liczyć wartości. Modele językowe potrafią podać wiarygodnie wyglądającą, błędną sumę lub procent. Obliczenia wykonaj w SQL lub w kodzie, a modelowi przekaż gotowe wyniki do skomentowania.
Jak często uruchamiać automatyczny raport?
Tak często, jak odbiorca podejmuje decyzje na jego podstawie. Dla sprzedaży i projektów zwykle co tydzień, dla bezpieczeństwa codzienny skrót plus tygodniowe podsumowanie, dla finansów tygodniowo lub miesięcznie. Pamiętaj, że część źródeł, np. Search Console, udostępnia ostateczne dane z opóźnieniem.
Jak wysłać raport na Microsoft Teams?
Microsoft wycofuje konektory Office 365 w Teams (wyłączenie zaplanowano na maj 2026), więc stare adresy webhooków nie są już dobrym wyborem. Microsoft zaleca aplikację Workflows, która udostępnia nowy adres webhooka. Alternatywą jest wysyłka e-mailem lub przez Microsoft Graph.
Czy do automatycznych raportów potrzebny jest agent AI, czy wystarczy BI?
Jeśli wystarczą wykresy i tabele, dashboard w narzędziu BI albo zaplanowany raport PDF z Grafany w wersji Enterprise lub Cloud załatwi sprawę bez modelu językowego. AI przydaje się wtedy, gdy odbiorca potrzebuje komentarza: co się zmieniło, co jest nietypowe i czego dotyczy decyzja.
Jak sprawdzić, czy AI nie zmyśliło liczb w raporcie?
Najpewniej jest nie pozwolić modelowi wpisywać liczb. Model używa nazwanych miejsc, np. {przychod_tydzien}, a kod podstawia wartości i odrzuca tekst z nieznaną nazwą lub cyfrą spoza miejsc. Dodatkowo raport przegląda właściciel danych przed wysyłką szerszemu gronu.
Źródła
- Google for Developers: Google Analytics Data API
- Google for Developers: Search Console API, Search Analytics query
- Slack: Sending messages using incoming webhooks
- Microsoft 365 Developer Blog: Retirement of Office 365 connectors within Microsoft Teams
- Grafana Docs: Create and manage reports
- OWASP GenAI Security Project: LLM09 Misinformation
- Claude Code Docs: GitHub Actions (uruchamianie według harmonogramu)