Groselia
Social Media, das von selbst läuft
Meine Rolle
- Mitgründer
- Engineering
- Produkt- und Markendesign
Beschreibung
Groselia betreut Social Media für Tech-Startups zuerst, aber auch für Unternehmen anderer Branchen und Größen: Strategie, Design, Veröffentlichung, Antworten auf Kommentare und Reporting, auf jedem Kanal, über eine Plattform.
Team
Danilo ParmegianiMitgründer
Pedro CritchiMitgründer
Kontext
Ich habe Groselia mit Pedro gegründet, als Team aus zwei Leuten. Er verantwortet Marketing, Vertrieb und Operations; ich habe die Marke und das Produkt gestaltet und die Plattform gebaut, auf der alles läuft, von der Datenbank bis zur letzten Animation. Solange es Self-Service war, haben sich mehr als 200 Leute registriert, und heute laufen darüber Content und Social Media unserer Kunden. Im Juni 2026 haben wir eine Pre-Seed-Runde über R$100k von Link Vector abgeschlossen, dem Accelerator der Link School of Business, an der ich meinen Abschluss gemacht habe, und zwei Monate nach dem Pivot zum Service bringt Groselia mehr als R$15.000 im Monat ein.
Tools
- Codex
- Claude Code
- Figma
- Adobe tools
Stack
React
Next.js
TypeScript
Tailwind
Supabase
Frontier LLMs
Trigger.dev
Stripe
Vercel
Zeitraum
- 2025–heute
In Zahlen
- R$180k+
- jährliche Run-Rate
- 200+
- erstellte Konten
- 350
- eingerichtete Marken
- 9,700+
- commits
- 520+
- Pull Requests
- 47
- Edge Functions
Herausforderung
Bauen war nicht mehr der Engpass. Gesehen werden wurde es.
AI hat die Kosten für Software einbrechen lassen. Ein Gründer ohne technischen Hintergrund kann heute an einem Wochenende ein Produkt launchen, und alle anderen auch. Was nicht billiger wurde: dafür zu sorgen, dass es jemand bemerkt. Distribution ist ein fortlaufender Betrieb, keine Aufgabe: jeden Tag posten, auf acht Netzwerken, die jeweils ein anderes Format wollen, jeden Kommentar beantworten und Zahlen lesen, die jede App anders meldet.
Startups zahlen dafür auf eine von drei Arten. Sie stellen ein Team ein, das sie sich noch nicht leisten können, sie flicken ein Dutzend Tools zusammen, die jeweils nur ein Stück lösen, oder sie posten nichts und zahlen mit Wachstum. Groselia gibt es, um die vierte Option zu sein.
Wie es dazu kam
Groselia hat viermal die Form gewechselt, bevor es gefunden hat, was es ist. Jede Wendung hat behalten, was funktionierte, und den Rest fallen gelassen.

Ende 2025 – Feb. 2026
Argibee
Eine AI-Plattform für Markendesign. Sie startete Ende 2025 als Prototyp und wurde im Februar 2026 ein echtes Unternehmen. Sie hat ihren Markt nicht gefunden, aber ihre Brand-Kit-Engine wurde das Rückgrat von allem, was danach kam.

Apr. 2026
Motion-Video
Groselia begann mit Launch-Videos im Apple-Stil, gemacht aus After-Effects-Templates. Ich habe die ganze Pipeline von Hand validiert und dann gesehen, dass sie sich nicht auf das gewünschte Qualitätsniveau skalieren ließ.

