Przejdź do treści

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-mcp utworzony
  • [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-mcp skonfigurowana 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.html utworzony
  • [x] Serwis insurance-dashboard (nginx:alpine) dodany do docker-compose.yml
  • [x] Traefik skonfigurowany dla intelligence.srv1298625.hstgr.cloud z HTTPS
  • [x] Repozytorium GitHub KubaJurczyk1/insurance-intelligence-system utworzone
  • [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żytkownik insurance_user utworzone
  • [x] Schemat bazy — 13 tabel (core + 7 warstw), indeksy, 2 widoki, dashboard_views_config
  • [x] Tabela transcriptions w 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_documents w bazie (BYTEA pliki, metadata JSONB)
  • [x] MCP Server 2: regulatory-mcp na 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_status do 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/environment nie obsługuje słowa export — klucze API wpisujemy bezpośrednio w sekcji Environment= 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

  1. NASZA ARCHITEKTURA JEST ZGODNA Z BEST PRACTICE — potwierdzone przez research rynkowy. Odpowiada wzorcowi Medallion Architecture (Bronze/Silver/Gold):
  2. BRONZE = source_documents (BYTEA, surowe pliki nieprzetworzone)
  3. SILVER = tabele w1-w7 (dane znormalizowane, wyczyszczone, typowane)
  4. GOLD = widoki v_market_overview, v_tu_profile (biznesowo gotowe)

  5. 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.

  6. 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.

  7. 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.

  8. 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).

  9. 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.