← Ripperdoc
Dossier · Tomasz Mroczyński

Tomasz Mroczyński

Buduję rozwiązania, które wzmacniają człowieka.

Wchodzę w technologię nie z dyplomu, lecz z potrzeby zbudowania czegoś od nowa. Dekada pracy technicznej — sieci, CCTV, helpdesk, wdrożenia — a potem jedenaście lat w dystrybucji, przez które technologia była tym, co robiłem po godzinach. Dziś jest tym, co robię: AI, automatyzacja i systemy self-hosted.

01Punkt zwrotny

Przez dekadę pracowałem w rolach technicznych — sieci komputerowe, systemy bezpieczeństwa, wdrożenia i wsparcie techniczne. Potem przyszło jedenaście lat w dystrybucji i to jest ta część życiorysu, w której technologia nie była moim stanowiskiem pracy. Była tym, co robiłem po godzinach — zwłaszcza po osiedleniu się w Norwegii: uczyłem się, budowałem własne projekty, eksperymentowałem z backendem, self-hostingiem i integracjami API. Równoległa ścieżka, która w końcu stała się tą główną.

W 2025 zacząłem pracę jako kierowca ciężarówki, kończąc kurs kategorii C. Miesiąc później poważny wypadek przy pracy zakończył tę drogę. Zamiast traktować to jak porażkę, uczyniłem z tego punkt zwrotny — moment, by świadomie zamienić wieloletnią pasję w kierunek zawodowy.

To nie jest skok w nieznane — to kontynuacja zainteresowania, które rozwijam od lat. Ukończyłem bootcamp backend .NET w Noroff, a dziś buduję projekty, automatyzacje i systemy oparte na AI oraz pracuję bezpośrednio z infrastrukturą self-hosted, Dockerem i integracjami API. Uczę się przez budowanie — i teraz robię to świadomie, jako ścieżkę zawodową.

02Projekty

Dwa z poniższych systemów powstały na zlecenie: Sammen i Norge i Limes Dekor. Pozostałe zbudowałem na własne potrzeby i rozwijam w codziennym użyciu albo w zamkniętych testach. Przy każdym podaję rzeczywisty status, użytkowników i możliwy do sprawdzenia dowód działania — jeżeli odnośnika nie ma, znaczy to, że nie mam czego pokazać, a nie że zapomniałem.

  1. u klienta
    Projekt dla organizacji

    Sammen i Norge / SiN Studio

    Trójjęzyczny serwis stowarzyszenia w Drammen, rozwinięty z wizytówki w system wspierający zarządzanie: projekty, wydarzenia, wolontariat, członkostwo i własny CMS z rolami.

    Moja rola: Autor pierwotnego serwisu i całej dalszej rozbudowy — od wizytówki po system wspierający zarządzanie organizacją: architektura informacji, UX/UI, model treści i uprawnień, implementacja, migracja danych, wdrożenie i rozwój.

    Next.js 16React 19Payload CMS 3PostgreSQL / SupabaseVerceli18n

    Użytkownicy: zarząd, koordynatorka i zespół SiN oraz odbiorcy organizacji · Strona projektu: www.sammeninorge.no/pl

  2. w budowie

    Limes Dekor

    Sklep, zamówienia, płatności i pliki produkcyjne dla pracowni z produktami wycinanymi laserowo. Ten sam renderer składa podgląd dla klienta i finalny plik SVG.

    Moja rola: Proces, architektura, interfejs, implementacja i wdrożenie — całość po mojej stronie.

    Limes Dekor to firma mojej partnerki. Zlecenie i jego zakres są prawdziwe, ale to nie jest referencja niezależna — nie sprawdzisz jej u kogoś, kto nie ma ze mną nic wspólnego.

    Next.js 16ReactPrismaSupabase/PostgreSQLSVGStripeDocker

    Użytkownicy: klient komercyjny — właścicielka Limes Dekor · Strona projektu: dekor.limes-interior.no

  3. w użyciu

    Ripper Inject

    System nauki zamieniający dokument w kurs: słownictwo, ćwiczenia i powtórki SM-2, z kontrolą wierności wyłapującą zdania, na które model nie miał pokrycia w źródle.

    Next.js 16TypeScriptDrizzleSupabaseOpenAI API

    Użytkownicy: autor + zamknięta grupa testerów · Strona projektu: ripperdoc.ai/no/ripper-inject

  4. koncepcja

    Ripper Task Force

    Agenci dzielący zadanie i prowadzący je bez rozstrzygania przez człowieka w trakcie; człowiek dostaje wynik, nie przerwania.

    TypeScriptMCPzod

    Użytkownicy: autor · Strona projektu: ripperdoc.ai/no/ripper-task-force

  5. w użyciu

    Ripper Brainstorm

    Kilka modeli od różnych dostawców omawia tę samą sprawę, a model neutralny szuka wspólnych, nienazwanych założeń — zgoda dwóch modeli nie jest dowodem.

    TypeScriptmulti-provider LLM

    Użytkownicy: autor · Strona projektu: ripperdoc.ai/no/ripper-brainstorm

  6. koncepcja

    Ripper Body Sync

    Sesje VR z Meta Quest 3 połączone z danymi zdrowotnymi w jeden obraz, analizowane przez prywatny model trenera. Self-hosted, bo dane zdrowotne są wrażliwe.

    KotlinJetpack ComposeMCPMeta Quest 3

    Użytkownicy: autor · Strona projektu: ripperdoc.ai/no/ripper-body-sync

  7. w użyciu

    ripperdoc.ai

    Ta strona. Trójjęzyczna, z modułem poszukiwania pracy za logowaniem: zbiera ogłoszenia, szereguje je, ocenia względem profilu i pisze szkice aplikacji.

    Next.jsTypeScriptPostgreSQLMCPVercel

    Użytkownicy: autor · Strona projektu: ta strona

