VIBE IN PUBLIC_

Como vender SaaS sem cartão de crédito: a lição de vibe coding do Lume

Como o Lume trava o trial de 3 dias sem pedir cartão: ID da máquina e e-mail vinculados à assinatura, com Stripe, CryptoLens e um worker na Cloudflare.

Dá para soltar um SaaS desktop em trial de três dias sem pedir cartão de crédito na entrada e ainda assim impedir que o usuário desinstale, instale de novo e ganhe mais três dias. O que decide isso é onde a licença fica ancorada. Roberto Rocha ancorou no ID da máquina e no e-mail, e com isso o licenciamento SaaS do Lume, o app de teleprompter e gravação de tela que ele vende para creators, passou a se resolver sozinho quando o terceiro dia acaba.

O produto já vendia antes de existir qualquer controle disso. Três meses no ar, os clientes todos pagando assinatura, dois cancelamentos, e nenhuma gestão de licença: "era MVP, se ele tava pagando ou não tava pagando, tanto faz". Adiar essa peça não matou o Lume, e essa é a primeira metade da lição. A segunda apareceu na hora de implementar: cobrar não era o problema. Isso aparece também em licenciamento saas.

Cobrar é a parte fácil do licenciamento SaaS

O Stripe resolve o dinheiro, e resolve rápido. Quem constrói com vibe coding costuma chegar nessa parte primeiro justamente porque ela tem tutorial pronto e API testada. O que o gateway não resolve é o sujeito que baixou o app, usou os três dias e apagou tudo para recomeçar limpo.

Para essa outra pergunta o Roberto colocou o CryptoLens guardando e validando a licença, e escreveu um worker na Cloudflare com uma API costurando os dois lados. O PostHog entrou em cima, olhando os acessos do usuário e marcando os disparos. A arquitetura toda existe para responder algo que o checkout não responde: em vez de "esse cara pagou", ela responde "esta cópia do app pode rodar agora".

Vincular na máquina é o que fecha a porta do trial

"A gente vai soltar ele como free trial ali, três dias, sem pedir cartão de crédito [...] e daí vincula o ID da máquina àquela assinatura e ao e-mail do usuário. Passou desse período, trava o app. Pode tirar, instalar de novo, não dá [...] porque ele fica vinculado na máquina."

E-mail sozinho cai no primeiro endereço novo. ID de máquina sozinho cai numa segunda máquina ou numa VM. Os dois amarrados juntos deixam a burla mais cara do que a assinatura, e é só isso que um trial precisa fazer.

O preço dessa escolha é o usuário legítimo que troca de notebook e bate na porta trancada. O Roberto tem para onde mandar esse caso, porque o canal de suporte do Lume é o Instagram dele, onde o usuário já grava a telinha e mostra o que aconteceu. Se você trava por máquina e não tem esse lugar combinado, o trial vira ticket sem dono.

O que o vibe coding cobra por essa decisão

Travar por máquina custa uma implementação por plataforma, e aqui o Lume já carregava uma dívida. O app nasceu só para Mac, os usuários começaram a pedir Windows, e a tentativa de unificar tudo em Electron consumiu dias sem sair do lugar: "fiquei três, quatro dias só tentando isso e não ia de jeito nenhum". Ele largou a unificação, refez em um dia uma versão só para Windows e uma só para Mac, e funcionou de primeira. "Eu sei que vai me dar trabalho de manutenção, mas eu achei melhor fazer isso."

Então o licenciamento nasceu duplicado, um para cada app, mais um release update automático que empurra correção direto na máquina do usuário sem pedir download novo. Integração de pagamento, licença, bloqueio e update automático ficaram prontos em três ou quatro dias de trabalho. O que sobrou de lento foi a página: "é incrível que o que demora mais é o site". Quem planeja um lançamento assim erra a conta quando reserva a semana para o código e o fim de semana para a landing page.

O preço fica visível, a fricção é que espera

Tirar o cartão da entrada é diferente de esconder o preço. A página mostra o mensal de 17 dólares e um Lifetime ao lado, com o trial de três dias anunciado como teste sem cartão. O Roberto prefere que o usuário entre no mensal, e sabe por quê: "tenho quase certeza que esses 17 dólares não se paga na entrada". Repare que essa é uma conta feita de cabeça, com um custo médio por cliente, e é ela que decide se o Lifetime está barato demais: quem instrumenta o custo real de cada assinatura em vez do agregado troca o "quase certeza" por um número, e é essa a diferença que aparece em vibe coding para guardar valor unitário em vez de média. O cliente só fica no azul depois de alguns meses de assinatura, o que faz um Lifetime barato demais estragar a conta e faz o trial sem cartão valer a pena, porque é ele que traz volume suficiente para a conta existir. Tirar o cartão da porta é uma das formas de usar vibe coding para baixar a barreira de entrada do preço sem mexer no número que aparece na tela: o que muda é quando o usuário paga, não quanto. Vale ver como isso terminou em estrategia para vender como afiliado. Isso aparece também em vibe coding para nao vender em grupo de estudo. Foi o mesmo caminho de vibe coding para nao vender a ferramenta da sua vantagem.

Fixar os pisos do seu serviço é o primeiro passo para não descontar o preço só porque o tempo caiu. Isso aparece também em como precificar pacote de servicos com vibe coding. A ordem da precificação é importante: você define o desconto de lançamento DEPOIS de ter o preço cheio fixo. Como precificar saas com vibe coding trata exatamente esse caso, onde o desconto tem que ficar colado no preço final. Vale ver como isso se manifesta em como postar automatico no tiktok sem api. E também em como conseguir os primeiros clientes. O mesmo problema apareceu em micro saas. Foi o mesmo caminho de como criar um saas com ia.

Fazer o custo de aquisição antes de desenhar a tela de preço é uma das leis que o movimento repete.

Se você tem um MVP desktop rodando no "tanto faz quem pagou", a ordem que funcionou aqui cabe numa semana. Escolha as duas âncoras da licença antes de escrever a tela de checkout, e decida o que o app faz no minuto exato em que trava, que de preferência é abrir a tela de compra em vez de fechar sozinho. Depois disso, deixe um canal de suporte combinado para quem trocou de máquina, porque esse chamado vai chegar. O Roberto montou tudo isso enquanto refazia a landing page do produto, e dá para assistir à live inteira.