HackNation – nowy gracz wagi ciężkiej na mapie hackathonów

Kształt kółka
Kształt półkola
Ksztalt koła dekoracyjny
HackNation – nowy gracz wagi ciężkiej na mapie hackathonów

HackNation – nowy gracz wagi ciężkiej na mapie hackathonów

Kojarzycie HackYeah? Na pewno kojarzycie! Jeśli jesteście stałymi obserwatorami naszych social mediów, to wiecie zapewne, że członkowie Solvro już dwukrotnie (z rzędu!) zwyciężyli w tym prestiżowym hackathonie. Organizatorzy tego wydarzenia postanowili podnieść poprzeczkę organizacyjną jeszcze wyżej. W taki sposób narodził się “HackNation” - hackathon wdrożeniowy, w którym oprócz napisanych tysięcy linijek kodu, obecne były liczne atrakcje dodatkowe, wiele znanych twarzy i ogromna pula nagród.

Jako Koło Naukowe Solvro, podobnie jak na HackYeah!, pełniliśmy podwójną rolę - byliśmy partnerem promocyjnym , a także konwencjonalnymi uczestnikami, wystawiając aż trzy drużyny. Strategie każdej z nich były różne - niektórzy postawili na rozwój projektów w kilku kategoriach, by zwiększyć swoje szanse na dostanie się do finału w przynajmniej jednej z nich, inni skupili się na dogłębnym rozwoju wyłącznie jednego rozwiązania, by przez kolejne 24 godziny podnieść jego jakość do granic programistycznych możliwości.

Czym właściwie jest hackathon „wdrożeniowy”?

Dlaczego ten hackathon był “wdrożeniowy”? W kole zazwyczaj używamy tego terminu do określenia wewnętrznego wydarzenia programistycznego, wdrażającego nowych członków w pracę koła lub projektu. W przypadku HackNation takie skojarzenie byłoby bardzo mylące. Określenie mianem “wdrożeniowego” wzięło się stąd, że zaprezentowane rozwiązania faktycznie mają zostać wdrożone w instytucjach, które były autorami zadań. Każde z hackathonowych wyzwań było proponowane przez różne organizacje rządowe i miały służyć rozwiązaniu realnych problemów. Dzięki temu zwycięzcy wybranych kategorii nie tylko stali się bogatsi o 25 tysięcy złotych, ale również dostalimożliwość współpracy z daną instytucją w zakresie rozwoju opracowanej technologii.

Wyzwania były bardzo różnorodne i wymagały wielu niekonwencjonalnych umiejętności. Wśród nich znalazły się takie, które wymagały wyłącznie działającego modułu, który mógłby być użyty w kodzie większej aplikacji rządowej, inne zakładały stworzenie pełnej aplikacji fullstackowej. Wyzwania obejmowały tworzenie RAGów, eksperymenty z widzeniem komputerowym, web scraping, implementację algorytmów uczenia maszynowego oraz tworzenie kompletnych systemów webowych zgodnych z bardzo ścisłymi wymaganiami.

Total Controller: Jak uszczelniliśmy hazard w 24h

Jedną z wystawionych drużyn był teamek o wdzięcznej nazwie “Total Solvro” (nigdy nie zgadniecie, jakie słowa były syntezą tej nazwy drużyny). Przez 24 godziny pracowali oni wyłącznie nad jednym projektem, o równie chwytliwej nazwie “Total Controller” w ramach kategorii “Kontrola Zakładów Wzajemnych”. Wbrew nazwie, aplikacja nie miała nic wspólnego z najpopularniejszym (i de facto jedynym legalnym) kasynem w Polsce, a tytułowa kontrola dotyczyła ośmiu zarejestrowanych stron prowadzących zakłady wzajemne.

Problemem, z którym mierzyła się Krajowa Administracja Skarbowa, była konieczność manualnej kontroli tego typu organizacji, co jest wolne, nieefektywne i ograniczone wyłącznie do godzin pracy urzędnika. W związku z tym po godzinie 16:00, kiedy każdy urzędnik skończył już pracę, wszystkie niepożądane zmiany na stronach organizacji oferujących zakłady, mogły umknąć czujnej uwadze KAS.