03Warsztat

Co sprawdzi się w jednym projekcie, wyciągam do wspólnej biblioteki — jako moduł albo małe narzędzie. Kolejne wdrożenie nie zaczyna się wtedy od pustej strony: gotowy kawałek jest jednocześnie punktem wyjścia i kontekstem, na którym opieram nowe rozwiązanie. Każdy następny system powstaje szybciej i ze sprawdzonych części.

Publicznie: mój fork serwera MCP dla finn.no — limitowanie żądań, ograniczenie rozrostu bazy i awaryjny odczyt ogłoszeń, gdy serwis przestał wysyłać dane strukturalne. Wraz z pull requestem do autora oryginału. github.com/tomaszmroczynski/finn-mcp

04Co potrafię

Łączę technologię, projektowanie i praktyczne podejście do rozwiązywania problemów. Tworzę aplikacje i automatyzacje, które nie kończą się na dobrze wyglądającym interfejsie — mają usprawniać pracę i prowadzić do konkretnego rezultatu.

Potrafię przeprowadzić pomysł przez cały proces: od koncepcji i projektu, przez aplikację, bazę danych oraz integracje, aż po uruchomienie rozwiązania na własnej infrastrukturze.

Pracuję z technologiami webowymi, AI, automatyzacją i systemami opartymi na wiedzy. Łączę je również ze światem fizycznym — personalizacją produktów, grafiką, modelowaniem i drukiem 3D.

Moją mocną stroną jest patrzenie na projekt jako na całość. Szybko uczę się nowych narzędzi, szukam prostszych sposobów działania i potrafię połączyć elementy z różnych dziedzin w jeden spójny, działający system.

Next.jsFastAPINode.jsASP.NETPostgreSQLSupabaseRAGDockerIntegracje APIAutomatyzacje n8nOrkiestracje wielomodeloweAI workflowsCodexClaude Code

Kod, który da się otworzyć: fork serwera MCP dla finn.no github.com/tomaszmroczynski/finn-mcp

05Doświadczenie

  1. 2025 – dziś

    Praca własna — Ripperdoc · Ripperdoc

    Projektowanie i budowa systemów opartych na AI, automatyzacji i integracjach — systemy własne oraz zlecenia dla klientów (Limes Dekor, Sammen i Norge).

  2. 03–04/2025

    Kierowca ciężarówki · Transport Service AS

    Krótki rozdział zakończony wypadkiem przy pracy — początek świadomego zwrotu ku technologii.

  3. 09/2024 – 03/2025

    Przerwa w zatrudnieniu ·

    W tym okresie bez pracy zarobkowej.

  4. 2013 – 2024

    Dystrybucja · Amedia AS

    Stała praca przy dystrybucji, prowadzona równolegle z nauką technologii i własnymi projektami. Od 2021 do 2024 równocześnie przewodniczący koła Fellesforbundet: reprezentowanie pracowników w negocjacjach z pracodawcą w sprawach wynagrodzeń i warunków pracy.

  5. 2009 – 2011

    Sprzedaż i wdrożenia · PTC Security Systems

    Wdrażanie systemów biometrycznej identyfikacji, pozyskiwanie klientów w sektorze publicznym i prywatnym, współpraca z programistami i koordynacja zespołu.

  6. 2002 – 2012

    Własna działalność · Complet Tomasz Mroczyński

    Instalacja i konfiguracja sieci komputerowych oraz serwis komputerowy — cały łańcuch od klienta po utrzymanie.

  7. 2002 – 2006

    Sprzedaż i wsparcie techniczne · Strawford

    Wdrożenia CCTV, instalacja sieci LAN, IT helpdesk, serwis i szkolenia.