Juni 2026
Pre-Seed von Link Vector
Wir sind in die Startup School der Link School of Business eingestiegen, ein 100-tägiges Programm für Gründer, gefilmt als Reality-Show (zur Staffel). Es endete mit einem Demo Day, an dem ich Groselia auf der Bühne gepitcht habe, und mit unserer Pre-Seed-Runde über R$100k von Link Vector, dem Accelerator der Link School of Business, an der ich meinen Abschluss gemacht habe.
Aug. 2026
Lovable fürs Marketing
Eine Unterhaltung statt eines Formulars: Beschreib die Kampagne, und Groselia plant, schreibt und veröffentlicht sie. Ein Chat-Agent mit Tools, keine Riege von Bots.
Sept. 2026
Ein Social Media Manager
Kunden wollten nicht, dass AI ihren Content macht. Sie wollten, dass ihre eigenen Fotos gut gepostet und ihre Kommentare beantwortet werden. Wir haben die Generierung gestrichen und uns ganz auf das Betreuen der Kanäle konzentriert.

Heute
Service as a Software
Wir verkaufen die Arbeit, nicht das Tool. Unser Team betreut das Social Media jedes Kunden auf der Plattform, wodurch eine Person schaffen kann, wofür früher eine Agentur nötig war.
Öffentlich gebaut
Wir haben von Anfang an öffentlich gebaut. Damals, als es noch Argibee hieß, haben wir den Weg auf YouTube geteilt, vom Launch der Warteliste von Argibee bis zum ersten Video, in dem wir Groselia gezeigt haben. Den Rest der Geschichte, Video für Video, gibt es auf unserem Kanal.
Marke
Ich wollte, dass die Marke von Groselia mutig ist: etwas, bei dem Leute innehalten und hinschauen – auf der Website, in der App und in jedem Post auf unseren Social-Media-Kanälen. Wo auch immer jemand ihr begegnet, soll sie beeindrucken, ein bisschen Bewunderung auslösen und Lust machen, uns zu beauftragen, wegen dem, was man gerade gesehen hat. Vor allem musste sie für Tech-Startups großartig aussehen: das Ökosystem, zu dem wir gehören, und die Kunden, für die wir zuerst bauen.
Ich habe die gesamte Marke mit dem Figma-Plugin in Codex gestaltet: das Logo, die Typografie und wie sie in den richtigen Proportionen mit dem Symbol zusammensteht, die Bildwelt, die SVG-Icon-Bibliothek, die Textstile und eine geordnete Farbpalette. Jede Entscheidung kam auf ein Board, vermessen, damit man sie vergleichen und darüber streiten konnte.

