Groselia
Redes sociais que se cuidam sozinhas
Meu papel
- Cofundador
- Engenharia
- Design de produto e de marca
Descrição
A Groselia cuida das redes sociais de startups de tecnologia em primeiro lugar, e também de empresas de outros setores e tamanhos: estratégia, design, publicação, respostas a comentários e relatórios, em todos os canais, numa única plataforma.
Equipe
Danilo ParmegianiCofundador
Pedro CritchiCofundador
Contexto
Comecei a Groselia com o Pedro, num time de dois. Ele cuida de marketing, vendas e operações; eu desenhei a marca e o produto e construí a plataforma em que ela roda, do banco de dados à última animação. Enquanto era self-service, mais de 200 pessoas se cadastraram para usar, e hoje ela roda o conteúdo e as redes sociais dos nossos clientes. Em junho de 2026 captamos um pre-seed de R$100k da Link Vector, a aceleradora da Link School of Business, onde me formei, e dois meses depois da virada para serviço, a Groselia fatura mais de R$15.000 por mês.
Ferramentas
- Codex
- Claude Code
- Figma
- Adobe tools
Stack
React
Next.js
TypeScript
Tailwind
Supabase
Frontier LLMs
Trigger.dev
Stripe
Vercel
Linha do tempo
- 2025–hoje
Em números
- R$180k+
- run rate anual
- 200+
- contas criadas
- 350
- marcas configuradas
- 9,700+
- commits
- 520+
- pull requests
- 47
- edge functions
Desafio
Construir deixou de ser o gargalo. Ser visto virou o gargalo.
A IA derrubou o custo de fazer software. Um fundador sem nenhuma formação em engenharia consegue lançar um produto num fim de semana, e todo mundo também. O que não ficou mais barato foi fazer alguém notar. Distribuição é uma operação contínua, não uma tarefa: postar todo dia, em oito redes que querem cada uma um formato diferente, responder cada comentário e ler números que cada app reporta de um jeito.
As startups pagam por isso de uma de três formas. Contratam um time que ainda não podem pagar, juntam uma dúzia de ferramentas que resolvem cada uma um pedaço, ou não postam nada e pagam com crescimento. A Groselia existe para ser a quarta opção.
Como chegou aqui
A Groselia mudou de forma quatro vezes antes de descobrir o que é. Cada virada manteve o que funcionava e largou o resto.

Fim de 2025 – fev. 2026
Argibee
Uma plataforma de design de marca com IA. Começou como protótipo no fim de 2025 e virou uma empresa de verdade em fevereiro de 2026. Não encontrou seu mercado, mas o motor de brand kit dela virou a espinha dorsal de tudo o que veio depois.

abr. 2026
Vídeos em motion
A Groselia começou fazendo vídeos de lançamento no estilo da Apple a partir de templates do After Effects. Validei o pipeline inteiro na mão, e aí vi que ele não escalava no nível de qualidade que queríamos.

jun. 2026
Pre-seed da Link Vector
Entramos na Startup School da Link School of Business, um programa de 100 dias para fundadores gravado como reality show (assista à temporada). Ele terminou com um demo day em que apresentei a Groselia no palco, e com o nosso pre-seed de R$100k da Link Vector, a aceleradora da Link School of Business, onde me formei.
ago. 2026
Lovable para marketing
Uma conversa no lugar de um formulário: descreva a campanha e a Groselia planeja, escreve e publica. Um agente de chat com ferramentas, não um elenco de bots.
set. 2026
Uma social media
Os clientes não queriam que a IA fizesse o conteúdo deles. Queriam as próprias fotos bem postadas e os comentários respondidos. Cortamos a geração e fomos fundo em cuidar dos canais.