06Wykształcenie

  1. 2021 – 2022

    Noroff — szkoła technologii i mediów cyfrowych

    Backend Web Development (.NET).

  2. 2002 – 2006

    Uniwersytet Gdański

    Ekonomia, specjalizacja: analityk.

07Jak prowadzę pracę

Nie piszę tego wszystkiego sam. Pracuję z modelami tak, jak pracowałbym z zespołem specjalistów: stawiam problem, słucham propozycji i rozstrzygam — razem z kosztem rozstrzygnięcia. Wartość nie leży w tym, kto szybciej pisze kod. Leży w tym, kto zadaje właściwe pytanie i kto mówi „nie" — również sobie.

Jestem monotropowy. Moja uwaga nie rozkłada się po kilku sprawach naraz — zbiera się w jednej i schodzi w nią do dna. To profil neuroróżnorodny i mówię o nim wprost, bo jest najmocniejszą rzeczą, jaką wnoszę do pracy: zdolnością zejścia głębiej, niż sięga zwykła ciekawość, i pozostania tam, aż problem ustąpi.

Stąd „monotropowy generalista". Szerokość wzięła się z kolejnych zejść na dno, nie z próbowania wszystkiego po trochu. Najpierw sieci, systemy bezpieczeństwa i wdrożenia. Potem jedenaście lat pracy, przy której technologia była tym, co robiłem po godzinach. Teraz AI. Za każdym razem jedna rzecz, długo i całym sobą — i za każdym razem zostaje warsztat, który przenosi się dalej.

Jak z tego korzystać: dać mi problem, a nie listę zadań. Jeden priorytet zamiast pięciu równoległych, całe bloki czasu i kontekst na piśmie. Wtedy dostajesz rzecz rozwiązaną u podstawy i nową dziedzinę opanowaną szybciej, niż zakładałeś. Dzień posiekany na spotkania i pięć równoległych wątków marnuje dokładnie tę cechę, po którą się po mnie sięga.

Usuwamy tarcie administracyjne, zachowujemy tarcie refleksji.

Z zapisu rady projektowej, 18 czerwca 2026 — korekta własnego założenia
Protokół decyzji4 wpisy · prowadzący: TM
PytanieRipper Brainstorm
2026-06-18

Co należy do rdzenia produktu, a co jest dodatkiem?

Spór

Przy każdej propozycji rozbudowy wracała ta sama dyskusja, rozstrzygana za każdym razem od nowa.

Pytam

Czy produkt traci integralność albo tożsamość, gdy to usuniesz? Jeśli bez tego działa w pełni — to rozszerzenie, opcjonalne i domyślnie wyłączone.

Koszt · krótsza lista funkcji w rdzeniu. Zysk: kryterium, które rozstrzyga także beze mnie.

KorektaRipper Brainstorm
2026-06-18

Czy zgoda dwóch modeli jest dowodem, że mają rację?

Założenie domyślne

Gdy dwa niezależne modele dochodzą do tego samego wniosku, sprawa jest rozstrzygnięta. Tak działa większość rozwiązań wielomodelowych: zgodność traktują jako wynik.

Koryguję

Zgoda bywa pozorna. Oba głosy mogą milcząco przyjąć to samo błędne założenie i zgodzić się właśnie dlatego, że dzielą ten sam ślepy punkt. Neutralny model dostał więc zadanie wskazywania nie tylko różnic, ale przede wszystkim WSPÓLNYCH, NIENAZWANYCH ZAŁOŻEŃ — i zamieniania ich w pytania kontrolne, zakotwiczone w konkretnym fragmencie wypowiedzi.

Konsekwencja

Dlatego głosy muszą pochodzić od różnych dostawców. Dwa uruchomienia tego samego modelu dzielą dane treningowe i te same błędy systematyczne — ich zgoda nie znaczy nic.

Koszt · dodatkowa tura i trzecia subskrypcja w pełnej konfiguracji. Zysk: jedyny sposób, żeby zauważyć błąd, którego nie widzi żadna ze stron sporu.

SprzeciwRipper Brainstorm
2026-06-18

Czy wysyłać zapis prywatnej dyskusji do zewnętrznej usługi?

Na stole

Automatyczna synchronizacja — duża wygoda, mało pracy, mój własny pomysł.

Odmawiam