Das Symbol
Das Symbol kam zuerst und ist geblieben. Drei weiche Blütenblätter, die sich um eine Mitte drehen; es stammt noch aus der allerersten Version des Unternehmens, und das neue Logo wurde um es herum gebaut, nicht darüber: Seine Geometrie wurde kopiert und skaliert, nie neu gezeichnet.
Die Wortmarke
Die Wortmarke ist TT Commons Pro Bold, in Kleinbuchstaben, in Vektoren umgewandelt, damit sie überall gleich aussieht. Mit der natürlichen Laufweite wirkte sie neben dem Symbol locker, also habe ich sie auf −4 % Tracking enger gesetzt, indem ich jeden Buchstaben bei 160 px um zusätzliche 6,4 Einheiten nach links verschoben habe. Klingt winzig; das Wort wurde dadurch von 564 auf 520 Einheiten schmaler und liest sich als eine Form.
Ein Raster aus H
Alles wird in H gemessen, der sichtbaren Höhe der Wortmarke, auf einem Raster von H/10. So skaliert das Logo, ohne dass jemand es je wieder nach Augenmaß anpassen muss.
Für das gestapelte Logo habe ich sechs Varianten gezeichnet, drei Symbolgrößen (1,50H, 1,75H, 2,00H) gegen zwei Abstände (0,15H, 0,25H), und wir haben uns für B entschieden: ein Symbol mit 1,75H, 0,15H über dem Wort. Für das horizontale habe ich Abstände von 0,20H bis 0,35H verglichen und mich für ein Symbol mit 1,10H und 0,35H Abstand entschieden.
Das gestapelte Logo auf seinem Konstruktionsraster. H ist die Höhe der Wortmarke; das Raster ist H/10.
Horizontal
Symbol 1,10H · Abstand 0,35H
Gestapelt
Symbol 1,75H · Abstand 0,15H
Symbol
Originalverhältnis, 0,93 : 1
Colour
The palette is fifteen colours, loud on purpose. But the logo only ever comes in four treatments: blue symbol with black text, blue with white, all black and all white. The other colours are grounds, never the symbol.
To prove that, I put the symbol and both lockups on twelve backgrounds, 24 studies each, and kept the ones where its silhouette survives. On blue grounds the symbol goes monochrome. Click a colour to copy it.
Typografie
TT Commons Pro erledigt jeden Job: sechs Schnitte von Light bis ExtraBold, eine elfstufige Skala von 12 bis 96 px und echte Kursive. Ich habe alle 688 Textebenen der Datei darauf umgestellt, damit Brand Book, App und Website jetzt mit einer Stimme sprechen.
Hausschrift
TT Commons
Pro
App-Icon
Das App-Icon ist der einzige Ort, an dem die Marke 3D wird: das Symbol aus Porzellan, geschichtet, von oben beleuchtet und leicht glänzend. Bei einem späteren Refresh habe ich das Symbol darin um 10 % verkleinert, damit es in seiner Kachel atmen kann. Es bekommt auch ein eigenes Lockup mit der Wortmarke, die Kachel bei 1,5H.
Eine Welt aus 3D-Objekten
Rund um das Logo lebt eine Truppe aus 3D-Objekten: ein Herz mit Wackelaugen, Sprechblasen, ein Hashtag, Funkeln. Sie sind die Stimme der Marke auf der Website und in unseren Posts, und sie stehen nie still: Sie schweben, und auf der Website reagieren sie auf den Cursor. Diese hier auch: Schubs sie an, oder zieh eins zurück und lass es los.