Hoje
Service as a software
Vendemos o trabalho, não a ferramenta. Nosso time cuida das redes sociais de cada cliente na plataforma, o que faz uma pessoa conseguir tocar o que antes exigia uma agência.
Construída em público
Construímos em público desde o começo. Quando ainda era Argibee, compartilhamos a jornada no YouTube, do lançamento da lista de espera da Argibee até o primeiro vídeo em que mostramos a Groselia. O resto da história, vídeo a vídeo, está no nosso canal.
Marca
Eu queria que a marca da Groselia fosse ousada: algo que faz as pessoas pararem para olhar, no site, no app e em cada post das nossas redes. Onde quer que alguém a encontre, ela tem que impressionar, arrancar um pouco de admiração e dar vontade de nos contratar pelo que a pessoa acabou de ver. Acima de tudo, ela tinha que ficar incrível para startups de tecnologia, o ecossistema do qual fazemos parte e os primeiros clientes para quem construímos.
Desenhei a marca inteira usando o plugin do Figma dentro do Codex: o logo, a tipografia e como ela se encaixa com o símbolo nas proporções certas, as imagens, a biblioteca de ícones em SVG, os estilos de texto e uma paleta de cores organizada. Cada decisão foi para um único board, medida, para poder ser comparada e discutida.

O símbolo
O símbolo veio primeiro e ficou. Três pétalas suaves girando em torno de um centro: ele veio desde a primeiríssima versão da empresa, e o novo logo foi construído em volta dele, não por cima: a geometria foi copiada e escalada, nunca redesenhada.
O logotipo
O logotipo usa TT Commons Pro Bold, em minúsculas, convertido em vetores para renderizar igual em qualquer lugar. No espaçamento natural ele parecia solto ao lado do símbolo, então apertei para −4% de tracking, movendo cada letra 6,4 unidades a mais para a esquerda em 160px. Parece pouco; levou a palavra de 564 para 520 unidades de largura e fez ela ser lida como uma forma só.
Um grid de H
Tudo é medido em H, a altura visível do logotipo, num grid de H/10. Assim o logo escala sem ninguém precisar acertar no olho de novo.
Para o logo empilhado desenhei seis opções, três tamanhos de símbolo (1,50H, 1,75H, 2,00H) contra dois espaçamentos (0,15H, 0,25H), e escolhemos B: símbolo de 1,75H, 0,15H acima da palavra. Para o horizontal comparei espaçamentos de 0,20H a 0,35H e fechei em símbolo de 1,10H com espaçamento de 0,35H.
O logo empilhado no grid de construção. H é a altura do logotipo; o grid é H/10.
Horizontal
Símbolo 1,10H · espaço 0,35H
Empilhado
Símbolo 1,75H · espaço 0,15H
Símbolo
Proporção 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.
Tipografia
A TT Commons Pro dá conta de tudo: seis pesos, do Light ao ExtraBold, uma escala de onze passos de 12 a 96px e itálicos de verdade. Migrei as 688 camadas de texto do arquivo para ela, então o brand book, o app e o site agora falam com uma voz só.
Fonte principal
TT Commons
Pro
Ícone do app
O ícone do app é o único lugar onde a marca vira 3D: o símbolo em porcelana, em camadas, iluminado de cima e com um leve brilho. Numa atualização posterior diminuí o símbolo dentro dele em 10% para ele respirar no quadrado. Ele também tem o próprio lockup com o logotipo, o ícone em 1,5H.
Um mundo de objetos 3D
Em volta do logo vive um elenco de objetos 3D: um coração com olhinhos esbugalhados, balões de chat, uma hashtag, brilhos. Eles são a voz da marca no site e nos nossos posts, e nunca ficam parados: flutuam e, no site, reagem ao cursor. Estes aqui também: empurre, ou puxe um para trás e solte.








