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.

  1. 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.

  2. 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ß.

  3. 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.

    Mein Pitch beim Demo Day
  4. 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.

  5. 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.

  6. 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.

Der Launch der Warteliste von Argibee
Das erste Video, das Groselia zeigt

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.

Codex neben der Groselia-Datei in Figma: das Logosystem, das Logo auf jeder Hintergrundfarbe, das Symbol in der ganzen Palette und die Farbpalette
Die Brand Boards, gebaut in Figma mit dem Figma-Plugin in Codex.

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.

1.75H0.15HH

Das gestapelte Logo auf seinem Konstruktionsraster. H ist die Höhe der Wortmarke; das Raster ist H/10.

Groselia-Logo horizontal

Horizontal

Symbol 1,10H · Abstand 0,35H

Groselia-Logo gestapelt

Gestapelt

Symbol 1,75H · Abstand 0,15H

Groselia-Logo symbol

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

TT Commons ProDisplay · 01
→Groselia@
Reels → Posts
Nº 128⅝ e

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.

Groselia-App-Icon

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.

Offizielle Verbindungen
Kein Aufwand für dich
Jederzeit pausieren
Alles dokumentiert
Daten bleiben privat
Jederzeit kündbar
Antworten in deinem Ton
Menschliche Prüfung
Leads markiert
Bezahlte Anzeigen
Landingpage
Produkt-Redesign
Rebranding
Funke
Herz
Pokal

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

Wie lief die letzte Woche?

Die beste Woche seit Juni.

  • Die Reichweite ist um 38 % gestiegen, getragen vom Latte-Art-Reel (41.000 Aufrufe auf Instagram, 64.000 auf TikTok).
  • Die Saves haben sich verdoppelt beim Espresso-Karussell. Die Leute heben sich Rezepte auf.
  • Kommentare warten auf Antwort. 14 Fragen zu Lieferung und Mahlgrad, die meisten unbeantwortet.

Das Muster ist klar: Videos zwischen 17 und 19 Uhr, Fotos am Morgen. Daran würde ich mich die nächsten zwei Wochen halten.

vor 2 Tagen

Guten Morgen! Diese Woche brauchen zwei Dinge deine Aufmerksamkeit:

  • Die Ernte aus Carmo de Minas kommt am Freitag ins Regal, und dafür ist noch nichts geplant.
  • 14 Fragen warten unter deinen Posts, meistens zur Lieferung.

Womit willst du anfangen?

Wähle eine Option
vor 8 Minuten

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

Mo
103
Di
113
Mi
123
Do
133
Fr
143
Sa
152
So
162
8:00

Warum wir 40 % über Marktpreis zahlen

Importiert
6
Neue Ernte
49:00

Neue Ernte: Carmo de Minas

Veröffentlicht
5
Hinter den Kulissen
17:30

POV: erste Schicht in der Rösterei

Veröffentlicht
Rezepte
9:00

Wie wir den Espresso einstellen

Veröffentlicht
12:00

Unpopuläre Meinung zu dunkler Röstung

Veröffentlicht
Fehlgeschlagen
Hinter den Kulissen
1218:00

Wir bewerten die Bestellungen unserer Stammgäste

Veröffentlicht
8:30

Zeit für Croissants

Geplant
3
Jobs
11:00

Das ist Ana, unsere Head Barista

Manuell
RezepteNeue Ernte+1
17:00

Latte Art in Zeitlupe

Geplant
9:00

Was aus 1 kg Rohkaffee wird

Geplant
7
Hinter den Kulissen
11:00

Die Rösterei von innen, von Anfang bis Ende

Geplant
Rezepte
18:30

Cold Brew in 60 Sekunden

Entwurf
Video fehlt
Neue ErntePromo
9:00

Die neue Ernte ist im Regal

Geplant
Entwurf
Jobs
10:00

Wir suchen einen Head Roaster

Geplant
17:00

Iced Latte, von Anfang bis Ende

Entwurf
Promo
10:00

Dein Samstagstisch

Geplant
15:00

Die Espresso-Tonic-Saison ist da

Entwurf
Rezepte
11:00

Der 4-Minuten-Guide für Pour Over

Geplant
Promo
18:00

Das ist die Oakline-Tüte

Entwurf
4

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

Int.-Rate7,69%

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.

groselia.com
Der Hero von groselia.com: „We run your socials. You run your business.“, mit den 3D-Objekten rund um das Herz

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.

groselia.com
„Inside your Groselia“: der Screen der Plattform zum Verbinden von Kanälen

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.

groselia.com
Der Blog von groselia.com, der erste Beitrag unter dem Cursor hervorgehoben, weitere Beiträge darunter

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.

groselia.com
Die Buchungsseite: „Let's talk about your social media.“, mit dem Formular neben den drei Schritten

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.

Die Startseite auf einem Handy
„Always in sync with your team“ auf einem Handy, die erste Karte aktiv
Das Buchungsformular auf einem Handy, beim Schritt, der fragt, was du brauchst und wie hoch dein monatliches Budget ist

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

Supabase

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.

ReactSSE-Stream

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

Anweisungen und Toolseine Stunde gecacht
Datum und Uhrzeitdie Zeitzone des Inhabers
Memory-DokumenteVorlieben, Dos and Don'ts
Live-Kalenderjeder Post und sein Status
Offene Plänevorgeschlagen und freigegeben
Bisheriger Verlaufeine fortlaufende Zusammenfassung
→Das LLMTop-Modelle · bis zu 8 Schritte→

Tool-Aufrufe

✓get_posting_times
✓get_insights
✓propose_plan

Plan, wartet auf Freigabe

Erntewoche: 3 Posts, 4 Antworten

Der Agent baut seinen Kontext
// 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.

Eine Änderung→Ein eigener Worktree→Claude Code oder Codex→Tests und Typen→Ein kleiner PR→Mein Review→Mergen und deployen

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.

Zwei Zeitstempel vergleichen
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.

Nächstes Projekt

Alle Projekte