TL;DR
- Kontekst: Lead UX w scaleupie e-commerce B2B z opakowaniami.
- Problem: Zgłoszenia (zgubiona paczka, refund, korekta faktury) trafiały do ludzi po kolei przez bezpośrednią komunikację — nie skalowało się.
- Co zrobiłem: Zaprojektowałem warstwę workflow wewnątrz platformy, która routuje zadania do właściwego teamu po typie problemu.
- Wynik: ~10+ workflowów na żywo, ~300 zadań miesięcznie.
Diagnoza
Odziedziczony koncept już miał „zadania”. Czego mu brakowało, to część, która się liczyła: routing. Osoba zgłaszająca zgubioną paczkę nie wie — i nie musi wiedzieć — który team lub człowiek się tym zajmie; musi tylko powiedzieć, co jest nie tak. Bezpośrednia komunikacja skaluje się źle: piszesz do ludzi po kolei, aż ktoś to zgarnie, a czas, który to pożera, rośnie wykładniczo. Wygraną więc nie była bardziej ozdobna lista zadań — tylko warstwa workflow, która pozwalała skierować problem po typie i pozwalała właściwemu teamowi go podjąć. I siedziała wewnątrz platformy, gdzie zamówienie już było, więc nikt nie musiał przełączać narzędzi.
flowchart TD
subgraph Przed["Przed"]
A1["Zgłaszający pisze do osoby 1"] --> A2{"Odpowiedź?"}
A2 -->|"nie"| A3["Pisze do osoby 2, 3..."]
A3 --> A2
A2 -->|"tak"| A4["Ktoś w końcu to zgarnia"]
end
subgraph Po["Po"]
B1["Zgłoszenie: typ problemu"] --> B2["Automatyczny routing do teamu"]
B2 --> B3["Właściwy team podejmuje zadanie"]
end
classDef good fill:#e6f2ea,stroke:none,color:#1f4d33,rx:14,ry:14
classDef bad fill:#faeaea,stroke:none,color:#5f2626,rx:14,ry:14
classDef accent fill:#27272a,stroke:#3f3f46,stroke-width:1px,color:#fafafa,rx:14,ry:14
class A1,A2,A3,A4 bad
class B1,B2 good
class B3 accent
style Przed fill:transparent,stroke:#a1a1aa,stroke-width:1px,rx:14,ry:14
style Po fill:transparent,stroke:#a1a1aa,stroke-width:1px,rx:14,ry:14
linkStyle default stroke:#a8a8b3,stroke-width:1.5px
Co zrobiłem
- Rozszerzyłem odziedziczony koncept zadań (zostawiony przez designera, który odszedł) o warstwę workflow — routing do teamów — tę część, którą rozpoznałem jako realną wartość.
- Zaprojektowałem kontekstowe tworzenie zadań: zadania powstawały z widoku zamówienia lub pozycji, nie z pustego formularza.
- Zbudowałem filtrowane dashboardy per rola — manager dzielił po przypisanych plus kategorię „nieprzypisane” do rozdystrybuowania; pracownik filtrował po sobie i grupował po workflow (inspiracja: bazy Notion i tablice Jiry/Asany).
- Trzymałem to wszystko wewnątrz istniejącej platformy — bez zewnętrznego systemu zgłoszeń, bez przełączania kontekstu.
Wyniki
- ~10+ workflowów na żywo (zgubiona paczka, korekta faktury, refund i tym podobne).
| # | Workflow | Status |
|---|---|---|
| 1 | Zgubiona paczka | na żywo |
| 2 | Korekta faktury | na żywo |
| 3 | Refund | na żywo |
| 4 | Status wysyłki | na żywo |
| 5–10+ | inne typy zgłoszeń | na żywo |
- ~300 zadań/mies. obsługiwanych w pierwszych trzech miesiącach.
- Monitorowanie czasu obsługi per proces włączone — czego bezpośrednia komunikacja nigdy nie dawała.
- Feedback wskazywał łatwe monitorowanie otwartych spraw i łatwą delegację przy nieplanowanych nieobecnościach (zwolnienie lekarskie), bo zadanie kierowane po typie nie jest zakładnikiem czyjejś skrzynki.
Problem
Dlaczego wewnętrzne zgłoszenia były tak wolne?
Biznes oparty na customowych zamówieniach działa jak łańcuch — specyfikacja, wycena, produkcja, wysyłka, rozliczenia — a każde ogniwo może pęknąć. Gdy coś szło nie tak (zgubiona paczka, błędna faktura), osoba, która to zauważyła — często obsługa klienta — musiała pisać do kolegów po kolei, aż ktoś to podjął. Nie wiedziała, kto się tym zajmie; nie było systemu. Taka bezpośrednia komunikacja nie skaluje się — pożerany czas rośnie wykładniczo, a widoczności w to, co otwarte i kto nad tym pracuje, jest zero.
Dlaczego po prostu nie kupić systemu zgłoszeń?
Bo praca już żyje w platformie do obsługi zamówień. Wysyłanie ludzi do osobnego narzędzia to przełączanie kontekstu — kolejny login, kolejne miejsce do sprawdzenia, kolejna rzecz, która rozjeżdża się w synchronizacji. System musiał być minimalistyczny i żyć tam, gdzie było zamówienie.
Moja rola / zakres
- Lead UX. Odpowiadałem za design systemu zadań i jego warstwę workflow.
- Szczerze: bazowy koncept zadań zszkicował inny designer przed odejściem — bez workflow. Ja dodałem warstwę workflow — routing, bo widziałem, że routing do właściwego teamu to tam, gdzie realnie siedziała wartość.
- Odszedłem z firmy przed planowaną kolejną fazą (paleta komend i auto-przypisanie).
Proces
- Wyszedłem z założenia, które się liczyło: zgłaszającego nie obchodzi, kto to obsłuży — tylko co jest nie tak. To ukształtowało całą abstrakcję workflow.
- Zmapowałem powtarzające się typy zgłoszeń (zgubiona paczka, korekta faktury, refund, status wysyłki) — każdy stał się workflow z własnymi wymaganymi informacjami.
- Zaprojektowałem kontekstowe tworzenie (z zamówienia/pozycji), dashboardy per rola i notyfikacje, iterując z teamami, które miały tego używać.
Kluczowe decyzje i trade-offy
- Kieruj po typie problemu, nie po osobie. Zgłaszający wybiera „zgubiona paczka”, nie „napisz do kogoś w logistyce”. To odcina zgłaszanie od znajomości konkretnych osób i to się skaluje. Odziedziczony koncept miał zadania; to było to, co odblokowało skalowanie.
- Buduj wewnątrz platformy, nie w osobnym narzędziu. Bez zewnętrznego systemu zgłoszeń. Trade-off: sam to budujesz i utrzymujesz — ale żyje tam, gdzie zamówienie, więc zero przełączania kontekstu i zero rozjazdów.
flowchart LR
O["Widok zamówienia<br/>istniejąca platforma"] --> T["System zadań + routing<br/>wbudowany"]
Alt["Osobny system zgłoszeń"] -->|"kolejny login, przełączanie kontekstu"| O
classDef good fill:#e6f2ea,stroke:none,color:#1f4d33,rx:14,ry:14
classDef bad fill:#faeaea,stroke:none,color:#5f2626,rx:14,ry:14
classDef accent fill:#27272a,stroke:#3f3f46,stroke-width:1px,color:#fafafa,rx:14,ry:14
class O good
class T accent
class Alt bad
linkStyle default stroke:#a8a8b3,stroke-width:1.5px
- Kontekstowe tworzenie z zamówienia. Zadania powstają tam, gdzie jest problem, niosąc kontekst zamówienia — nie z pustego formularza, gdzie musisz wszystko powtarzać.
- Dashboardy per rola (manager vs pracownik). Manager rozdystrybuuje pracę (po przypisanych, z „nieprzypisane” na górze); pracownik filtruje po sobie i grupuje po workflow. Filtry i gęstość dla power-userów — inspiracja: bazy Notion i tablice Jiry/Asany.
- Szczere MVP: wymagane pola jako wklejany tekst. Żeby ograniczyć wczesny koszt, wymagane info każdego workflow (kwota, numer konta itd.) było wklejane w pole opisu jako tekst — nie ustrukturyzowane pola formularza. Pragmatyczne na v1; ustrukturyzuj, gdy adopcja pokaże, czego realnie potrzeba.
Jak to się skończyło
System wdrożono szybko i szybko zdobył adopcję — ~10+ workflowów i ~300 zadań/mies. w pierwszych trzech miesiącach — i odblokował monitorowanie czasu obsługi per proces, czego bezpośrednia komunikacja nigdy nie mogła. Najjaśniejszy sygnał od teamów: otwarte sprawy było łatwo monitorować, a delegacja przy nieplanowanych nieobecnościach (zwolnienie lekarskie) stała się trywialna, bo zadanie kierowane po typie nie było już zakładnikiem czyjejś skrzynki. Odszedłem przed planowaną paletą komend i auto-przypisaniem — więc mówię o wdrożonym core i jego adopcji, nie o featurach, które przyszły potem.
Co z tego wyniosłem
- Wartość jest często w routingu, nie w liście. Lista zadań zszkicowana przez kogoś innego stała się użyteczna dopiero, gdy problemy mogły trafić do swojego teamu bez ludzkiej centrali.
- Odetnij zgłaszanie od znajomości konkretnych osób. „Co jest nie tak” się skaluje; „do kogo mam pisać” nie.
- Buduj tam, gdzie żyje praca. Wewnętrzne narzędzie, które wymusza przełączanie kontekstu, powoli umiera. Wewnątrzplatformowe bije osobne narzędzie, gdy praca już tam jest.
- Wypuść chropowaty kształt, a potem niech adopcja zdecyduje o strukturze. Pól tekstowych wystarczyło, żeby się uczyć; argument za ustrukturyzowanymi polami wylazi z tego, jak ludzie realnie tego używają.