Groselia
Redes sociales que funcionan solas
Mi rol
- Cofundador
- Ingeniería
- Diseño de producto y de marca
Descripción
Groselia maneja las redes sociales de startups de tecnología en primer lugar, y también de empresas de otras industrias y tamaños: estrategia, diseño, publicación, respuestas a comentarios y reportes, en todos los canales, desde una sola plataforma.
Equipo
Danilo ParmegianiCofundador
Pedro CritchiCofundador
Contexto
Empecé Groselia con Pedro, en un equipo de dos. Él se encarga de marketing, ventas y operaciones; yo diseñé la marca y el producto y construí la plataforma sobre la que funciona, desde la base de datos hasta la última animación. Mientras fue self-service, más de 200 personas se registraron para usarla, y hoy maneja el contenido y las redes sociales de nuestros clientes. En junio de 2026 levantamos un pre-seed de R$100k de Link Vector, la aceleradora de Link School of Business, donde me gradué, y dos meses después del giro a servicio, Groselia factura más de R$15.000 al mes.
Herramientas
- Codex
- Claude Code
- Figma
- Adobe tools
Stack
React
Next.js
TypeScript
Tailwind
Supabase
Frontier LLMs
Trigger.dev
Stripe
Vercel
Cronología
- 2025–hoy
En números
- R$180k+
- run rate anual
- 200+
- cuentas creadas
- 350
- marcas configuradas
- 9,700+
- commits
- 520+
- pull requests
- 47
- edge functions
Desafío
Construir dejó de ser el cuello de botella. Ser visto pasó a serlo.
La IA desplomó el costo de hacer software. Un fundador sin formación en ingeniería puede lanzar un producto en un fin de semana, y todos los demás también. Lo que no se abarató fue lograr que alguien lo note. La distribución es una operación continua, no una tarea: publicar todos los días, en ocho redes que quieren cada una un formato distinto, responder cada comentario y leer números que cada app reporta a su manera.
Las startups lo pagan de una de tres formas. Contratan un equipo que todavía no pueden pagar, juntan una docena de herramientas que resuelven cada una un pedazo, o no publican nada y lo pagan con crecimiento. Groselia existe para ser la cuarta opción.
Cómo llegó hasta aquí
Groselia cambió de forma cuatro veces antes de encontrar lo que es. Cada giro conservó lo que funcionaba y dejó el resto.

Fines de 2025 – feb 2026
Argibee
Una plataforma de diseño de marca con IA. Empezó como prototipo a fines de 2025 y se volvió una empresa de verdad en febrero de 2026. No encontró su mercado, pero su motor de brand kits se convirtió en la columna vertebral de todo lo que vino después.

abr 2026
Videos en motion
Groselia empezó como videos de lanzamiento al estilo Apple hechos con plantillas de After Effects. Validé todo el pipeline a mano, y después vi que no podía escalar al nivel de calidad que buscábamos.

jun 2026
Pre-seed de Link Vector
Entramos a la Startup School de Link School of Business, un programa de 100 días para fundadores grabado como reality show (mira la temporada). Cerró con un demo day en el que presenté Groselia en el escenario, y con nuestro pre-seed de R$100k de Link Vector, la aceleradora de Link School of Business, donde me gradué.
ago 2026
Lovable para marketing
Una conversación en lugar de un formulario: describe la campaña y Groselia la planea, la escribe y la publica. Un agente de chat con herramientas, no un elenco de bots.
sep 2026
Un social media manager
Los clientes no querían que la IA hiciera su contenido. Querían que sus propias fotos se publicaran bien y que sus comentarios tuvieran respuesta. Quitamos la generación y nos enfocamos a fondo en manejar los canales.