W ramach wyzwania mieliśmy sprawdzić zgodność oferowanych zakładów z regulaminem, przeskanować stronę w poszukiwaniu agresywnego marketingu lub linków do niezatwierdzonych przez KAS stron z zakładami oraz sprawdzić, czy strona oferuje dokładnie taki typ zakładów, na jaki otrzymał pozwolenie. Dużą część wyzwania stanowiło zdobycie wiedzy domenowej, co KAS ułatwiło nam, przesyłając link do NotebookLM, zawierającego zweryfikowaną wiedzę w temacie polskiego prawa dotyczącego zakładów wzajemnych.

Tech Stack: Django, Playwright i walka z czasem

Mimo, że frameworki Pythonowe nie zostały wyszczególnione w wymaganiach projektu (sugerowane były .NET lub Node.js), tak niemal natychmiastowo zdecydowaliśmy się na użycie w projekcie frameworka Django. Dzięki temu łatwo zintegrowaliśmy moduły niezbędnego w tym projekcie web scrapingu przy użyciu bibliotek Playwright oraz BeautifulSoup. Frontend stanął niezmiennie na frameworku Next.js, jak zdecydowana większość solvrowych projektów.

W ramach aplikacji należało zescrapować wszystkie regulaminy, linki oraz treść samych zakładów. Oczywiście ze względu na to, że strony dynamicznie ładowane przez JavaScript nie mogą być pobierane przez BeautifulSoup, należało wspomóc się również biblioteką renderującą całą przeglądarkę, a ze względu na automatyczne czekanie i większą wydajność działania, spomiędzy Selenium a Playwrightem zdecydowano się właśnie na Playwrighta. Naszą aplikację rozbudowano także o wyszukiwanie nielegalnych ogłoszeń reklamujących niedozwolone strony z zakładami, przy użyciu słów kluczowych i klasycznych regexów. Ponadto całość należało zintegrować z niewielkim (w naszym przypadku dokładnie 13B) modelem LLM, celem automatycznego rozumienia kontekstu regulaminów i wyszczególnienia z nich słów kluczowych w ustandaryzowanej formie (oraz, analogicznie, w przypadku treści strony).

Img 9736

Rozdział zadań w drużynie był dość płynny, ale obserwując pracę każdego z członków zespołu, można było wyszczególnić czytelny podział ról:

  • Marvin Ruciński - Backend Developer i Pitch

  • Antoni Czaplick - Fullstack Developer i DevOps Engineer

  • Maciej Król - Frontend Developer

  • Amelia Sroczyńska - Project Manager i UI/UX Designer

  • Jakub Morawiec - Data Engineer i Pitch

  • Piotr Wojdas - Data Engineer

Ciekawostką jest fakt, że wszystkie wymienione tu osoby, poza Marvinem, pierwszy raz brali udział w hackathonie. Lepszego debiutu nie mogliśmy sobie wymarzyć!

UX/UI: Dashboard, który zrozumiesz w 3 sekundy

Aplikacja stanowiła w pełni automatyczny orkiestrator. Rozmawiając z innymi finalistami, pozostałe drużyny zdecydowały się na stworzenie opcji półautomatycznych, gdzie akcję sprawdzania strony należy wywołać ręcznie. My z kolei chcieliśmy podkreślić użyteczność aplikacji poza godzinami funkcjonowania urzędów. Ograniczenie czasu urzędnika wyłącznie do 16-stej zdawało nam się być największym pain pointem w obecnym rozwiązaniu i naprawienie tego problemu potraktowaliśmy priorytetowo. Orkiestrator uruchamiał się automatycznie co wyznaczony czas (u nas co 15 minut), a skanowanie wszystkich stron zajmowało  około 10 minut (15 to więc bezpieczny limit, żeby serwer nie obsługiwał ogromnej kolejki żądań). Efektem końcowym był czytelny dashboard, wzorowany na tych z PowerBI (ale za sprawą Amelii, Maćka i Antka znacznie ładniejszy niż PowerBI), który stanowił czytelny kokpit dla pracownika KAS. Przy projektowaniu kierowaliśmy się zasadą 3-30-300, w myśl której wszystkie najważniejsze elementy (a w tym wypadku - informacja o tym, czy wystąpiły nieprawidłowości) są widoczne w pierwsze trzy sekundy, kolejne informacje da się przeanalizować w ciągu 30 sekund, a dostęp do wszystkich szczegółów powinien być możliwy do analizy w 300 sekund. Jury doceniło nasz pomysł i pierwszy etap zakończyliśmy z drugim najlepszym wynikiem punktowym.