Neo doodles
Para tudo o que é chapado existe o Neo, nosso conjunto de ícones: contornos pretos grossos, preenchimentos da paleta e um brilho branco. No site, cada um começa como um ícone de linha simples num chip branco e vira o doodle quando você passa o mouse, com as partes chegando uma de cada vez: o disco salta, as barras caem, o brilho se desenha. Estes são os doodles e a animação do próprio site, copiados do jeito que são. Passe o mouse em um.
Produto
Tudo na Groselia é feito digitando num único chat. Você escreve o que deve sair e quando, e ela agenda, publica, responde os comentários e conta o que funcionou. O trabalho chega como um plano que o dono aprova, em vez de uma dúzia de telas para operar.
Uma conversa, não um dashboard
A Groselia começou como um formulário: escolha um objetivo, preencha os campos, receba uma campanha. Ninguém quer preencher formulário sobre o próprio negócio, então agora cada marca tem uma conversa no lugar.
Você abre sua marca e digita. Pergunte o que postar esta semana, mande fotos do celular, ou escreva “responda os comentários de ontem”. O agente olha antes de responder: seu calendário, o que performou, a memória da marca.
Quando precisa de algo de você, ele faz uma rodada curta de perguntas que você responde com um toque. Depois propõe um plano: os posts com datas e horários, as respostas, qualquer mudança. Você edita o que quiser, aprova e vê o calendário se preencher.
O card aqui é o chat de verdade, refeito no navegador com os próprios tokens do app. Pode usar.
Desenhado duas vezes: para donos de negócio, depois para nós
O primeiro público eram donos de pequenos negócios que cuidam das próprias redes sociais. Eles não pensam em campanhas, funis ou cadência de postagem; pensam “o que eu posto esta semana?”. Então a parte difícil foi esconder a engrenagem: onboarding em quatro perguntas, um brand kit preenchido a partir de um link, um calendário que dá para arrastar, cada tela em dezessete idiomas e usável no celular.
Depois aprendemos que os clientes não queriam operar ferramenta nenhuma, por mais simples que fosse. Queriam o trabalho feito. Então nós viramos os principais usuários. Uma pessoa do nosso time cuida de várias marcas, e o mesmo app teve que ganhar workspaces multimarca, ciclos que abrem com uma reunião e fecham com um relatório, uma etapa de aprovação em cada post e uma única caixa de entrada para todas as redes. Os clientes ainda entram, mas agora o app é onde eles acompanham o trabalho, não onde fazem.
novembro de 2026
Feita para ser lida por agentes
Cada vez mais, o primeiro leitor de uma marca ou de uma página é uma IA. Por isso tudo na Groselia é escrito tanto para agentes quanto para pessoas. A memória de uma marca é um conjunto de documentos Markdown simples, preferências, o que fazer e o que evitar, fatos da marca, que o agente lê antes de cada resposta e edita sozinho com quatro ferramentas, do jeito que assistentes de IA mantêm a própria memória. As pessoas abrem e editam esses mesmos documentos no brand kit.
O Insights passa por um único núcleo compartilhado que o dashboard e o agente leem, então quando você pergunta “o que está funcionando?”, a resposta vem dos números que você vê. E o site faz o mesmo pelos assistentes a quem as pessoas perguntam sobre nós: groselia.com serve um llms.txt, um llms-full.txt mais longo e um arquivo de comparação, todos gerados a partir de uma única fonte de fatos no código, então o que uma IA diz sobre nossos preços ou nossa segurança não tem como se desviar do site.
Engajamento ao longo do tempo
Por semana, últimos 30 dias, por data de publicação
Principais recursos
Um brand kit a partir de um link
Cole um site e conecte suas contas. A Groselia lê o site, analisa seus posts anteriores e preenche sozinha logo, cores, fontes, voz e público.
Uma conversa
Um agente de IA com 41 ferramentas escreve legendas para as suas mídias, escolhe horários a partir dos seus próprios dados de engajamento, lê métricas e rascunha respostas, e depois junta tudo num plano.
Um calendário para oito redes
Instagram, LinkedIn, TikTok, YouTube, X, Facebook, Threads e Reddit, cada uma no formato nativo, com os posts antigos importados para o calendário nunca ficar vazio.
Todo comentário respondido
Comentários e DMs de todas as redes numa única caixa de entrada, com respostas rascunhadas na voz da marca e qualquer coisa sensível guardada para uma pessoa.
Insights em linguagem simples
Alcance, visualizações e engajamento em todas as contas, com honestidade sobre o que cada plataforma reporta ou não, e uma resposta para “o que está funcionando?”.
Ciclos e aprovações
O trabalho roda em ciclos. Cada um abre com uma reunião e fecha com um relatório que a IA escreve a partir dos números, e cada post pode esperar a aprovação do cliente.
Construída com agentes de IA
Construí a Groselia com agentes de IA como meu time de engenharia. O Codex e o Claude Code escreveram o código, cada mudança na sua própria branch, enquanto eu desenhava, revisava cada pull request e decidia o que ia para produção.
E falei a maioria dos meus prompts em vez de digitar, com o Wispr Flow. Um bom prompt é um briefing longo e detalhado, e falando eu conseguia passar um na velocidade em que pensava.
Codex
Agente de código
Claude Code
Agente de código