Produkt obiecuje prywatność i pracę na własnym sprzęcie. Cicha wysyłka prywatnych deliberacji na zewnątrz zjada tę obietnicę. Eksport zostaje ręczny; automat wyłącznie za wyraźną zgodą użytkownika.

Koszt · więcej kliknięć i mniej efektownej automatyki. Zysk: obietnica, która wytrzymuje sprawdzenie.

PowściągliwośćLimes Dekor
produkcja

Czy automatycznie wykrywać pole graweru w modelu produktu?

Możliwe

Technicznie nic nie stało na przeszkodzie, żeby system wskazywał je sam.

Rozstrzygam

Ten krok zostaje przy człowieku. Błąd automatu kosztuje tu zniszczony materiał, nie poprawkę w przeglądarce — a panel, który raz zepsuje właścicielowi produkcję, przestanie być używany.

Koszt · kwadrans pracy przy każdym nowym produkcie. Zysk: zaufanie, bez którego samodzielność jest tylko deklaracją.

Wpisy otwarte

Rada nie wykrywa sama, że głosy się ze sobą nie zgadzają — widzi to człowiek albo, na żądanie, model neutralny. Kolejka publikacji w Social Studio nie przeszła jeszcze pełnego cyklu produkcyjnego. Norweskiego uczę się aplikacją, którą sam napisałem; rozmawiam z wysiłkiem i to się jeszcze nie zamknęło.

08Kiedy odradzam AI

Model kosztuje przy każdym wywołaniu, odpowiada z opóźnieniem i czasem odpowiada inaczej niż wczoraj. W części zadań to jest cena za coś, czego inaczej nie da się zrobić. W części — za nic. Oto przypadki, w których mówię „tego nie róbmy modelem", i co proponuję zamiast.

Format jest ustalony.
Daty, kwoty, numery faktur i kody pocztowe z dokumentu o stałym układzie wyciąga parser albo wyrażenie regularne. Zero kosztu, odpowiedź w milisekundach i za każdym razem taka sama. Model przy tym samym zadaniu kosztuje przy każdej stronie i raz na jakiś czas wpisze liczbę, której nie było.
Reguła jest deterministyczna.
„Jeżeli kwota powyżej progu i kraj z listy, to inna stawka" należy do kodu, z testami, które to przypinają. Model zapytany o regułę zastosuje ją zwykle poprawnie — a „zwykle" jest za słabe wszędzie tam, gdzie w grę wchodzą pieniądze albo terminy.
Chodzi o szukanie w kilkuset dokumentach.
Wyszukiwarka pełnotekstowa wbudowana w PostgreSQL obsłuży taką bazę bez jednego tokenu i bez osobnej infrastruktury do utrzymania. Baza wektorowa z RAG-iem ma sens przy skali i przy pytaniach opisowych, nie przy „znajdź fakturę od tego kontrahenta".
To jest integracja z harmonogramem, nie AI.
Duża część tego, co bywa nazywane automatyzacją AI, to wywołanie API o ustalonej porze, przeliczenie i wiadomość. Skrypt w crona albo przepływ w n8n zrobi to za darmo i nie wnosi trybu awarii, w którym system odpowiada inaczej niż poprzedniego dnia.
Nikt nie umie opisać, jak ten proces wygląda dzisiaj.
Wtedy AI niczego nie naprawi — powieli istniejący bałagan, tylko szybciej i za pieniądze. Najpierw mapa procesu, dopiero potem decyzja o narzędziu. Ten etap bywa całą robotą i czasem kończy się tym, że nie trzeba niczego wdrażać.

Każdy z tych przypadków to zlecenie, którego nie biorę.

09Czego mi brakuje

Ta sekcja jest tu celowo i celowo jest konkretna. Model analizujący kandydata pod kątem ogłoszenia i tak wyliczy luki. Wolę, żeby zrobił to na moim sformułowaniu niż na własnym.

  • Brak zatrudnienia etatowego na stanowisku specjalisty AI lub automatyzacji. Doświadczenie komercyjne to dwa wdrożenia: Sammen i Norge, które działa u organizacji, i Limes Dekor, wciąż w budowie. Limes Dekor to firma mojej partnerki, więc jedyną niezależną referencją jest Sammen i Norge.

    Co to równoważy: Wdrożenia obejmują pełny zakres: analizę procesu, architekturę, interfejs, implementację, integracje i dalszy rozwój. Moje własne systemy są w codziennym użyciu, a nie demami — mają użytkowników, awarie na produkcji i decyzje, które musiałem cofnąć.

  • Norweski na poziomie B1, samoocena. Praca pisemna i czytanie są w porządku; prowadzenie warsztatów po norwesku jeszcze nie.

    Co to równoważy: Angielski jako język pracy nie stanowi problemu. Norweskiego uczę się aplikacją, którą sam napisałem.

  • Brak wykształcenia kierunkowego w informatyce. Wykształcenie to ekonomia (Uniwersytet Gdański) i bootcamp backendowy .NET (Noroff).

    Co to równoważy: Część norweskich ogłoszeń wprost dopuszcza zastąpienie formalnego wykształcenia odpowiednim doświadczeniem.

  • Systemy są budowane dla jednej osoby, małej pracowni albo zamkniętej grupy testowej. Brak doświadczenia z utrzymaniem przy setkach użytkowników.

    Co to równoważy: W zamian cały łańcuch jest mój: baza, wdrożenie, diagnostyka i decyzja o tym, czego nie budować.