Hoy
Service as a software
Vendemos el trabajo, no la herramienta. Nuestro equipo maneja las redes sociales de cada cliente en la plataforma, y eso le permite a una persona sacar adelante lo que antes requería una agencia.
Construida en público
Construimos en público desde el principio. Cuando todavía era Argibee, compartimos el camino en YouTube, desde el lanzamiento de la lista de espera de Argibee hasta el primer video en el que mostramos Groselia. El resto de la historia, video a video, está en nuestro canal.
Marca
Quería que la marca de Groselia fuera audaz: algo que haga que la gente se detenga a mirar, en el sitio web, en la app y en cada post de nuestras redes. Dondequiera que alguien la encuentre, tiene que impresionar, ganarse un poco de admiración y dar ganas de contratarnos por lo que acaba de ver. Sobre todo, tenía que verse increíble para las startups de tecnología, el ecosistema del que somos parte y los primeros clientes para los que construimos.
Diseñé toda la marca usando el plugin de Figma dentro de Codex: el logo, la tipografía y cómo se combina con el símbolo en las proporciones correctas, las imágenes, la biblioteca de íconos SVG, los estilos de texto y una paleta de colores ordenada. Cada decisión fue a un mismo board, medida, para poder compararla y discutirla.

El símbolo
El símbolo llegó primero y se quedó. Tres pétalos suaves girando alrededor de un centro: viene desde la primerísima versión de la empresa, y el nuevo logo se construyó alrededor de él, no encima: su geometría se copió y se escaló, nunca se redibujó.
El logotipo
El logotipo usa TT Commons Pro Bold, en minúsculas, convertido a vectores para que se vea igual en todas partes. Con su espaciado natural se sentía suelto junto al símbolo, así que lo ajusté a −4% de tracking, moviendo cada letra 6.4 unidades más a la izquierda a 160px. Suena mínimo; llevó la palabra de 564 a 520 unidades de ancho y la hizo leerse como una sola forma.
Una retícula de H
Todo se mide en H, la altura visible del logotipo, sobre una retícula de H/10. Así el logo escala sin que nadie tenga que volver a calcularlo a ojo.
Para el logo apilado dibujé seis opciones, tres tamaños de símbolo (1.50H, 1.75H, 2.00H) contra dos separaciones (0.15H, 0.25H), y elegimos B: un símbolo de 1.75H, 0.15H sobre la palabra. Para el horizontal comparé separaciones de 0.20H a 0.35H y me quedé con un símbolo de 1.10H con una separación de 0.35H.
El logo apilado sobre su retícula de construcción. H es la altura del logotipo; la retícula es H/10.
Horizontal
Símbolo 1.10H · separación 0.35H
Apilado
Símbolo 1.75H · separación 0.15H
Símbolo
Proporción original, 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.
Tipografía
TT Commons Pro hace todo el trabajo: seis pesos de Light a ExtraBold, una escala de once pasos de 12 a 96px e itálicas reales. Migré a ella las 688 capas de texto del archivo, así que el brand book, la app y el sitio web ahora hablan con una sola voz.
Fuente principal
TT Commons
Pro
Ícono de la app
El ícono de la app es el único lugar donde la marca se vuelve 3D: el símbolo en porcelana, en capas, iluminado desde arriba y con un poco de brillo. En una actualización posterior reduje el símbolo un 10% para que respire dentro de su recuadro. También tiene su propio lockup con el logotipo, el ícono a 1.5H.
Un mundo de objetos 3D
Alrededor del logo vive un elenco de objetos 3D: un corazón con ojos saltones, burbujas de chat, un hashtag, destellos. Son la voz de la marca en el sitio web y en nuestros posts, y nunca están quietos: flotan y, en el sitio, reaccionan al cursor. Estos también: empújalos, o jala uno hacia atrás y suéltalo.