Neo-Doodles
Für alles Flache gibt es Neo, unser Icon-Set: dicke schwarze Konturen, Füllungen aus der Palette und ein weißer Glanzpunkt. Auf der Website beginnt jedes als schlichtes Linien-Icon in einem weißen Chip und verwandelt sich beim Hovern in sein Doodle, Teil für Teil: Die Scheibe ploppt auf, die Balken fallen, der Glanz zeichnet sich. Das sind die Doodles und Animationen der Website selbst, unverändert übernommen. Fahr über eins.
Produkt
Alles in Groselia passiert per Tippen in einem einzigen Chat. Du schreibst, was rausgehen soll und wann, und Groselia plant es, veröffentlicht es, beantwortet die Kommentare und sagt dir, was funktioniert hat. Die Arbeit kommt als ein Plan, den der Inhaber freigibt, statt einem Dutzend Screens, die man bedienen muss.
Eine Unterhaltung, kein Dashboard
Groselia begann als Formular: Ziel wählen, Felder ausfüllen, Kampagne bekommen. Niemand will Formulare über das eigene Unternehmen ausfüllen, also hat jetzt jede Marke stattdessen eine Unterhaltung.
Du öffnest deine Marke und tippst. Frag, was du diese Woche posten solltest, zieh Fotos von deinem Handy rein oder schreib „beantworte die Kommentare von gestern“. Der Agent schaut nach, bevor er antwortet: dein Kalender, was gut lief, das Gedächtnis der Marke.
Wenn er etwas von dir braucht, stellt er eine kurze Runde Fragen, die du mit einem Tippen beantwortest. Dann schlägt er einen Plan vor: die Posts mit Datum und Uhrzeit, die Antworten, alle Änderungen. Du bearbeitest, was du willst, gibst frei und siehst zu, wie sich der Kalender füllt.
Die Karte hier ist der echte Chat, im Browser nachgebaut aus den Tokens der App selbst. Probier ihn ruhig aus.
Zweimal gestaltet: für Inhaber, dann für uns
Die erste Zielgruppe waren Inhaber kleiner Unternehmen, die ihr Social Media selbst machen. Sie denken nicht in Kampagnen, Funnels oder Posting-Rhythmen; sie denken: „Was poste ich diese Woche?“ Das Schwierige war also, die Maschinerie zu verstecken: Onboarding in vier Fragen, ein Brand Kit, das sich aus einem Link füllt, ein Kalender, in dem man ziehen kann, jeder Screen in siebzehn Sprachen und auf dem Handy nutzbar.
Dann haben wir gelernt, dass Kunden überhaupt kein Tool bedienen wollten, egal wie einfach. Sie wollten, dass die Arbeit erledigt wird. Also wurden wir die Hauptnutzer. Eine Person in unserem Team betreut viele Marken, und dieselbe App musste Workspaces mit mehreren Marken bekommen, Zyklen, die mit einem Meeting beginnen und mit einem Report enden, einen Freigabeschritt für jeden Post und eine Inbox für alle Netzwerke. Kunden loggen sich weiterhin ein, aber jetzt sehen sie in der App der Arbeit zu, statt sie selbst zu machen.
November 2026
Gebaut, um von Agenten gelesen zu werden
Immer öfter ist der erste Leser einer Marke oder einer Webseite eine AI. Deshalb ist in Groselia alles genauso für Agenten geschrieben wie für Menschen. Das Gedächtnis einer Marke ist eine Sammlung schlichter Markdown-Dokumente – Vorlieben, Dos and Don'ts, Fakten zur Marke –, die der Agent vor jeder Antwort liest und mit vier Tools selbst bearbeitet, so wie AI-Assistenten ihr eigenes Gedächtnis pflegen. Menschen öffnen und bearbeiten genau dieselben Dokumente im Brand Kit.
Insights laufen über einen gemeinsamen Kern, den sowohl das Dashboard als auch der Agent lesen. Wenn du also fragst „Was funktioniert?“, kommt die Antwort aus den Zahlen, die du siehst. Und die Website macht dasselbe für die Assistenten, die Leute nach uns fragen: groselia.com liefert eine llms.txt, eine längere llms-full.txt und eine Vergleichsdatei, alle aus einer einzigen Faktenquelle im Code generiert, sodass das, was eine AI über unsere Preise oder Sicherheit sagt, nicht von der Website abweichen kann.
Interaktionen im Zeitverlauf
Pro Woche, letzte 30 Tage, nach Veröffentlichungsdatum
Wichtigste Funktionen
Ein Brand Kit aus einem Link
Füg eine Website ein und verbinde deine Konten. Groselia liest die Website aus, wertet deine bisherigen Posts aus und füllt Logo, Farben, Schriften, Tonalität und Zielgruppe von selbst aus.
Eine Unterhaltung
Ein AI-Agent mit 41 Tools schreibt Captions zu deinen Medien, wählt Zeiten anhand deiner eigenen Engagement-Daten, liest Kennzahlen und entwirft Antworten – und bündelt dann alles in einem Plan.
Ein Kalender für acht Netzwerke
Instagram, LinkedIn, TikTok, YouTube, X, Facebook, Threads und Reddit, jeweils im nativen Format, mit importierten früheren Posts, damit der Kalender nie leer ist.
Jeder Kommentar beantwortet
Kommentare und DMs aus allen Netzwerken in einer Inbox, mit Antwortentwürfen im Ton der Marke; alles Heikle wird für einen Menschen zurückgehalten.
Insights in verständlicher Sprache
Reichweite, Aufrufe und Engagement über alle Konten, ehrlich darüber, was jede Plattform meldet und was nicht, und eine Antwort auf „Was funktioniert?“.
Zyklen und Freigaben
Die Arbeit läuft in Zyklen. Jeder beginnt mit einem Meeting und endet mit einem Report, den die AI aus den Zahlen schreibt, und jeder Post kann auf die Freigabe des Kunden warten.
Gebaut mit AI-Agenten
Ich habe Groselia mit AI-Agenten als meinem Engineering-Team gebaut. Codex und Claude Code haben den Code geschrieben, jede Änderung auf einem eigenen Branch, während ich entworfen, jeden Pull Request reviewt und entschieden habe, was live geht.
Und die meisten Prompts habe ich gesprochen statt getippt, mit Wispr Flow. Ein guter Prompt ist ein langes, detailliertes Briefing, und durch Sprechen konnte ich es so schnell geben, wie ich denke.
Codex
Coding-Agent
Claude Code
Coding-Agent