Wispr Flow
Ditado por voz
Site
O site é onde a marca fala alto. Desenhei e construí em Next.js. Ele está em dezessete idiomas e passa o idioma de cada visitante para o app quando a pessoa se cadastra.
Um hero para brincar
O logo gira enquanto a página carrega, e depois vem o hero: objetos 3D que flutuam, se inclinam com o mouse e são empurrados pelo cursor, e uma cena de scroll que termina em “Feito para você”.

O app de verdade, refeito
“Inside your Groselia” mostra a plataforma como ela é, refeita em código a partir das telas do próprio app, com uma marca de demonstração.

Um blog
Notas sobre cuidar de redes sociais. Os posts são arquivos MDX simples, um por idioma, sem CMS, e cada um tem o próprio feed e dados estruturados para buscadores e assistentes de IA lerem direito.

Um formulário que qualifica leads
Todo “Agendar uma conversa” abre um formulário curto antes da agenda: quem você é, onde você posta, do que precisa e seu orçamento. Cada etapa é salva no nosso banco conforme você avança, então vemos até respostas pela metade, e um formulário completo avisa nosso time no Slack.

Responsivo, sempre
Cada página é desenhada também para celular, não só encolhida para caber. Onde não tem hover, as seções acordam quando chegam ao meio da tela.



