nordabiz/docs/PLAN_EXTERNAL_EVENTS_AND_AI_MATCHING.md
Maciej Pienczyn e0e145c70f
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
feat(rss): add public RSS feeds for KIG integration
Three public feeds: /feed/events.xml (upcoming events),
/feed/news.xml (announcements), /feed/pej.xml (nuclear news).
RSS 2.0 format with KIG custom fields (thumbnail, datawydarzenia).
RSS discovery links added to base.html head.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 10:03:11 +01:00

6.7 KiB

Plan: Wydarzenia zewnętrzne w kalendarzu + AI matching

Status: KONCEPT (do zatwierdzenia) Data: 2026-03-19 Kontekst: Mail od ARP (Broker Eksportowy) z wydarzeniami dla MŚP, przekazany przez biuro Nordy (Magda Klóska). Współpraca z KIG (feedy RSS).


Problem

Biuro Nordy regularnie dostaje maile z wartościowymi wydarzeniami od partnerów (ARP, KIG, urzędy, inne izby). Targi, seminaria, szkolenia, webinary — treści istotne dla firm członkowskich. Dziś giną w skrzynkach mailowych.

Rozwiązanie

Jeden kalendarz z wyraźnym podziałem na wydarzenia Nordy i zewnętrzne, z filtrowaniem, systemem zainteresowań i AI-dopasowaniem.


Faza 1: Wydarzenia zewnętrzne w kalendarzu

Model danych

Rozszerzenie NordaEvent o 3 pola:

Pole Typ Opis
is_external Boolean (default False) Czy wydarzenie pochodzi z zewnątrz
external_url String(1000) Link do rejestracji u organizatora
external_source String(255) Nazwa źródła (np. "Agencja Rozwoju Pomorza")

Wyróżnienie wizualne

Widok siatki (grid):

  • Nowy kolor dla zewnętrznych — szary lub jasnopomarańczowy, wyraźnie "cichszy" od kolorów wydarzeń Nordy

Widok listy:

  • Badge "ZEWNĘTRZNE" (szary) przy tytule
  • Nazwa źródła pod tytułem (np. "Źródło: Agencja Rozwoju Pomorza")
  • Lekko wyciszona oprawa wizualna

Legenda kalendarza — rozszerzona o nowy typ

Filtrowanie

Toggle u góry strony kalendarza: "Pokaż wydarzenia zewnętrzne" (domyślnie włączony). Jedno kliknięcie — zewnętrzne znikają, zostają tylko wydarzenia Nordy. Ustawienie zapamiętywane w localStorage.

"Jestem zainteresowany" zamiast "Zapisz się"

Aspekt Wydarzenia Nordy Wydarzenia zewnętrzne
Przycisk "Zapisz się" (zielony) "Jestem zainteresowany/a" (szary/niebieski)
Znaczenie Deklaracja udziału Wyrażenie zainteresowania, bez zobowiązań
Lista osób "Uczestnicy (12)" "Zainteresowani (3)"
Limit miejsc Tak (max_attendees) Nie
Rejestracja Na portalu Link zewnętrzny
Wartość Wiem kto idze Widzę kto się interesuje — mogę się dogadać

Technicznie: ta sama tabela event_attendees. Dla zewnętrznych eventów status='confirmed' oznacza "zainteresowany". Rozróżnienie na poziomie UI.

Strona szczegółów wydarzenia zewnętrznego

Podobna do obecnej, z kluczowymi różnicami:

  1. Banner "Wydarzenie zewnętrzne" z nazwą źródła/organizatora
  2. Lokalizacja z linkiem do Google Maps — obecny kalendarz już to robi automatycznie (auto-link jeśli adres nie jest "Online" ani "do ustalenia"). Dla zewnętrznych wydarzeń to szczególnie ważne — użytkownik od razu widzi jak daleko to jest.
  3. Prominentny przycisk "Przejdź do rejestracji →" — link do strony organizatora, wyróżniony wizualnie (duży, kolorowy), widoczny bez scrollowania
  4. Dane kontaktowe organizatora — email, telefon (jeśli dostępne) — wyświetlane wprost na stronie wydarzenia, bez konieczności przechodzenia na zewnętrzną stronę
  5. Koszt uczestnictwa — jeśli znany (np. "bezpłatne", "35 000 PLN brutto z dofinansowaniem 85%")
  6. Sekcja "Zainteresowani" zamiast "Uczestnicy"
  7. Eksport ICS — opcjonalny (data i miejsce są znane)