Neo doodles
Para todo lo plano está Neo, nuestro set de íconos: contornos negros gruesos, rellenos de la paleta y un brillo blanco. En el sitio web cada uno empieza como un ícono de línea simple en un chip blanco y se convierte en su doodle cuando pasas el cursor, con sus partes llegando una a una: el disco aparece, las barras caen, el brillo se dibuja. Son los doodles y la animación del propio sitio, copiados tal cual. Pasa el cursor sobre uno.
Producto
Todo en Groselia se hace escribiendo en un solo chat. Escribes qué debe salir y cuándo, y Groselia lo programa, lo publica, responde los comentarios y te cuenta qué funcionó. El trabajo llega como un plan que el dueño aprueba, en lugar de una docena de pantallas por operar.
Una conversación, no un dashboard
Groselia empezó como un formulario: elige un objetivo, llena los campos, recibe una campaña. Nadie quiere llenar formularios sobre su propio negocio, así que ahora cada marca tiene una conversación en su lugar.
Abres tu marca y escribes. Pregunta qué publicar esta semana, sube fotos desde tu celular, o escribe “responde los comentarios de ayer”. El agente mira antes de responder: tu calendario, lo que funcionó, la memoria de la marca.
Cuando necesita algo de ti, hace una ronda corta de preguntas que respondes con un toque. Luego propone un plan: los posts con sus fechas y horarios, las respuestas, cualquier cambio. Editas lo que quieras, lo apruebas y ves cómo se llena el calendario.
La tarjeta de aquí es el chat real, rehecho en el navegador con los propios tokens de la app. Adelante, úsalo.
Diseñado dos veces: para dueños de negocios, y luego para nosotros
El primer público fueron dueños de pequeños negocios que manejan sus propias redes sociales. No piensan en campañas, embudos ni frecuencia de publicación; piensan “¿qué publico esta semana?”. Así que lo difícil fue esconder la maquinaria: onboarding en cuatro preguntas, un brand kit que se llena desde un enlace, un calendario que puedes arrastrar, cada pantalla en diecisiete idiomas y usable en el celular.
Después aprendimos que los clientes no querían operar ninguna herramienta, por simple que fuera. Querían el trabajo hecho. Así que nosotros pasamos a ser los usuarios principales. Una persona de nuestro equipo maneja muchas marcas, y la misma app tuvo que sumar workspaces multimarca, ciclos que abren con una reunión y cierran con un reporte, un paso de aprobación en cada post y una sola bandeja de entrada para todas las redes. Los clientes siguen entrando, pero ahora la app es donde ven el trabajo, no donde lo hacen.
noviembre de 2026
Hecha para que la lean agentes
Cada vez más, el primer lector de una marca o de una página web es una IA. Por eso todo en Groselia está escrito tanto para agentes como para personas. La memoria de una marca es un conjunto de documentos Markdown simples, preferencias, qué hacer y qué no, datos de la marca, que el agente lee antes de cada respuesta y edita él mismo con cuatro herramientas, como los asistentes de IA mantienen su propia memoria. Las personas abren y editan esos mismos documentos en el brand kit.
Insights pasa por un solo núcleo compartido que leen tanto el dashboard como el agente, así que cuando preguntas “¿qué está funcionando?”, la respuesta sale de los números que ves. Y el sitio web hace lo mismo con los asistentes a los que la gente pregunta por nosotros: groselia.com sirve un llms.txt, un llms-full.txt más largo y un archivo de comparación, todos generados desde una sola fuente de datos en el código, así que lo que una IA diga sobre nuestros precios o nuestra seguridad no puede alejarse del sitio.
Interacciones en el tiempo
Por semana, últimos 30 días, por fecha de publicación
Funciones clave
Un brand kit desde un enlace
Pega un sitio web y conecta tus cuentas. Groselia lee el sitio, revisa tus posts anteriores y completa por sí sola logo, colores, fuentes, voz y audiencia.
Una conversación
Un agente de IA con 41 herramientas escribe los textos de tus medios, elige horarios según tus propios datos de interacción, lee métricas y redacta respuestas, y luego lo junta todo en un plan.
Un calendario para ocho redes
Instagram, LinkedIn, TikTok, YouTube, X, Facebook, Threads y Reddit, cada una en su formato nativo, con los posts anteriores importados para que el calendario nunca esté vacío.
Cada comentario respondido
Comentarios y DMs de todas las redes en una sola bandeja de entrada, con respuestas redactadas con la voz de la marca y todo lo delicado reservado para una persona.
Insights en lenguaje simple
Alcance, vistas e interacción en todas las cuentas, con honestidad sobre lo que cada plataforma reporta y lo que no, y una respuesta a “¿qué está funcionando?”.
Ciclos y aprobaciones
El trabajo funciona en ciclos. Cada uno abre con una reunión y cierra con un reporte que la IA escribe a partir de los números, y cada post puede esperar la aprobación del cliente.
Construida con agentes de IA
Construí Groselia con agentes de IA como mi equipo de ingeniería. Codex y Claude Code escribieron el código, cada cambio en su propia rama, mientras yo lo diseñaba, revisaba cada pull request y decidía qué salía a producción.
Y dicté la mayoría de mis prompts en vez de escribirlos, con Wispr Flow. Un buen prompt es un brief largo y detallado, y hablando podía darlo tan rápido como lo pensaba.
Codex
Agente de código
Claude Code
Agente de código