Wispr Flow
Spracheingabe
Website
Auf der Website wird die Marke laut. Ich habe sie in Next.js gestaltet und gebaut. Sie gibt es in siebzehn Sprachen, und bei der Registrierung gibt sie die Sprache jedes Besuchers an die App weiter.
Ein Hero zum Spielen
Während die Seite lädt, dreht sich das Logo herein, dann kommt der Hero: 3D-Objekte, die schweben, sich mit der Maus neigen und vom Cursor herumgeschubst werden, und eine Scroll-Szene, die mit „Made for you“ endet.

Die echte App, nachgebaut
„Inside your Groselia“ zeigt die Plattform so, wie sie ist, im Code nachgebaut aus den echten Screens der App, mit einer Demo-Marke.

Ein Blog
Notizen zum Betreuen von Social Media. Die Beiträge sind schlichte MDX-Dateien, eine pro Sprache, ohne CMS, und jeder bekommt einen eigenen Feed und strukturierte Daten, damit Suchmaschinen und AI-Assistenten ihn richtig lesen.

Ein Formular, das Leads qualifiziert
Jedes „Book a call“ öffnet vor dem Kalender ein kurzes Formular: wer du bist, wo du postest, was du brauchst und dein Budget. Jeder Schritt wird direkt in unserer Datenbank gespeichert, sodass wir auch halb ausgefüllte Antworten sehen, und ein fertiges Formular pingt unser Team auf Slack an.

Immer responsiv
Jede Seite ist auch fürs Handy gestaltet, nicht nur kleingeschrumpft. Wo es kein Hovern gibt, erwachen die Abschnitte, sobald sie die Mitte des Bildschirms erreichen.



