Ubezpieczenia Intelligence System — Kontekst Projektu
Kim jest właściciel projektu
właściciel projektu — ekspert domenowy z branży ubezpieczeniowej (nie developer). Buduje system samodzielnie przy pomocy agentów AI (podejście Agentic SDLC). Posiada VPS na Hostingerze (Ubuntu 24.04, IP: 76.13.15.1).
Cel projektu
Zbudować system competitive intelligence dla polskiego rynku ubezpieczeń, który automatycznie zbiera, strukturyzuje i analizuje publicznie dostępne dane o rynku ubezpieczeniowym — produktach, towarzystwach, regulacjach i trendach.
Architektura — dwa komponenty
Komponent 1 — Intelligence Gathering (zbieranie danych)
- Działa w cyklach dziennych (automatycznie)
- Zbiera dane z wielu źródeł publicznych
- Przetwarza i strukturyzuje dane do bazy
- Zbudowany jako serwery MCP podłączone do Claude
Komponent 2 — Benchmarking & Reporting
- Dynamiczny dashboard
- Porównywanie towarzystw ubezpieczeniowych między sobą
- Generowanie raportów i prezentacji na żądanie
- Analiza trendów rynkowych
Zakres geograficzny
- Priorytet: Rynek polski (dane KNF, polskie TU, polski kontekst regulacyjny)
- Kontekst: Europa — wywiady z CFO europejskich grup (Allianz, AXA, Generali itp.) są istotne jeśli dotyczą działalności w Polsce lub trendów wpływających na PL
- Faza 1: Jakościowa struktura danych dla specyfiki rynku polskiego
Co system ma monitorować
1. Produkty i rynek
- Porównanie produktów różnych TU (zakresy, ceny, warunki)
- Trendy rynkowe (co się dzieje w branży)
- Nowe produkty i innowacje
2. Modele biznesowe towarzystw
- Model sprzedaży: agencyjny / multiagencyjny / direct / online / bancassurance
- Liczba agentów i OFWCA (Osoba Fizyczna Wykonująca Czynności Agencyjne)
- Wolumeny składki vs model dystrybucji
- Przewagi konkurencyjne
3. Dane finansowe i operacyjne
- Wyniki finansowe TU (składka przypisana brutto, szkodowość, wynik techniczny)
- Dane z raportów rocznych i kwartalnych
- Wypowiedzi CFO, CEO, dyrektorów w wywiadach (często ujawniają strategię)
4. Regulacje i nadzór
- Komunikaty i raporty KNF
- Raporty i analizy NBP
- Zmiany prawne wpływające na rynek
5. Opinie i rankingi
- Opinie klientów o towarzystwach
- Rankingi i porównania produktów
- Raporty PIU (Polska Izba Ubezpieczeń)
Źródła danych do monitorowania
YouTube / Wideo
- Wywiady z zarządami TU (CEO, CFO, dyrektorzy)
- Podcasty branżowe o ubezpieczeniach
- Konferencje i webinary branżowe
- Materiały edukacyjne o produktach
Instytucje regulacyjne
- KNF (knf.gov.pl) — komunikaty, raporty, dane statystyczne
- NBP (nbp.pl) — raporty o stabilności finansowej
- PIU (piu.org.pl) — statystyki rynku, raporty kwartalne
- Rzecznik Finansowy (rf.gov.pl) — skargi, raporty
Media i blogi
- Portale branżowe (gu.com.pl, nowości ubezpieczeniowe itp.)
- Wywiady prasowe z zarządami TU
- Blogi eksperckie
Podcasty (mp3 / audio)
- Podcasty branżowe o ubezpieczeniach (polskie i europejskie)
- Pobieranie przez RSS feed (metadane + opisy + linki)
- Pełna transkrypcja audio → tekst przez Whisper (OpenAI)
- Trzy podejścia techniczne:
- RSS feed — najłatwiejsze, daje metadane i opisy wszystkich odcinków
- Spotify/Apple Podcasts API — tylko metadane, bez treści audio
- Transkrypcja mp3 — pełna treść rozmowy, wymaga Whisper na VPS
- Priorytet: RSS + transkrypcja dla kluczowych podcastów branżowych
- Do uzupełnienia: lista konkretnych podcastów PL i EU do monitorowania
Dane towarzystw
- Raporty roczne i kwartalne TU
- Informacje prasowe TU
- Strony kariery TU (liczba agentów, struktura sprzedaży)
Główne towarzystwa do benchmarku (rynek PL)
Duże TU (liderzy rynku)
- PZU / PZU Życie
- Warta
- Ergo Hestia
- Allianz Polska
- Generali Polska
- Uniqa Polska
- TUiR Allianz
Średnie i rosnące
- Compensa
- Interrisk
- Wiener
- AXA (teraz Uniqa)
- Balcia
- Beesafe
- mtu24.pl
Grupy europejskie (kontekst dla PL)
- Allianz Group
- AXA Group
- Generali Group
- Vienna Insurance Group (VIG)
- Talanx / HDI
Frazy do monitorowania YouTube (do rozbudowania)
Regulacje i instytucje
- "KNF ubezpieczenia"
- "Komisja Nadzoru Finansowego ubezpieczenia"
- "PIU Polska Izba Ubezpieczeń"
- "Rzecznik Finansowy ubezpieczenia"
- "regulacje ubezpieczeniowe Polska"
Rynek i trendy
- "rynek ubezpieczeń Polska"
- "rynek ubezpieczeniowy Polska"
- "trendy ubezpieczenia Polska"
- "ubezpieczenia w Polsce raport"
- "składka ubezpieczeniowa Polska"
Produkty
- "ubezpieczenia komunikacyjne OC AC Polska"
- "ubezpieczenia na życie Polska"
- "ubezpieczenia majątkowe Polska"
- "ubezpieczenia zdrowotne Polska"
- "ubezpieczenia dla firm Polska"
Dystrybucja i modele sprzedaży
- "agent ubezpieczeniowy Polska"
- "multiagencja ubezpieczenia"
- "broker ubezpieczeniowy Polska"
- "direct ubezpieczenia online"
- "OFWCA ubezpieczenia"
- "bancassurance Polska"
Konkretne TU
- "PZU wyniki strategia"
- "Warta ubezpieczenia"
- "Ergo Hestia"
- "Allianz Polska"
- "Generali Polska"
Wywiady i konferencje
- "wywiad prezes ubezpieczenia Polska"
- "CFO ubezpieczenia Polska"
- "konferencja ubezpieczeniowa Polska"
- "Insurance Congress Poland"
Angielskie (europejski kontekst)
- "Allianz CFO interview"
- "AXA CEO strategy Europe"
- "Generali results Europe"
- "Vienna Insurance Group VIG results"
- "insurance market Poland"
- "CEE insurance market"
Stan techniczny projektu (aktualizuj na bieżąco)
Zrobione
- [x] Architektura systemu zaprojektowana
- [x] VPS Hostinger Ubuntu 24.04 — dostęp SSH działa
- [x] Python, pip, venv, nginx zainstalowane na VPS
- [x] Biblioteki MCP zainstalowane (mcp, httpx, pydantic)
- [x] Folder
/opt/youtube-mcputworzony - [x] Środowisko venv aktywowane
- [x] Klucz SSH (ed25519) wygenerowany i skonfigurowany dla root@76.13.15.1
- [x] Kompletny
server.py(MCP serwer YouTube) napisany i wgrany na VPS - [x] Klucz YouTube Data API v3 ustawiony jako zmienna środowiskowa
- [x] Usługa systemd
youtube-mcpskonfigurowana i uruchomiona (port 8000, SSE) - [x] mcp obniżony do wersji 1.x (FastMCP API) — 2.x zmienił API
- [x] Nginx skonfigurowany jako reverse proxy (sites-available/youtube-mcp)
- [x] Dashboard placeholder
/opt/insurance-dashboard/index.htmlutworzony - [x] Serwis
insurance-dashboard(nginx:alpine) dodany do docker-compose.yml - [x] Traefik skonfigurowany dla
intelligence.srv1298625.hstgr.cloudz HTTPS - [x] Repozytorium GitHub
KubaJurczyk1/insurance-intelligence-systemutworzone - [x] Dokumentacja MD (00-05) i server.py wgrane do repo (initial commit)
- [x] Intelligence Framework 7 warstw 150+ metryk (
06_INTELLIGENCE_FRAMEWORK.md) - [x] PostgreSQL 16 zainstalowany na VPS
- [x] Baza
insurance_intelligence+ użytkownikinsurance_userutworzone - [x] Schemat bazy — 13 tabel (core + 7 warstw), indeksy, 2 widoki, dashboard_views_config
- [x] Tabela
transcriptionsw bazie (raw_signal_id, language, full_text, segments JSONB, key_quotes, entities) - [x] MCP server.py: asyncpg — zapis do raw_signals po search_videos i search_insurance_market
- [x] Nowe narzędzie MCP:
youtube_get_transcript(youtube-transcript-api, fallback PL→EN, zapis do transcriptions) - [x] Graceful degradation — serwer działa nawet gdy baza niedostępna
- [x] Whisper Strategy zaprojektowana (
WHISPER_STRATEGY.md) - [x] Tabela
source_documentsw bazie (BYTEA pliki, metadata JSONB) - [x] MCP Server 2:
regulatory-mcpna porcie 8001 — aktywny (systemd) - [x] Narzędzia KNF:
knf_list_bulletins,knf_download_bulletin,knf_backfill_all - [x] Narzędzia IR:
tu_ir_discover,tu_ir_download - [x] Znane articleId KNF wbudowane (2021-2026, 11 biuletynów z Q-ID)
- [x] regulatory-mcp przetestowany end-to-end: knf_list_bulletins (14 biuletynów), knf_download_bulletin Q2/2026 (4 pliki xlsx, 190 KB), 4 rekordy w source_documents
- [x] Bug fix: sort NoneType w knf_list_bulletins (x.get() or 0 zamiast x.get(,0))
- [x] Bug fix: URL-encoding hasła DB w DSN (# w haśle Ins2026!PL#secure obcinał DSN)
Do zrobienia
- [ ] Uruchomić
knf_backfill_all— backfill historyczny biuletynów KNF do bazy - [ ] Skonfigurować workflow n8n (dzienny scheduler)
- [ ] Dodać flagę
transcription_statusdo tabeli transcriptions (pending/done/failed) - [ ] Podłączyć Custom Connector MCP do Claude.ai
- [ ] Zbudować Agent 2 Classifier (reguły + Claude API — w Claude.ai/Claude Code)
- [ ] Dashboard MVP z prawdziwymi danymi z bazy
Dane VPS
- Provider: Hostinger
- OS: Ubuntu 24.04.3 LTS
- IP: 76.13.15.1
- Użytkownik: root
- Ścieżka aplikacji: /opt/youtube-mcp
- Połączenie: ssh root@76.13.15.1
Metodologia budowania
Agentic SDLC — budowanie systemu z pomocą agentów AI. właściciel projektu jako ekspert domenowy definiuje wymagania i cel, Claude jako agent techniczny pomaga zaprojektować i zbudować rozwiązanie.
Narzędzia ekosystemu Claude
- Claude.ai — planowanie, projektowanie, prototypowanie
- Skills — wiedza domenowa o rynku ubezpieczeń PL
- Custom Connectors (MCP) — źródła danych (YouTube, KNF, NBP)
- Artifacts — prototypy dashboardu i raportów
- Claude Code — docelowe środowisko do budowania systemu
- Claude API — orkiestracja agentów, scheduler dzienny
Notatki i decyzje projektowe
- Zasada ekonomii: Wszystko co generuje koszty (tokeny) → Claude.ai/Claude Code na licencji Accenture. VPS → wyłącznie zadania bezkosztowe (hosting, DB, scheduler, proxy)
- Agent 2 Classifier działa w Claude.ai/Claude Code — nie jako cron na VPS
- MCP SDK: zainstalowana wersja 2.2.0 nie obsługuje FastMCP — obniżono do 1.x (
mcp==1.30.0). W 2.x FastMCP przemianowano na MCPServer - systemd EnvironmentFile:
/etc/environmentnie obsługuje słowaexport— klucze API wpisujemy bezpośrednio w sekcjiEnvironment=pliku.service - Frazy do monitorowania wymagają głębszej analizy domenowej przed zakodowaniem
- Opisy filmów YouTube zawierają często linki do raportów — wyłapywać i zapisywać
- System powinien wyciągać linki z opisów i automatycznie pobierać powiązane dokumenty
- Podcasty: priorytetowe źródło — eksperci mówią swobodniej niż w wywiadach pisanych
- Podcasty: architektura = RSS connector (metadane) + Whisper connector (transkrypcja mp3)
- Podcasty: lista konkretnych tytułów do ustalenia z właścicielem projektu (zna rynek)
- Pierwsza faza = jakościowa struktura danych dla rynku PL
- Druga faza = rozszerzenie na CEE i kontekst europejski
Walidacja architektury — refleksja Agile
Po zbudowaniu 7-warstwowego schematu bazy porównaliśmy nasze podejście z: (1) alternatywną propozycją architektury z innej konsultacji, (2) rynkowymi best practices dla platform Competitive Intelligence i sentiment analysis (research web 2026).
Kluczowe ustalenia
- NASZA ARCHITEKTURA JEST ZGODNA Z BEST PRACTICE — potwierdzone przez research rynkowy. Odpowiada wzorcowi Medallion Architecture (Bronze/Silver/Gold):
- BRONZE = source_documents (BYTEA, surowe pliki nieprzetworzone)
- SILVER = tabele w1-w7 (dane znormalizowane, wyczyszczone, typowane)
-
GOLD = widoki v_market_overview, v_tu_profile (biznesowo gotowe)
-
NASZA ARCHITEKTURA JEST TAŃSZA NIŻ RYNKOWY STANDARD. Typowa mała platforma CI kosztuje ~$140/miesiąc (Common Crawl + OpenAI embeddings $50 + Pinecone $70 + Notion $20). Nasza: $0/miesiąc — dzięki darmowemu VPS + licencji Claude Accenture zamiast płatnego OpenAI/Pinecone.
-
KRYTYCZNY BRAKUJĄCY ELEMENT ZIDENTYFIKOWANY: Warstwa Ekstrakcji jako jasno zdefiniowany, pierwszy-klasy krok pipeline'u. Mamy dziś: pliki w source_documents jako BYTEA (Bronze) — ZERO linii kodu które wyciąga z nich liczby. Potrzebujemy: generyczny mechanizm ekstrakcji (Claude API z promptem wymuszającym ustrukturyzowany JSON output) który działa dla KAŻDEGO typu źródła (XLSX, PDF, transkrypcja, artykuł) i zasila docelowe tabele w1-w7. To NIE jest sprzeczne z bogatym schematem 7 warstw — mechanizm ekstrakcji jest source-agnostic, tylko prompt się różni per typ dokumentu.
-
DO DODANIA: pgvector extension w PostgreSQL. Potwierdzone jako standard rynkowy (odpowiednik Pinecone w tańszych platformach CI). Umożliwi wyszukiwanie semantyczne po insightach: "co mówiono o cenach OC w ostatnim kwartale" bez znajomości dokładnych słów kluczowych.
-
ZASADA PRAWNA I JAKOŚCIOWA: Insights jako parafraza, nigdy cytaty 1:1. Transkrypcje YouTube i artykuły branżowe mogą być chronione prawem autorskim. Every insight zapisany do bazy musi być własnymi słowami Claude (parafraza), nie kopiowanym fragmentem — to jednocześnie ochrona prawna i zgodność z tym jak działają profesjonalne narzędzia (Wisers, Lexalytics ekstraktują "themes", nie cytaty).
-
FILOZOFICZNA ZASADA NADRZĘDNA: Intelligence nad zbieraniem danych. Cytat z researchu: dobra platforma CI nie tylko zbiera informacje — używa AI do wyjaśnienia "dlaczego" stoi za danymi. Sam fakt że mamy COR=89% dla PZU to tylko dana. Wartość zaczyna się gdy Claude odpowiada "dlaczego COR spadł, co to znaczy dla strategii, jak się ma do konkurencji". To musi kierować priorytetyzacją — nie gromadzić dane dla danych, ale budować ku insightom.
Priorytet na następną sesję — ZWALIDOWAĆ PRZED ROZBUDOWĄ
Zamiast kontynuować rozbudowę schematu 7 warstw, zrobić NAJMNIEJSZY MOŻLIWY PEŁNY PRZEBIEG (Agile — test i walidacja przed dalszą inwestycją):
KROK 1: Dodać pgvector extension do PostgreSQL na VPS (jedna komenda SQL: CREATE EXTENSION vector;)
KROK 2: Zbudować jeden pełny przebieg ekstrakcji na JEDNYM dokumencie który już mamy w bazie (KNF Q2/2026 część A, source_documents id=1): a. Pobrać BYTEA z source_documents, skonwertować do czytelnej formy (pandas dla XLSX) b. Przekazać do Claude (w rozmowie/Claude Code) z promptem wymuszającym JSON output ze schematem: {insurer_name, metric_name, value, unit, period_quarter, period_year, confidence} c. Zapisać wynikowy JSON do tabeli w1_market_position (lub odpowiedniej warstwy) d. Zweryfikować SELECT — czy dane są poprawne i sensowne
KROK 3: Jeśli KROK 2 działa — potwierdzić wzorzec i rozszerzyć na pozostałe 3 pliki KNF (części B/C/D) oraz na knf_backfill_all (wszystkie 14 kwartałów)
KROK 4: Zbudować tabelę insights (osobna od metrics) z polem embedding VECTOR dla pgvector, i regułą "parafraza nie cytat" wymuszoną w promptcie ekstrakcji
Ten test-first approach (Agile: build → test → validate → scale) ma pierwszeństwo przed jakąkolwiek dalszą rozbudową schematu czy dodawaniem nowych źródeł danych.