Engenharia
Arquitetura
Construí a plataforma eu mesmo, com a IA como dupla. O app é React e Vite, a landing é Next.js, e os dois ficam num único projeto Supabase: Postgres com row-level security, auth, realtime e storage, e 47 edge functions. Tudo o que é lento ou agendado roda no Trigger.dev, as redes sociais passam por uma única API de publicação, e o Stripe cuida de planos, cartões e boleto.
Tem também um servidor MCP e um plugin do Codex, para a Groselia poder ser usada de dentro de um agente de IA: as mesmas marcas, posts e rascunhos, como ferramentas.
Onde é usado
O núcleo
Por trás
O app, o site e o servidor MCP ficam hospedados na Vercel.
Passe o mouse ou toque numa caixa para ver o que ela faz e com quem conversa.
O caminho de um post
O melhor jeito de ver como as partes se encaixam é seguir um post, de uma frase no chat até os números dele no Insights. Clique pelos passos, ou deixe rodar.
Web app
O dono pede
“Posta as fotos da safra na sexta, no Instagram e no LinkedIn.” A mensagem vai para a edge function do agente, que devolve a resposta em streaming.
O agente
O agente roda nos melhores modelos do mercado, da Anthropic, da OpenAI e de outros provedores, como uma edge function com streaming e um loop de ferramentas. O modelo recebe 41 ferramentas próprias, além de busca e leitura na web, com até oito passos por turno. A parte difícil nunca foi o modelo. Foi garantir que o agente sempre saiba o que é verdade agora.
Então, a cada turno, antes de o modelo ver a mensagem, a função reconstrói o contexto a partir do banco: a data e a hora no fuso do dono, os documentos de memória da marca, o calendário ao vivo, os planos abertos, os documentos enviados e um resumo contínuo das mensagens mais antigas. A parte estável do prompt fica em cache por uma hora; esta parte nunca vai para o cache, então não tem como ficar desatualizada.
Duas regras moldaram o resto. Tudo o que é público ou irreversível vai para um plano que o dono aprova, nunca direto. E um post só existe se uma ferramenta o criou neste turno, o que acabou com a época em que o agente descrevia um trabalho que não tinha feito. E o agente não está preso a um modelo: quando um menor e mais barato ficou bom o bastante, passei o chat para ele, para cortar o custo por conversa.
Contexto, refeito a cada turno
Chamadas de ferramentas
Plano aguardando aprovação
Semana da safra: 3 posts, 4 respostas
// 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 dados
Umas 55 tabelas, em poucos grupos claros. Um workspace tem membros e marcas; todo o resto pendura na marca, então a row-level security responde uma única pergunta em todo lugar: essa pessoa é membro dessa marca?
Quem
- Workspaces
- Membros
- Papéis na marca
- Perfis
A marca
- Marcas
- Cores, fontes, logos
- Produtos e pessoas
- Documentos de memória
- Documentos da marca
Chat
- Conversas
- Mensagens
- Planos
- Itens do plano
O calendário
- Posts
- Um por rede
- Métricas dos posts
- Comentários dos posts
Canais
- Contas conectadas
- Métricas diárias das contas
- Configurações dos canais
Caixa de entrada e ciclos
- Threads da caixa de entrada
- Mensagens da caixa de entrada
- Rascunhos de resposta
- Ciclos
- Relatórios de ciclo
Tudo abaixo de “Quem” carrega um brand id; a row-level security confere isso em toda leitura e escrita.
Confiabilidade e segurança
A Groselia publica em contas reais, então as falhas caras são um post saindo duas vezes, ou um post que silenciosamente nunca sai. A maior parte da engenharia está aí.
1Aprovar duas vezes roda uma vez
O executor de planos reivindica o plano, e depois cada item, com um update condicional, e toda chave de idempotência vem do próprio id do item. Um clique duplo ou uma nova tentativa repete a execução em vez de postar de novo.
2Webhooks assinados e reprocessados
Toda entrega da API de publicação precisa ter uma assinatura HMAC válida. Os handlers são idempotentes porque as entregas podem chegar mais de uma vez, e um job reprocessa qualquer evento perdido a cada dez minutos.
3Recusar antes de enfileirar
Um único arquivo de regras compartilhado diz o que cada rede aceita (Instagram precisa de mídia, YouTube precisa de vídeo, nada de misturar no Facebook). O agendador confere isso antes de qualquer coisa entrar na fila, e um post recusado volta como Falhou, com o motivo, em vez de ficar no calendário como Agendado.
4Acesso conferido em toda chamada
Row-level security no Postgres, uma checagem de papel em cada edge function, e acesso MCP via OAuth com PKCE, com escopo por marca e por ação, revogável numa única página.
Por um tempo, meu app local e o de produção compartilhavam um único banco de produção, e uma migração que rodou antes de um deploy uma vez esvaziou a página de Brand Kits ao vivo. Desde então, o trabalho de backend acontece primeiro numa branch do Supabase e entra em produção junto com o código que precisa dele.
Qualidade e fluxo de trabalho
Cerca de 1.000 casos de teste em 140 arquivos cobrem o app, o servidor MCP e as edge functions. Algumas checagens existem porque algo quebrou uma vez: um teste de paridade quebra o build se qualquer um dos 17 idiomas estiver sem uma chave, e as suítes de banco do MCP rodam com dados sintéticos e fazem rollback no final.
O agente tem os próprios evals. Um deles faz ao agente em produção um conjunto fixo de perguntas sobre o desempenho de uma marca, cada uma numa conversa nova, e confere se ele leu o Insights com o período certo e se a resposta traz os mesmos números que a página do Insights mostra.
Uma pessoa entregou mais de 520 pull requests tratando agentes de IA como um time. Cada mudança ganha a própria branch na própria git worktree, então o Claude Code e o Codex podem trabalhar em várias coisas ao mesmo tempo sem um atropelar o outro. Cada um roda os testes e o type check, abre um pull request pequeno, e nada é mergeado antes de eu ler.
Desafios técnicos
Cada um parecia um bug na interface e acabou sendo algo mais profundo: o formato de um stream, um timestamp, o que uma rede realmente reporta, um relógio.
Fazer a geração parecer ao vivo · Realtime
Gerar um mês de posts era um spinner e depois doze posts aparecendo de uma vez. Parecia lento, mas o problema não era o modelo. Era a granularidade.
Mudei a saída do modelo para JSON Lines e passei a fazer streaming, inserindo cada post no momento em que a linha dele fechava. O calendário escuta as mudanças do Postgres pelo Supabase Realtime e desenha os placeholders primeiro, então os posts vão se escrevendo um a um.
A mesma espera agora parece ver alguém trabalhando.
Dois timestamps que nunca batiam · Dados
O Supabase avisou que o banco estava prestes a ficar sem disk IO. As leituras estavam ok. Alguma coisa estava reescrevendo as mesmas linhas: 344 mil inserts para guardar 83 mil mensagens.
A sincronização da caixa de entrada comparava o timestamp que salvava com o que lia de volta. O Postgres devolvia como +00:00 e nós gravávamos como Z, então toda conversa parecia alterada e toda varredura baixava de novo. Comparar instantes em vez de strings resolveu.
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 83 mil mensagens
344 mil→um por mensagem nova
Conversas relidas a cada varredura
todas→só as alteradas
As escritas repetidas pararam, e históricos de caixa de entrada que nunca terminavam sincronizaram pela primeira vez.
Um zero nem sempre é zero · Analytics
Nosso provedor de analytics devolve o mesmo formato para todas as redes e preenche com 0 tudo o que uma rede não reporta. O Instagram “tinha” zero cliques em todo post. Os gráficos mentiam educadamente.
Um registro de métricas por plataforma que guarda o que cada rede realmente reporta, anula o resto na ingestão e deixa cada gráfico mostrar, degradar ou esconder uma métrica com honestidade.
Insights em oito redes que nunca mostram um número que ninguém mediu.
Deslogado por um relógio adiantado · Auth
Meu cofundador era deslogado no instante em que entrava: quinze renovações de token por segundo, depois um rate limit. Ninguém mais conseguia reproduzir.
O relógio do computador dele estava mais de uma hora adiantado, então todo token novo parecia expirado. Envolvi o armazenamento da sessão para reancorar a expiração no relógio local quando uma sessão é gravada.
Renovações de token por segundo
15→0
O login funciona com qualquer relógio de dispositivo, e o console avisa quando um está errado.
Aprendizados
Gosto é o fosso
Quando a IA deixa construir barato, todo mundo consegue lançar, e quase tudo fica com a mesma cara. O que continua escasso é julgamento: saber o que deixar de fora, como uma tela deve parecer, quando uma animação é uma a mais. Para um time de dois que não consegue gastar mais que ninguém, o gosto é o que faz a Groselia parecer e funcionar como algo muito maior, e é a única parte que eu nunca entregaria para um modelo.
Venda o resultado, não a ferramenta
Ninguém queria operar um software de marketing, por melhor que fosse. Queriam ser vistos. Vender o trabalho em vez do app fez o produto importar mais, não menos: ele virou o motor que usamos todo dia, então cada aspereza foi corrigida.
Contexto vence esperteza
O agente melhorou quando passou a saber mais, não quando o prompt ficou mais esperto. Dar a ele o calendário ao vivo, a memória e os planos abertos a cada turno, e fazê-lo perguntar antes de agir, fez mais do que qualquer upgrade de modelo.
A IA muda o tamanho do time
Com agentes escrevendo a maior parte do código em paralelo, meu trabalho passou a ser decidir o que construir, revisar cada mudança e manter a barra alta. Uma pessoa agora consegue tocar o que antes exigia um time, desde que continue sendo o editor.