Wispr Flow
Dictado por voz
Sitio web
El sitio web es donde la marca habla fuerte. Lo diseñé y construí en Next.js. Está en diecisiete idiomas y le pasa el idioma de cada visitante a la app cuando se registra.
Un hero para jugar
El logo gira mientras carga la página, y luego viene el hero: objetos 3D que flotan, se inclinan con el mouse y el cursor los empuja, y una escena de scroll que termina en “Hecho para ti”.

La app real, rehecha
“Inside your Groselia” muestra la plataforma tal como es, rehecha en código a partir de las pantallas de la propia app, con una marca de demostración.

Un blog
Notas sobre manejar redes sociales. Los posts son archivos MDX simples, uno por idioma, sin CMS, y cada uno tiene su propio feed y datos estructurados para que los buscadores y los asistentes de IA lo lean bien.

Un formulario que califica leads
Cada “Agendar una llamada” abre un formulario corto antes del calendario: quién eres, dónde publicas, qué necesitas y tu presupuesto. Cada paso se guarda en nuestra base de datos a medida que avanzas, así que vemos incluso respuestas a medias, y un formulario completo le avisa a nuestro equipo por Slack.

Responsive, siempre
Cada página está diseñada también para celulares, no solo achicada para que quepa. Donde no hay hover, las secciones se activan al llegar al centro de la pantalla.