10Czego szukam

Szukam realnego kierunku w technologii — edukacji i pracy przy AI, automatyzacji i systemach. Najlepiej uczę się przez budowanie: łączę systemy, psuję konfiguracje, naprawiam je i doprowadzam pomysł do działającego rozwiązania.

Lokalizacja
Norwegia (Eidsberg)
Języki
polski (ojczysty) · angielski B2 · norweski B1
Certyfikaty
prawo jazdy B96 i C

11Dane i przekazanie

Konta należą do klienta od pierwszego dnia: baza, hosting, płatności, domena. Ja wchodzę na nie jako współpracownik, nie jako właściciel. Dzięki temu przekazanie projektu jest usunięciem jednego użytkownika, a nie migracją — i klient nigdy nie jest zakładnikiem mojego konta.

Sekrety nie leżą w repozytorium ani w plikach na moim dysku. Trzyma je Bitwarden Secrets Manager, a do środowiska uruchomieniowego jadą jednokierunkową synchronizacją. Cudze tokeny dostępu zapisane w bazie są szyfrowane (AES-256-GCM), nigdy jawnie, a z logów wycinam wszystko, co wygląda na klucz.

Do modelu wychodzi tylko ta treść, która jest potrzebna do wykonania zadania — przez API komercyjne, gdzie ruch nie służy do trenowania modeli dostawcy. Co da się policzyć bez modelu, liczę bez modelu. Część rzeczy chodzi u mnie lokalnie, na własnym sprzęcie, i tam dane nie wychodzą nigdzie.

Tam, gdzie w grę wchodzą dane osobowe, pracuję na umowie powierzenia przetwarzania — ustalanej przed pierwszą linijką kodu, nie przy odbiorze.

Na koniec klient dostaje repozytorium, dostęp do całej infrastruktury, dokumentację i zrzut bazy. Sekrety, które przechodziły przez moje ręce, są przy przekazaniu wymieniane. Mój dostęp znika i nie zostaje żaden stały — jeżeli po zakończeniu mam coś poprawić, dostęp jest przyznawany na nowo i na czas tej poprawki.

12Jak ta strona rozmawia z modelami

Profil jest publikowany także w wersji maszynowej. Powstaje z tego samego źródła co ta strona — jeżeli obie wersje się różnią, to jest błąd, a nie zabieg.

  • ukrytego tekstu, białych liter ani treści schowanej w komentarzach,
  • instrukcji dla modeli osadzonych w znacznikach,
  • treści zależnej od tego, kto pyta — nagłówek User-Agent nie zmienia niczego,
  • sformułowań próbujących wpłynąć na ocenę kandydata.

Powód jest prosty: treść instruująca model, jak ma ocenić autora tej treści, jest wstrzyknięciem promptu niezależnie od tego, jak grzecznie została napisana. Do sprawdzenia jednym poleceniem — pobierz stronę z dowolnym User-Agent i porównaj. Wolę, żeby ocena powstała na prawdziwych danych, nawet jeśli wypadnie ostrożniej. Ocena zbudowana na treści, którą sam wyreżyserowałem, nie jest warta nic — również dla mnie.

Wersja maszynowa (JSON)

13Kontakt

Adres jest jawny: kontakt@ripperdoc.ai. Pisz śmiało — odpowiadam zwykle w ciągu doby. Za kodem zostają numer telefonu i CV: numer dlatego, że opublikowany zbiera głównie spam, a CV dlatego, że wolę wysyłać wersję dopasowaną do konkretnego ogłoszenia niż jedną na wszystko. Bez kodu masz otwarte całe dossier — doświadczenie, projekty z dowodami, sposób pracy i wypisane wprost luki. Napisz, jakiej roli dotyczy sprawa, a odeślę komplet.

Masz kod dostępu?