Der Kunde kam zu uns vor der Eröffnung — er plante eine Ghost Kitchen mit fünf Marken, betrieben von einer einzigen Zubereitungslinie, und suchte ein System, das ihn von Anfang an trägt. Das Briefing war eindeutig: Jede Marke sollte für den Kunden wie ein eigenes Geschäft wirken, aber Küche, Verwaltung und Buchhaltung mussten wie eine einzige Operation funktionieren. Wir haben den gesamten Stack nach diesem Briefing gebaut — fertig am Eröffnungstag.
Jede Marke hat ihre eigene Katalogseite, ihre eigene Farbe, ihren eigenen Statustracker und ihren eigenen Instagram-Stil-Feed. Für den Kunden liest es sich wie ein fokussierter Laden. Hinter den Kulissen: eine Datenbank, ein Küchenbildschirm und ein Finanzprotokoll — an jeder Zeile nach Marke getaggt, damit die Zahlen schon beim ersten Monatsabschluss stimmen.
Instagram-Feed-Menü je Marke — Carousel-Posts, Doppeltipp-Like, Warenkorb-Stepper, Notizfeld. Jede Marke hat eigene URL, Palette und Tonlage. Der Kunde tippt auf den Bio-Link der Marke, landet auf deren Storefront und sieht einen Laden, nicht fünf.
Live-Geolokalisierung berechnet den Lieferbetrag gegen den Küchenpin, bevor der Kunde bestätigt. Zahlung per tunai / QRIS / Überweisung. Die Bestellung landet in der Küche, sobald das QRIS eingeht.
Ein Bildschirm an der Zubereitungslinie. Jede Bestellung in der Warteschlange, farblich nach Marke umrandet. Stationen wischen durch: Wartend → Zubereitung → Fertig. Live-Zählung oben. Keine Papiertickets, keine verlorenen Bestellungen.
Fünf Phasen — aufgegeben, bezahlt, in Zubereitung, unterwegs, angekommen. Der Kunde sieht die bestellte Marke, nicht „Ghost Kitchen." Automatisch aktualisiert durch Tippen im Küchen-Dashboard. Die Status-URL bleibt im Browser, sodass man sie erneut öffnen kann statt anzurufen.
Dashboard für den Inhaber. Filtern nach Marke, Phase, Datum. Aktive Bestellungen, heutige Anzahl, Verlauf, markenindividuelle Umsatzaufteilung. Eine Ansicht für alle fünf Marken — kein App-Wechsel.
Markenindividuelle Umsatzerfassung mit Gemeinkostenallokation (Miete, Personal, Gas, Verpackung). Monatliche GuV je Marke automatisch berechnet. Marketingbudget-Tracker: Kosten pro Kunde je Marke — die einzige Kennzahl, die entscheidet, was wir als nächstes launchen.
Fünf Marken, eine Zubereitungslinie. Zwei live am Eröffnungstag; drei in der Datenbank vorbereitet.
Der Kunde wollte mit zwei Marken starten und drei weitere vorab in der Datenbank vorbereiten. Jede Marke hatte ihre eigene Positionierung, Palette und Zielgruppe — wer eine koreanische Reisschüssel bestellt, sollte nie erfahren, dass dieselbe Küche auch Geprek ausliefert. Die Kundenseite musste sich vom ersten Tipp an wie eine einzige, fokussierte Marke anfühlen.
Den Build fünfmal zu wiederholen war ausgeschlossen. Wir brauchten eine Shell, die fünf Gesichter trägt — sauber genug, um eine neue Marke an einem Tag zu launchen, nicht in einem Sprint.
Eine einzige PWA-Shell rendert den Storefront. Ein Marken-Slug in der URL lädt beim Start die richtigen Farb-Tokens, Schriften, Produkte und Texte — gleicher Code, anderer Laden. Kunden tippen auf den Instagram- oder TikTok-Bio-Link einer Marke, landen auf deren fokussierten Storefront, sehen die anderen nie.
Eine neue Marke für den Kunden aufzusetzen bedeutet jetzt: eine Zeile in der Datenbank, eine Farbe und eine Produktliste. Geprek 28 und Sego Sambel wurden in Woche 2 ausgeliefert; Bap Bowl, Nasgor Mas und Tumis Bunda sind vorbereitet, bis der Kunde entscheidet, sie einzuschalten.
Das Risiko, das die Gründer früh nannten: Mit einem einzigen Team für fünf Marken verschwindet der Markenkontext zwischen Bestellung und Teller. Ein Ticket „nasi + sambal + ayam" könnte zu Geprek 28, Sego Sambel oder Nasgor Mas gehören — und eine falsch beschriftete Box in der Eröffnungswoche wäre sehr öffentlich, sehr schnell.
Die Küchenoberfläche musste die Marke unmöglich zu übersehen machen — auch im Stressbetrieb, auch in der ersten Schicht, die das Team je absolvierte.
Jedes Ticket auf dem Küchenbildschirm trägt eine farbige linke Leiste — eine Farbe je Marke. Der Markenname steht oben in fettem Mono. Es gibt kein Szenario, in dem der Koch ein Ticket liest, ohne zu wissen, zu wessen Bestellung es gehört.
Antippen zum Weiterrücken: antri → masak → siap. Der Statustracker des Kunden aktualisiert sich sofort. Der Marken-Queue-Chip im Admin zählt eins herunter. Ein Tablet, drei Wischer, kein zweiter Bildschirm, der synchron gehalten werden muss — das Personal kann es am Nachmittag lernen.
Gemeinsame Küche, gemeinsames Personal, gemeinsames Gas, gemeinsamer Verpackungslieferant. Markenindividueller Umsatz ist simpel — Belege addieren. Markenindividueller Gewinn ist die schwierigere Kennzahl. Die Gründer wollten sie ab Monat eins sehen, nicht nach einem Jahr Raten.
Der Punkt: Die Entscheidung „Launchen wir die vierte Marke?" sollte auf einer Zahl beruhen, nicht auf einem Gefühl. Das bedeutete, die Gemeinkostenallokation ins System einzubauen, bevor die erste Bestellung eintraf.
Jede Bestellung, jedes Ticket, jede Statuszeile und jeder Buchungseintrag trägt die Marken-ID ab dem Moment des Schreibens. Gemeinkosten (Miete, Gas, Grundpersonal) werden automatisch nach dem Bestellanteil jeder Marke im Monat allokiert. Markeneigene Kosten (Verpackungs-SKUs, einer Marke zugeordnete Zutaten) landen direkt im richtigen Buchungswerk.
Marketingausgaben sind an eine Marke und eine Kampagne geknüpft — Kosten pro Kunde errechnen sich aus dem Bestellprotokoll selbst. Die markenorientierte Verwaltung gibt dem Inhaber einen Bildschirm für alle sechs.
Wir haben nicht mit der Datenbank angefangen. Wir haben mit einer Mockup-Katalogseite einer der Launch-Marken auf einem Telefon angefangen und sie den Gründern vorgelegt — würde ein Kunde das für einen echten Laden halten? Sobald das gelang, haben wir uns rückwärts in Küche und Verwaltung vorgearbeitet.
Das ist es, womit die Gründer am Eröffnungstag starten. Live-Betriebszahlen (CAC, markenindividuelle Marge, Durchsatz) folgen, sobald die Küche läuft — wir veröffentlichen sie, wenn echte Daten dahinterstehen.
Der Kundenstorefront ist eine einzige PWA. Ein Marken-Slug in der URL lädt beim Start die Farb-Tokens, Typografie, Texte, Produktliste und Bestellziel der jeweiligen Marke. Neue Marke = neue Zeile in der Markentabelle, neue Produktliste, ausliefern.
Gehostet auf demselben XAMPP-Setup, das der Inhaber bereits für den Rest des Betriebs nutzt. Kein Build-Schritt, kein Docker, keine Neuerfindung. Bewusst so lesbar, dass jeder es versteht — der Küchenbildschirm muss funktionieren, auch wenn der Entwickler schläft.
Jede Bestellung, jedes Ticket, jede Statuszeile und jeder Buchungseintrag trägt die brand_id. Küche filtert danach, Verwaltung filtert danach, Finanzen allokieren danach. Es gibt keine Stelle im System, an der eine Zeile existiert, ohne zu wissen, zu welcher Marke sie gehört.
Der Kunde kommt über den Instagram- oder TikTok-Bio-Link der Marke, öffnet eine PWA, bestellt, zahlt per QRIS, verfolgt die Status-URL. Kein App Store, kein Login. Das Social-Media-Konto der Marke übernimmt das Marketing; der Storefront muss nur konvertieren.
Ein wandmontiertes Android-Tablet an der Zubereitungslinie. Tickets laufen ein, farbig umrandet. Antippen zum Weiterrücken durch drei Zustände. Live-Zählung oben, damit der Koch die Warteschlangentiefe kennt, ohne etwas zu öffnen.
Miete, Gas und Grundpersonalkosten werden monatlich nach dem Gesamtbestellanteil jeder Marke aufgeteilt. Markeneigene Kosten (Verpackungs-SKUs, einer Marke zugeordnete Zutaten) gehen direkt ins richtige Buchungswerk. Für den Inhaber lesbare Formel je Zeile sichtbar.
Kostenloses Erstgespräch. Wir haben es selbst gemacht — wir wissen, was im zweiten Monat wehtut.