Ingeniería
Arquitectura
Construí la plataforma yo mismo, con la IA como compañera. La app es React y Vite, la landing es Next.js, y ambas viven en un mismo proyecto de Supabase: Postgres con row-level security, auth, realtime y storage, y 47 edge functions. Todo lo lento o programado corre en Trigger.dev, las redes sociales llegan a través de una sola API de publicación, y Stripe maneja planes, tarjetas y el boleto brasileño.
También hay un servidor MCP y un plugin de Codex, para que Groselia se pueda usar desde dentro de un agente de IA: las mismas marcas, posts y borradores, como herramientas.
Dónde se usa
El núcleo
Detrás
La app, el sitio web y el servidor MCP están alojados en Vercel.
Pasa el cursor o toca una caja para ver qué hace y con qué se comunica.
El recorrido de un post
La mejor forma de ver cómo encajan las partes es seguir un post, desde una frase en el chat hasta sus números en Insights. Avanza paso a paso, o déjalo correr.
Web app
El dueño pide
“Publica las fotos de la cosecha el viernes, en Instagram y LinkedIn.” El mensaje va a la edge function del agente, que devuelve su respuesta en streaming.
El agente
El agente corre sobre los mejores modelos del mercado, de Anthropic, OpenAI y otros proveedores, como una sola edge function con streaming y un loop de herramientas. El modelo recibe 41 herramientas propias más búsqueda y lectura web, con hasta ocho pasos por turno. Lo difícil nunca fue el modelo. Fue asegurar que el agente siempre sepa qué es cierto ahora mismo.
Así que en cada turno, antes de que el modelo vea el mensaje, la función reconstruye el contexto desde la base de datos: la fecha y la hora en la zona horaria del dueño, los documentos de memoria de la marca, el calendario en vivo, los planes abiertos, los documentos subidos y un resumen continuo de los mensajes anteriores. La parte estable del prompt queda en caché por una hora; esta parte nunca se cachea, así que no puede quedar desactualizada.
Dos reglas definieron el resto. Todo lo público o irreversible va a un plan que el dueño aprueba, nunca sale directo. Y un post solo existe si una herramienta lo creó en este turno, lo que terminó con la época en que el agente describía trabajo que no había hecho. Además, el agente no está atado a un modelo: cuando uno más pequeño y barato fue lo bastante bueno, pasé el chat a ese, para bajar el costo por conversación.
Contexto, rehecho en cada turno
Llamadas a herramientas
Plan esperando aprobación
Semana de cosecha: 3 posts, 4 respuestas
// 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') }
Modelo de datos
Unas 55 tablas, en unos pocos grupos claros. Un workspace tiene miembros y marcas; todo lo demás cuelga de la marca, así que la row-level security puede responder una sola pregunta en todas partes: ¿esta persona es miembro de esta marca?
Quién
- Workspaces
- Miembros
- Roles por marca
- Perfiles
La marca
- Marcas
- Colores, fuentes, logos
- Productos y personas
- Documentos de memoria
- Documentos de marca
Chat
- Conversaciones
- Mensajes
- Planes
- Ítems del plan
El calendario
- Posts
- Uno por red
- Métricas de posts
- Comentarios de posts
Canales
- Cuentas conectadas
- Métricas diarias de cuentas
- Configuración de canales
Bandeja de entrada y ciclos
- Hilos de la bandeja
- Mensajes de la bandeja
- Borradores de respuesta
- Ciclos
- Reportes de ciclo
Todo lo que está debajo de “Quién” lleva un brand id; la row-level security lo verifica en cada lectura y escritura.
Confiabilidad y seguridad
Groselia publica en cuentas reales, así que las fallas caras son un post que sale dos veces, o un post que en silencio nunca sale. Ahí está la mayor parte de la ingeniería.
1Aprobar dos veces se ejecuta una
El ejecutor de planes reclama el plan, y luego cada ítem, con un update condicional, y cada clave de idempotencia sale del propio id del ítem. Un doble clic o un reintento repite la ejecución en lugar de publicar otra vez.
2Webhooks firmados y reprocesados
Cada entrega de la API de publicación debe traer una firma HMAC válida. Los handlers son idempotentes porque las entregas pueden llegar más de una vez, y un job reprocesa cualquier evento perdido cada diez minutos.
3Rechazar antes de encolar
Un solo archivo de reglas compartido dice qué acepta cada red (Instagram necesita medios, YouTube necesita video, nada de mezclar en Facebook). El programador lo revisa antes de encolar cualquier cosa, y un post rechazado vuelve como Falló, con el motivo, en lugar de quedarse en el calendario como Programado.
4Acceso verificado en cada llamada
Row-level security en Postgres, una verificación de rol en cada edge function y acceso MCP vía OAuth con PKCE, con alcance por marca y por acción, revocable desde una sola página.
Durante un tiempo mi app local y la de producción compartían una sola base de datos de producción, y una migración que se adelantó a un deploy una vez vació la página de Brand Kits en vivo. Desde entonces el trabajo de backend se hace primero en una rama de Supabase y se integra a producción junto con el código que lo necesita.
Calidad y flujo de trabajo
Cerca de 1,000 casos de prueba en 140 archivos de test cubren la app, el servidor MCP y las edge functions. Algunas verificaciones existen porque algo se rompió una vez: un test de paridad hace fallar el build si a cualquiera de los 17 idiomas le falta una clave, y las suites de base de datos del MCP corren con datos sintéticos y hacen rollback al final.
El agente tiene sus propios evals. Uno le hace al agente en producción un conjunto fijo de preguntas sobre el rendimiento de una marca, cada una en una conversación nueva, y verifica que haya leído Insights con el período correcto y que su respuesta traiga los mismos números que muestra la página de Insights.
Una sola persona entregó más de 520 pull requests tratando a los agentes de IA como un equipo. Cada cambio tiene su propia rama en su propio git worktree, así que Claude Code y Codex pueden trabajar en varias cosas a la vez sin pisarse. Cada uno corre sus tests y el chequeo de tipos, abre un pull request pequeño, y nada se mergea antes de que yo lo lea.
Desafíos técnicos
Cada uno parecía un bug en la interfaz y resultó ser algo más profundo: la forma de un stream, un timestamp, lo que una red realmente reporta, un reloj.
Hacer que la generación se sienta en vivo · Realtime
Generar un mes de posts era un spinner y después doce posts apareciendo de golpe. Se sentía lento, pero el problema no era el modelo. Era la granularidad.
Cambié la salida del modelo a JSON Lines y la transmití en streaming, insertando cada post en cuanto se cerraba su línea. El calendario escucha los cambios de Postgres con Supabase Realtime y dibuja placeholders primero, así que los posts se van escribiendo uno por uno.
La misma espera ahora se siente como ver a alguien trabajar.
Dos timestamps que nunca coincidían · Datos
Supabase avisó que la base de datos estaba por quedarse sin disk IO. Las lecturas estaban bien. Algo estaba reescribiendo las mismas filas: 344k inserts para guardar 83k mensajes.
La sincronización de la bandeja de entrada comparaba el timestamp que guardaba con el que volvía a leer. Postgres lo devolvía como +00:00 y nosotros lo escribíamos como Z, así que cada conversación parecía cambiada y cada barrido la volvía a descargar. Comparar instantes en lugar de strings lo resolvió.
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 para guardar 83k mensajes
344k→uno por mensaje nuevo
Conversaciones releídas en cada barrido
todas→solo las cambiadas
Las escrituras repetidas pararon, y los historiales de la bandeja de entrada que nunca terminaban se sincronizaron por primera vez.
Un cero no siempre es un cero · Analítica
Nuestro proveedor de analítica devuelve la misma estructura para todas las redes y llena con 0 todo lo que una red no reporta. Instagram “tenía” cero clics en cada post. Los gráficos mentían con educación.
Un registro de métricas por plataforma que guarda lo que cada red realmente reporta, deja en null el resto al ingerirlo y permite que cada gráfico muestre, degrade u oculte una métrica con honestidad.
Insights en ocho redes que nunca muestran un número que nadie midió.
Sesión cerrada por un reloj adelantado · Auth
A mi cofundador se le cerraba la sesión en el instante en que entraba: quince renovaciones de token por segundo y luego un rate limit. Nadie más podía reproducirlo.
El reloj de su computadora estaba más de una hora adelantado, así que cada token nuevo parecía vencido. Envolví el almacenamiento de la sesión para volver a anclar el vencimiento al reloj local cuando se guarda una sesión.
Renovaciones de token por segundo
15→0
El inicio de sesión funciona con cualquier reloj de dispositivo, y la consola avisa cuando uno está desfasado.
Aprendizajes
El gusto es la ventaja
Cuando la IA abarata construir, todos pueden lanzar, y casi todo se ve igual. Lo que sigue siendo escaso es el criterio: saber qué dejar fuera, cómo debe sentirse una pantalla, cuándo una animación es una de más. Para un equipo de dos que no puede gastar más que nadie, el gusto es lo que hace que Groselia se vea y funcione como algo mucho más grande, y es la única parte que nunca le entregaría a un modelo.
Vende el resultado, no la herramienta
Nadie quería operar un software de marketing, por bueno que fuera. Querían que los vieran. Vender el trabajo en lugar de la app hizo que el producto importara más, no menos: se volvió el motor que usamos todos los días, así que cada detalle áspero se arregló.
El contexto le gana al ingenio
El agente mejoró cuando supo más, no cuando el prompt se volvió más ingenioso. Darle el calendario en vivo, la memoria y los planes abiertos en cada turno, y hacer que pregunte antes de actuar, hizo más que cualquier mejora de modelo.
La IA cambia el tamaño del equipo
Con agentes escribiendo la mayor parte del código en paralelo, mi trabajo pasó a ser decidir qué construir, revisar cada cambio y mantener la vara alta. Una persona ahora puede sacar adelante lo que antes requería un equipo, siempre que siga siendo el editor.