Engineering
Architektur
Ich habe die Plattform selbst gebaut, mit AI als Pair. Die App ist React und Vite, die Landingpage Next.js, und beide laufen auf einem Supabase-Projekt: Postgres mit Row-Level Security, Auth, Realtime und Storage sowie 47 Edge Functions. Alles, was langsam oder zeitgesteuert ist, läuft auf Trigger.dev, die sozialen Netzwerke kommen über eine einzige Publishing-API, und Stripe kümmert sich um Tarife, Karten und brasilianisches Boleto.
Es gibt außerdem einen MCP-Server und ein Codex-Plugin, sodass man Groselia direkt aus einem AI-Agenten heraus nutzen kann: dieselben Marken, Posts und Entwürfe, als Tools.
Wo es genutzt wird
Der Kern
Dahinter
App, Website und MCP-Server laufen auf Vercel.
Fahre über ein Feld oder tippe darauf, um zu sehen, was es macht und womit es spricht.
Der Weg eines Posts
Am besten sieht man, wie die Teile zusammenpassen, wenn man einem Post folgt, von einem Satz im Chat bis zu seinen Zahlen in Insights. Klick dich durch die Schritte oder lass sie abspielen.
Web-App
Der Inhaber fragt
„Poste die Ernte-Fotos am Freitag, auf Instagram und LinkedIn.“ Die Nachricht geht an die Edge Function des Agenten, die ihre Antwort zurückstreamt.
Der Agent
Der Agent läuft auf den besten Modellen am Markt, von Anthropic, OpenAI und anderen Anbietern, als eine streamende Edge Function mit einer Tool-Schleife. Das Modell bekommt 41 eigene Tools plus Websuche und Web-Fetch, bis zu acht Schritte pro Zug. Das Schwierige war nie das Modell. Sondern sicherzustellen, dass der Agent immer weiß, was gerade wirklich stimmt.
Deshalb baut die Funktion bei jedem Zug, bevor das Modell die Nachricht sieht, den Kontext aus der Datenbank neu auf: Datum und Uhrzeit in der Zeitzone des Inhabers, die Memory-Dokumente der Marke, den Live-Kalender, die offenen Pläne, hochgeladene Dokumente und eine fortlaufende Zusammenfassung älterer Nachrichten. Der stabile Teil des Prompts wird eine Stunde gecacht; dieser Teil nie, damit er nicht veralten kann.
Zwei Regeln haben den Rest geprägt. Alles Öffentliche oder Unumkehrbare kommt in einen Plan, den der Inhaber freigibt, nie direkt raus. Und ein Post existiert nur, wenn ein Tool ihn in diesem Zug erstellt hat – damit waren die Zeiten vorbei, in denen der Agent Arbeit beschrieb, die er gar nicht gemacht hatte. Außerdem ist der Agent an kein Modell gebunden: Als ein kleineres, günstigeres gut genug wurde, habe ich den Chat darauf umgestellt, um die Kosten pro Unterhaltung zu senken.
Kontext, bei jedem Zug neu aufgebaut
Tool-Aufrufe
Plan, wartet auf Freigabe
Erntewoche: 3 Posts, 4 Antworten
// Volatile block: time + memory + live calendar + active plans + rolling summary. // Rebuilt each turn (never cached) so the agent always sees current state. const volatileSystem = () => { const parts = [ nowBlock, renderMemories(memories), renderCalendar(calendar, todayISO), renderPlans(plans), ] if (documents.length) parts.push(renderDocuments(documents)) if (rollingSummary) parts.push(`STORY SO FAR (summary of earlier messages in THIS conversation):\n${rollingSummary}`) // … then a line for each of the brand's other conversations return parts.join('\n\n') }
Datenmodell
Rund 55 Tabellen in ein paar klaren Gruppen. Ein Workspace hat Mitglieder und Marken; alles andere hängt an der Marke, sodass Row-Level Security überall eine einzige Frage beantworten kann: Ist diese Person Mitglied dieser Marke?
Wer
- Workspaces
- Mitglieder
- Markenrollen
- Profile
Die Marke
- Marken
- Farben, Schriften, Logos
- Produkte und Personen
- Memory-Dokumente
- Markendokumente
Chat
- Unterhaltungen
- Nachrichten
- Pläne
- Planelemente
Der Kalender
- Posts
- Einer pro Netzwerk
- Post-Kennzahlen
- Post-Kommentare
Kanäle
- Verbundene Konten
- Tägliche Kontokennzahlen
- Kanaleinstellungen
Inbox und Zyklen
- Inbox-Threads
- Inbox-Nachrichten
- Antwortentwürfe
- Zyklen
- Zyklusberichte
Alles unterhalb von „Wer“ trägt eine Brand-ID; Row-Level Security prüft sie bei jedem Lesen und Schreiben.
Zuverlässigkeit und Sicherheit
Groselia veröffentlicht auf echten Konten, also sind die teuren Fehler ein Post, der doppelt rausgeht, oder einer, der stillschweigend nie rausgeht. Dort steckt der Großteil der Technik.
1Doppelt freigeben läuft einmal
Der Plan-Runner beansprucht erst den Plan, dann jedes Element, mit einem bedingten Update, und jeder Idempotency Key kommt aus der eigenen ID des Elements. Ein Doppelklick oder ein Retry wird wiederholt, statt erneut zu posten.
2Webhooks sind signiert und werden nachgeholt
Jede Zustellung von der Publishing-API muss eine gültige HMAC-Signatur tragen. Die Handler sind idempotent, weil Zustellungen mehr als einmal ankommen können, und ein Job holt alle zehn Minuten verpasste Events nach.
3Ablehnen, bevor es in die Warteschlange kommt
Eine gemeinsame Regeldatei legt fest, was jedes Netzwerk akzeptiert (Instagram braucht Medien, YouTube braucht Video, kein Mischen auf Facebook). Der Scheduler prüft sie, bevor irgendetwas eingereiht wird, und ein abgelehnter Post kommt als Fehlgeschlagen zurück, mit Begründung, statt als Geplant im Kalender zu stehen.
4Zugriff bei jedem Aufruf geprüft
Row-Level Security in Postgres, eine Rollenprüfung in jeder Edge Function und MCP-Zugriff über OAuth mit PKCE, eingeschränkt pro Marke und pro Aktion, widerrufbar auf einer einzigen Seite.
Eine Zeit lang teilten sich meine lokale App und die Live-App eine einzige Produktionsdatenbank, und eine Migration, die vor einem Deploy lief, hat einmal die Live-Seite der Brand Kits geleert. Seitdem passiert Backend-Arbeit zuerst auf einem Supabase-Branch und wird zusammen mit dem Code, der sie braucht, in die Produktion gemergt.
Qualität und Workflow
Etwa 1.000 Testfälle in 140 Testdateien decken die App, den MCP-Server und die Edge Functions ab. Manche Checks gibt es, weil etwas einmal kaputtgegangen ist: Ein Paritätstest lässt den Build scheitern, wenn einer der 17 Sprachen ein Key fehlt, und die Datenbank-Suites für den MCP laufen auf synthetischen Daten und werden am Ende zurückgerollt.
Der Agent hat eigene Evals. Eine stellt dem Live-Agenten einen festen Satz Fragen zur Performance einer Marke, jede in einer neuen Unterhaltung, und prüft, ob er Insights mit dem richtigen Zeitraum gelesen hat und ob seine Antwort dieselben Zahlen enthält, die die Insights-Seite zeigt.
Eine Person hat über 520 Pull Requests ausgeliefert, indem sie AI-Agenten wie ein Team behandelt hat. Jede Änderung bekommt ihren eigenen Branch in einem eigenen Git-Worktree, sodass Claude Code und Codex an mehreren Dingen gleichzeitig arbeiten können, ohne sich in die Quere zu kommen. Jeder lässt seine Tests und Type Checks laufen, öffnet einen kleinen Pull Request, und nichts wird gemergt, bevor ich es gelesen habe.
Technische Herausforderungen
Jedes sah aus wie ein Bug in der Oberfläche und entpuppte sich als etwas Tieferes: die Form eines Streams, ein Zeitstempel, was ein Netzwerk wirklich meldet, eine Uhr.
Generierung, die sich live anfühlt · Realtime
Einen Monat an Posts zu generieren bedeutete: ein Ladekreisel und dann zwölf Posts, die gleichzeitig auftauchen. Es fühlte sich langsam an, aber das Modell war nicht das Problem. Die Granularität war es.
Ich habe die Ausgabe des Modells auf JSON Lines umgestellt und gestreamt, sodass jeder Post eingefügt wird, sobald seine Zeile abgeschlossen ist. Der Kalender abonniert Postgres-Änderungen über Supabase Realtime und zeichnet zuerst Platzhalter, sodass sich die Posts nacheinander selbst eintippen.
Dieselbe Wartezeit fühlt sich jetzt an, als würde man jemandem bei der Arbeit zusehen.
Zwei Zeitstempel, die nie übereinstimmten · Daten
Supabase warnte, dass der Datenbank bald das Disk-IO ausgehen würde. Lesen war kein Problem. Irgendetwas schrieb dieselben Zeilen immer wieder neu: 344.000 Inserts, um 83.000 Nachrichten zu speichern.
Der Inbox-Sync verglich den gespeicherten Zeitstempel mit dem zurückgelesenen. Postgres lieferte ihn als +00:00, wir schrieben ihn als Z, also sah jede Unterhaltung verändert aus und wurde bei jedem Durchlauf neu heruntergeladen. Zeitpunkte statt Strings zu vergleichen hat es gelöst.
export function sameInstant(a: string | null | undefined, b: string | null | undefined): boolean {
if (a == null && b == null) return true;
if (a == null || b == null) return false;
if (a === b) return true;
const ta = Date.parse(a);
const tb = Date.parse(b);
return Number.isFinite(ta) && Number.isFinite(tb) && ta === tb;
}Inserts für 83.000 Nachrichten
344.000→einer pro neuer Nachricht
Pro Durchlauf neu gelesene Unterhaltungen
alle→nur die geänderten
Das ständige Neuschreiben hörte auf, und Inbox-Verläufe, die nie fertig wurden, wurden zum ersten Mal vollständig synchronisiert.
Eine Null ist nicht immer eine Null · Analytics
Unser Analytics-Anbieter liefert für jedes Netzwerk dieselbe Struktur und füllt alles, was ein Netzwerk nicht meldet, mit 0. Instagram „hatte“ null Klicks auf jedem Post. Die Diagramme logen höflich.
Eine Metrik-Registry pro Plattform, die festhält, was jedes Netzwerk wirklich meldet, den Rest beim Import auf null setzt und jedes Diagramm eine Metrik ehrlich zeigen, abschwächen oder ausblenden lässt.
Insights über acht Netzwerke, die nie eine Zahl zeigen, die niemand gemessen hat.
Ausgeloggt von einer vorgehenden Uhr · Auth
Mein Mitgründer wurde in dem Moment ausgeloggt, in dem er sich anmeldete: fünfzehn Token-Refreshes pro Sekunde, dann ein Rate Limit. Niemand sonst konnte es nachstellen.
Die Uhr seines Computers ging über eine Stunde vor, also sah jedes frische Token abgelaufen aus. Ich habe den Session-Speicher so umschlossen, dass der Ablauf beim Schreiben einer Session an die lokale Uhr neu angepasst wird.
Token-Refreshes pro Sekunde
15→0
Die Anmeldung funktioniert mit jeder Geräteuhr, und die Konsole meldet, wenn eine falsch geht.
Erkenntnisse
Geschmack ist der Burggraben
Wenn AI das Bauen billig macht, kann jeder ausliefern, und das meiste sieht gleich aus. Was knapp bleibt, ist Urteilsvermögen: wissen, was man weglässt, wie sich ein Screen anfühlen soll, wann eine Animation eine zu viel ist. Für ein Team aus zwei Leuten, das niemanden überbieten kann, ist Geschmack das, was Groselia aussehen und funktionieren lässt wie etwas viel Größeres, und es ist der eine Teil, den ich nie einem Modell überlassen würde.
Verkauf das Ergebnis, nicht das Tool
Niemand wollte Marketingsoftware bedienen, egal wie gut. Sie wollten gesehen werden. Die Arbeit statt der App zu verkaufen, hat das Produkt wichtiger gemacht, nicht unwichtiger: Es wurde die Maschine, mit der wir jeden Tag arbeiten, also wurde jede Ecke und Kante geglättet.
Kontext schlägt Cleverness
Der Agent wurde besser, als er mehr wusste, nicht als der Prompt schlauer wurde. Ihm bei jedem Zug den Live-Kalender, das Gedächtnis und die offenen Pläne mitzugeben und ihn fragen zu lassen, bevor er handelt, hat mehr gebracht als jedes Modell-Upgrade.
AI verändert die Größe des Teams
Seit Agenten den Großteil des Codes parallel schreiben, besteht mein Job darin, zu entscheiden, was gebaut wird, jede Änderung zu reviewen und die Messlatte hoch zu halten. Eine Person kann jetzt betreiben, wofür früher ein Team nötig war, solange diese Person die Redaktion bleibt.