Automatyczne wyciąganie danych ze stron zewnętrznych

Zweryfikowano (2026-03-19): Strony brokereksportowy.pl pozwalają na automatyczną ekstrakcję:

  • Tytuł, data, godzina
  • Pełny adres (np. "Olivia Centre, Al. Grunwaldzka 472D, 80-309 Gdańsk")
  • Sposób rejestracji (formularz, email, telefon, deadline)
  • Koszt / dofinansowanie
  • Organizator

Możliwy workflow admina:

  1. Admin wkleja URL zewnętrznego wydarzenia
  2. System (AI) automatycznie wyciąga: tytuł, datę, lokalizację, opis, dane rejestracji, koszt
  3. Admin weryfikuje i zatwierdza — ewentualnie poprawia
  4. Oszczędność: z 5-10 minut ręcznego przepisywania → 30 sekund

Formularz admina

Rozszerzenie istniejącego formularza o:

  • Checkbox "Wydarzenie zewnętrzne" — po zaznaczeniu:
    • Pole "URL źródła" (link do strony wydarzenia) + przycisk "Pobierz dane" (AI)
    • Pole "Link do rejestracji" (może być inny niż URL źródła)
    • Pole "Źródło / Organizator zewnętrzny"
    • Pole "Koszt uczestnictwa" (opcjonalne, tekst)
    • Pole "Kontakt do organizatora" (email, telefon)
    • Ukryty limit miejsc (nieistotny dla zewnętrznych)

Faza 2: AI matching wydarzeń do profili firm

Dane do matchingu (już w systemie)

Dane w profilu firmy Użycie
Kategoria (IT, Construction, Services...) Główny filtr branżowy
Opis firmy Szczegółowe dopasowanie tematyczne
Usługi Dopasowanie do typu wydarzenia
Słowa kluczowe Precyzyjny matching
Zainteresowania PEJ (widoczność ZOPK) Dopasowanie do wydarzeń obronnych/energetycznych

Mechanizm

  1. Przy dodaniu wydarzenia — Gemini generuje "profil wydarzenia": branże, słowa kluczowe, typ firmy docelowej
  2. Matching — porównanie profilu wydarzenia z profilami firm (kategoria + opis + usługi)
  3. Wynik — lista par (wydarzenie → firma, score) przechowywana w bazie
  4. Koszt — jedno wywołanie Gemini per wydarzenie (nie per logowanie)

Gdzie pokazywać sugestie

Miejsce Co widać
Kalendarz — sekcja "Sugerowane dla Ciebie" u góry 2-3 najbardziej dopasowane wydarzenia
Profil firmy (widok właściciela) "Nadchodzące wydarzenia powiązane z Twoją branżą"
Powiadomienie (bell icon) "Nowe wydarzenie może Cię zainteresować"

Wyjaśnienie dopasowania

Przy każdej sugestii krótki tekst: "Pasuje do: Construction, Local Content" — użytkownik rozumie logikę.


Faza 3: Sugestie i powiadomienia

  • Powiadomienia przy nowych wydarzeniach dopasowanych do profilu
  • "3 firmy z Twojej branży są zainteresowane tym wydarzeniem"
  • Agregacja zainteresowań w profilu użytkownika/firmy

Powiązanie z KIG

Dwukierunkowy przepływ:

  • Nordabiznes → KIG: Feedy RSS z wydarzeniami Nordy (Faza osobna, patrz PLAN_KIG_RSS)
  • KIG → Nordabiznes: Gdy KIG i inne izby uruchomią RSS, możemy automatycznie importować ich wydarzenia jako zewnętrzne

Kolejność wdrożenia

  1. Faza 1 — wydarzenia zewnętrzne + filtr + "jestem zainteresowany" + auto-ekstrakcja z URL
  2. Faza 2 — AI matching do profili firm
  3. Faza 3 — powiadomienia i sugestie w UI

Każda faza jest niezależna i daje wartość sama w sobie.


Przykładowe źródła wydarzeń zewnętrznych

  • Agencja Rozwoju Pomorza (brokereksportowy.pl)
  • Krajowa Izba Gospodarcza (kig.pl)
  • Urząd Miasta Wejherowo
  • Inne izby gospodarcze (via RSS w przyszłości)
  • PARP, NCBiR, inne agencje rządowe