Pitching: Lekcja pokory i improwizacji

Subiektywnie najważniejszą częścią każdego hackathonu jest pitch, czyli krótka prezentacja wygłoszona przed jury przez wyróżnione zespoły. Podczas oczekiwania na pitch, jak i również po powrocie z niego, wymienialiśmy się pomysłami z pozostałymi finalistami w naszej kategorii. Liczyliśmy, że w naszej prezentacji wykorzystamy przewagę w postaci wyróżniających się umiejętności publicznych wystąpień (wiem, bardzo nieskromnie o sobie napisałem), jury zaskoczyło nas jednak oczekiwaną formą wystąpienia. Zamiast przedstawienia przygotowanej prezentacji w Figmie, poproszono nas o live demo pokazujące konkretny przypadek użycia. Ciężko ukryć, że pokrzyżowało to nasze plany osiągnięcia przewagi przez wykorzystanie sprawnych umiejętności sprzedażowych i wyjątkowo estetycznie wykonanej przez Amelię prezentacji, nie mniej improwizując, wypadliśmy raczej dobrze. Mimo to nie było to wystarczające do zajęcia pierwszego miejsca. Po pitchu mieliśmy okazję przez dłuższy czas porozmawiać z przyszłymi zwycięzcami i pokazaliśmy wzajemnie swoje projekty. Rywalizacja była bardzo zawzięta i obie drużyny stwierdziły, że walka o pierwsze miejsce rozstrzygnie się między nami, a jakość zaprezentowanych rozwiązań jest bardzo podobna. Jury doceniło bardziej pracę naszych konkurentów i, w naszej ocenie, jest to bardzo zasłużona wygrana. Serdecznie gratulujemy!

Img 9749

Wyjątkowa atmosfera wydarzenia

Trzeba przyznać, że od razu po wejściu do Bydgoskiego Centrum Targowo - Wystawienniczego, gdzie odbywał się hackathon - widać było, że całość jest zorganizowana z ogromnym przytupem. Wydarzenie ze sceny prowadziła Katarzyna Więsiarska, która pełniła nie tylko rolę hosta i twarzy tegorocznej edycji, ale również udzieliła wielu cennych rad przed pitchem w oparciu o swoje doświadczenie związane z wystąpieniami publicznymi. Podczas wydarzenia pojawiało się także wiele atrakcji dodatkowych, w tym kilka merytorycznych wykładów (choć nie jesteśmy w stanie powiedzieć, o czym były, bo byliśmy zbyt pochłonięci kodowaniem), quiz wiedzy ogólnej z nagrodami czy nawet… wspólne tańczenie Belgijki o północy. Trzeba przyznać, że nawet, jeśli ktoś nie przyszedł tam z myślą o wielkiej wygranej, organizatorzy dołożyli wszelkich starań, by przeżycie było niezapomniane. Ponadto na wydarzenie zostały zaproszone jedne z najważniejszych osób ze świata obecnej polityki - Minister Cyfryzacji Krzysztof Gawkowski oraz Minister Spraw Zagranicznych Rafał Sikorski, którzy uczestniczyli przy wręczaniu nagród za pierwsze miejsce w każdej kategorii.

Dziękujemy bardzo GovTech Polska za to niezapomniane przeżycie i możliwość objęcia patronatem tego wydarzenia. Do zobaczenia za rok w Bydgoszczy i życzmy sobie, by tym razem wrócić do Wrocławia nie tylko z podium, ale i z pierwszym miejscem.

Awatar Jakub Morawiec

Jakub Morawiec

Head of Promo 24/25

Pasjonat pracy kreatywnej, od pisania artykułów po obróbkę wideo. Wieloletni działacz społeczny w Samorządzie WITa i Social Media Specialist dla Solvro.

Paradox Call To Action Image
Paradox Shape Image

Dołącz do naszej ekipy!

Skontaktuj się

DołączDołącz