# ROADMAP — od Dywanowy Bazar do SLICEstudio > Status: **DRAFT — do zatwierdzenia przez Damiana** > Ostatnia aktualizacja: 2026-04-26 > Robocza nazwa produktu: **SLICEstudio** > Twardy priorytet operacyjny: **najpierw cash flow z 400 dywanów, dopiero potem SaaS dla obcych** --- ## 1. Wizja produktu (jednym zdaniem) SLICEstudio to mobilna aplikacja-narzędzie dla mikrosprzedawców e‑commerce, którzy widzą produkt u dostawcy (na stronie, w hurtowni, na zdjęciu klienta) i jednym ruchem wystawiają go w swoim BaseLinkerze, na Allegro, OLX i sklepie internetowym — bez zlewania danych do Excela, bez kopiuj‑wklej, bez wymyślania parametrów. ## 2. Persony | Kto | Rola w roadmapie | Czego potrzebuje | Co już dziś działa | |---|---|---|---| | **Damian (Ty)** | Faza 1 — pierwszy "płatny" user (sam dla siebie) | Wystawiać 10–20 dywanów dziennie zamiast 1–2. Zarobić na 400 sztukach. | Apka Tara → BL działa LIVE. PWA na telefonie. | | **Znajomy pomocnik** | Faza 2 — drugi człowiek na Twoim koncie BL | Móc wystawiać dywany pod Twoim nadzorem, mieć powiadomienia w telefonie | Nic — fazę 2 dopiero zaplanujemy | | **Założyciel sklepu (gastronomia/chemia/okapy)** | Faza 3 — pierwszy obcy płatny user | Wgrać swój token BL, AI ma sam wykryć jego kategorie i magazyn, wystawiać produkty z różnych dostawców | Nic | | **Klient końcowy w pizzerii** | Faza 4 — odbiorca prezentacji produktu z telefonu | Zobaczyć ładnie podany produkt na ekranie sprzedawcy, "zaraz Ci pokażę co mamy" | Nic | | **Inni właściciele sklepów BL** | Faza 4–5 — komercjalizacja | Onboarding wizard, billing, support | Nic | ## 3. Fazy ### FAZA 1 — Sprzedaż własnych 400 dywanów (priorytet teraz) **Cel mierzalny:** Damian wystawia ≥10 dywanów dziennie roboczo. W ciągu 6 tygodni sprzedaje ≥30 sztuk × marża 1000% z Tara/Merinos. **Backlog (decyzja użytkownika: priorytet #1 = Bulk Import):** 1. **Bulk import** — wkleisz listę 50 URL-i albo plik CSV, apka leci sekwencyjnie: - dla każdego URL → adapter → AI translate → preview draftu w panelu - kliknięcie "Zapisz wszystkie" → push 50× do BL - progress bar, log błędów, zachowywanie draftów do edycji ręcznej - resume — jeśli sieć padnie, można dokończyć 2. **Adapter Merinos** — etykieta ELIO, EAN prefiks `4065656`, producent Medipa Handels GmbH. Drugi dostawca = możliwość wystawienia tej połówki magazynu, której dziś NIE wystawiasz. 3. **Lokalny indeks EAN/Artikelnummer dla Tary** — bo publiczny suggest sklepu indeksuje tylko nazwę. Skanujesz EAN z metki telefonem → apka znajduje produkt. Plan techniczny w `docs/PROGRESS.md` sekcja 9. 4. **`Stan: "używany"` dla outletu** — daje EAN exemption na Allegro (potwierdzone przez AI Base.com). Jeden flag w UI, jeden warunek w `src/baselinker.js::buildFeaturesMap`. 5. **Auto-publikacja na Allegro/OLX/Erli** — z poziomu BL, nie naszej apki. Dokumentacja krok‑po‑kroku jak Damian ma ustawić mapowania kanałów po stronie BL (sami nie integrujemy z Allegro API, BL to robi). 6. **Auto‑discount po N dniach bez sprzedaży** — np. po 14 dniach -10%, po 30 dniach -20%. Tego pewnie nie zrobimy w naszej apce — to BL ma promocje. Jako dokumentacja jak skonfigurować w BL. **Czas:** 3–6 tygodni przy 1–2h dziennie. **KPI końca fazy 1:** - 200+ produktów wystawionych do BL - ≥30 sprzedanych - czas wystawienia 1 produktu spadł z ~30 min (kopiuj-wklej) do <2 min ### FAZA 2 — Pomocnik na Twoim koncie **Cel mierzalny:** Twój znajomy (ten, który już Ci pomaga przy dywanach) wystawi pod Twoim kontem BL ≥20 produktów bez Twojego asysty. **Backlog:** 1. **Panel ustawień w UI** — dziś wszystkie ważne wartości (kurs EUR, mnożnik, default warehouse, kategoria fallback) leżą w `.env`. Przeniesiemy do edytowalnego panelu. 2. **Wieloużytkownikowy login** — zamiast jednego `APP_PASSWORD` dla całej apki, prosta lista użytkowników (login + password hash + rola: admin/operator). Dalej bez DB — plik JSON w `data/users.json`. 3. **Audit log** — kto, kiedy, jaki produkt zapisał. Plik JSONL `data/audit.jsonl`. 4. **Push notifications (Web Push API w PWA)** — darmowe, działa w PWA Android/iOS: - "Produkt zapisany w BL: ID 123, EAN 4062…" - "AI translation failed dla URL X — sprawdź ręcznie" - "Bulk import: 47/50 OK, 3 błędy — zobacz log" - subscription per user, klucze VAPID generowane raz przy uruchomieniu 5. **Dashboard mobile-first** — szybki podgląd: ile produktów wystawiłeś dziś, ile czeka na ręczną edycję, ile poszło do BL z błędem. **Czas:** 1–2 tygodnie po zakończeniu fazy 1. **KPI końca fazy 2:** - 2 osoby (Ty + pomocnik) pracują na tym samym koncie BL bez kolizji - powiadomienia push działają na Twoim telefonie - audit log pokazuje kto co zrobił ### FAZA 3 — Pierwszy obcy user (Twój znajomy z gastronomii) **Cel mierzalny:** Założyciel sklepu z gastronomii ma swoje konto SLICEstudio, wpisał swój token BL, AI auto-skonfigurowało jego magazyn, wystawił przez nasz tool ≥3 produkty. **Backlog:** 1. **Multi-tenant** — DB Postgres na Render (free 90 dni → płatne $7/mies, OK na ten etap) lub Neon.tech (na zawsze free). Tabele: `users`, `accounts`, `bl_configs`, `audit`, `bulk_jobs`. 2. **Rejestracja + email confirmation** — minimalna, bez fancy. Email przez Resend.com (free 3000 maili/mies). 3. **Wizard "Połącz mój BaseLinker"**: - User wkleja BL token + ewentualnie limit miesięczny - System pyta BL przez `getInventories`, `getInventoryWarehouses`, `getInventoryCategories`, `getInventoryAvailableTextFieldKeys`, `getInventoryExtraFields` - AI proponuje mapowanie kategorii dostawców → kategorie usera - User klika "Zatwierdź", system zapisuje config 4. **Generic adapter "URL → produkt"** — to jest **kluczowe dla persony gastronomika**: - User wkleja dowolny URL produktu (Selgros, Makro, hurtownia gastronomiczna, mała stronka producenta) - AI wyciąga: tytuł, opis, parametry, zdjęcia, cenę z HTML - Tworzy się draft jak u Tary 5. **Onboarding tutorial** — 5 minut "co dalej": dodaj pierwszy produkt, zobacz jak idzie do BL, zobacz audit log. 6. **Per-user OpenAI cost guard** — limit X tłumaczeń/mies dla Free, więcej dla Pro. Bo jeden user ze złym wzorcem może wyssać $50 OpenAI przez tydzień. **Czas:** 6–10 tygodni po zakończeniu fazy 2. **KPI końca fazy 3:** - jeden user spoza Damiana ma działające konto i wystawił coś - wizard auto-config kończy się powodzeniem dla tego usera bez Twojej pomocy - DB nie ma corruptionu, backupy działają ### FAZA 4 — SLICEstudio jako produkt komercyjny + "Wow" funkcje **Cel mierzalny:** 5 płacących userów na planie Pro (49 zł/mies) = 245 zł/mies przychodu rekuringowego. **Backlog:** 1. **Branding SLICEstudio** — logo, kolorystyka (proponuję ciepły navy + akcent korala lub złota), domena `slicestudio.pl` (sprawdź dziś czy wolna, zarezerwuj za 30 zł). 2. **Landing page** — slicestudio.pl, jedna podstrona, co to jest + 3 case studies (Damian, gastronom, ten kto będzie 3-ci) + cennik + CTA "Zacznij za darmo". 3. **Stripe billing** — plany: - Free: 30 produktów/mies, 1 dostawca, bez bulk - Pro 49 zł/mies: 1000 produktów/mies, wszyscy dostawcy, bulk import, push - Business 199 zł/mies: 10000 produktów/mies, multi-user (3 logines), priority support 4. **Image search — "wyszukaj po zdjęciu klienta"** _(z Twojej wizji prezentacji w pizzerii)_: - User robi zdjęcie produktu (klient pokazał na telefonie) - OpenAI Vision API → opis produktu w słowach - Apka szuka u skonfigurowanych dostawców (i w Google jeśli nie znajdzie) - Zwraca top 3 dopasowania z linkiem - Klik = draft do BL 5. **Customer presentation view** _(z Twojej wizji prezentacji w pizzerii)_: - Publiczny URL `slicestudio.pl/p/`, generowany na 24h - Pokazuje produkt klientowi: zdjęcia carousel, nazwa, opis, cena DETALICZNA (nie hurtowa), bez pól technicznych BL - "Lookbook mode" dla sprzedawcy: pełnoekranowo, smukłe, do pokazywania klientowi w pizzerii - Footer "Zaproponowane przez SLICEstudio" 6. **Bookmarklet / extension Chrome** — user instaluje rozszerzenie, na dowolnej stronie produktu klika "Wyślij do SLICEstudio" → draft tworzy się od razu. 7. **PWA Push notifications dla powiadomień handlowych** — "ktoś kupił dywan w Twoim sklepie BL: 1 200 zł" (przez webhook BL, jeśli BL to wspiera). **Czas:** 4–6 miesięcy po zakończeniu fazy 3. **KPI końca fazy 4:** - 5+ płacących userów na Pro - ≥1 customer presentation view użyte na realnym spotkaniu - ≥1 produkt zaimportowany przez image search ### FAZA 5 — Skala **Cel mierzalny:** 50 płacących userów = ~2 500 zł/mies brutto. Pierwszy człowiek do supportu. **Backlog (orientacyjnie):** - Marketing — grupy FB sprzedawców e-commerce, polecenia, video YouTube "jak wystawić 100 produktów w 1 godzinę" - Wsparcie wielu platform docelowych (nie tylko BL — Selly, Subiekt, IdoSell) - Monitoring (UptimeRobot free), alerting, status page - RODO — polityka prywatności, regulamin, klauzula informacyjna - Customer support (Crisp.chat free albo email) - Backup DB codziennie - Pierwszy zatrudniony człowiek do supportu (gdy ≥30 płatnych userów) **Czas:** 12+ miesięcy. ## 4. Decyzje architektoniczne wg fazy | Element | Faza 1 | Faza 2 | Faza 3 | Faza 4 | |---|---|---|---|---| | **Hosting** | Render Free | Render Free | Render Free + Postgres Free 90d | Render Starter $7/mo + Postgres | | **DB** | brak (pliki JSON) | brak (pliki JSON) | Postgres (Neon.tech free) | Postgres | | **Auth** | Basic Auth jedno hasło | login/hasło z `data/users.json` | proper sessions + bcrypt + email verify | + Stripe customer linking | | **Sekrety** | `.env` na Renderze | jak w fazie 1 | Render env + `bl_configs.token` w DB (encrypted) | jak w fazie 3 | | **AI** | wspólny key OpenAI | jak w fazie 1 | per-user limits | per-user OpenAI key opcjonalnie | | **Push** | brak | Web Push (VAPID) | jak w fazie 2 | jak w fazie 2 | | **Domena** | `*.onrender.com` | jak w fazie 1 | własna domena `app.slicestudio.pl` | + landing `slicestudio.pl` | | **Branding** | "Dywanowy Bazar" | jak w fazie 1 | "SLICEstudio (beta)" | "SLICEstudio" | ## 5. KPI / kamienie milowe — agregat | Faza | Czas (od dziś) | KPI biznesowe | KPI techniczne | |---|---|---|---| | 1 | 6 tyg | 30 dywanów sprzedanych | bulk import działa, Merinos działa | | 2 | 8 tyg | 2 osoby pracują na koncie | push działa | | 3 | 18 tyg (~4,5 mies) | 1 obcy user wystawia produkty | DB z multi-tenant | | 4 | 36 tyg (~9 mies) | 5 płatnych userów = 245 zł/mies | image search, presentation view | | 5 | 60+ tyg (~15 mies) | 50 płatnych = 2 500 zł/mies | platform support, RODO ready | ## 6. Zasady operacyjne (twarde) 1. **Nigdy nie pracuj nad Fazą N+1 zanim Faza N nie ma swoich KPI.** Najczęstsza pułapka solowych dev — skok do "wow features" przy niezamkniętej podstawie. 2. **Każda Faza ma "exit criteria" konkretnie zmierzone.** Nie zamykamy fazy "bo wydaje się gotowa". 3. **Faza 1 jest święta.** Jeśli Damian nie zarobi na własnych dywanach — nie ma kapitału ani wiarygodności na Fazę 4. 4. **Klient #1 spoza Damiana (gastronom) nie zapłaci dopóki Faza 3 nie skończy się sukcesem.** Damy mu za free na początek w zamian za feedback i case study. 5. **Każdy push do main = auto-deploy na Render.** Cykl dev-test-deploy musi być <5 min. 6. **Zawsze aktualizuj `docs/PROGRESS.md`** po każdym sprintcie. Bo nowy czat AI musi mieć kontekst. ## 7. Otwarte pytania (do uzgodnienia z Damianem) 1. ✅ Kolejność faz: zatwierdzona. 2. ✅ Nazwa "SLICEstudio": zatwierdzona jako robocza. 3. ✅ Faza 1 priorytet: Bulk Import. 4. ✅ Pomocnik fazy 2: znajomy (ten sam co przy dywanach). 5. ✅ User #1 fazy 3: założyciel sklepu z gastronomii (BL, kupowanie 8 tys/mies w jego sklepie). 6. ⏳ Domena `slicestudio.pl` — sprawdź dziś, zarezerwuj za 30 zł rocznie zanim ktoś inny weźmie. Decyzja: TAK / NIE / SPRAWDZĘ. 7. ⏳ Faza 1 podzadanie #2 (po Bulk Import): Merinos czy lokalny indeks EAN? Zaproponuję Merinos (większy ROI, bo połowa magazynu nie wystawiona). 8. ⏳ Faza 3 OpenAI billing — czy każdy user ma swój klucz OpenAI, czy korzystamy z naszego wspólnego z limitem? Zalecenie: nasz wspólny + limit, prosto na start. 9. ⏳ Faza 4 cennik — 49 zł / 199 zł czy inne kwoty? Decyzja na koniec fazy 3 (po pierwszym userze i feedbacku). ## 8. Plan na kolejne 14 dni (sprint 1 fazy 1) > **Po Twojej akceptacji tego dokumentu** wyjdziemy z trybu Ask, włączymy Agent i zaczniemy. Sprint 1 = pierwszy element fazy 1. **Sprint 1: Bulk Import** (orientacyjnie 5–8h pracy w sumie, rozłożone na 1–2 tyg) - [ ] UI: pole `