# Luis Junior > Luis Junior é desenvolvedor e empreendedor brasileiro que constrói produtos com inteligência artificial, como o estúdio de sites Pagenello e os apps ClipLeve e Garfim. Luis Junior constrói produtos com inteligência artificial, da ideia à loja, e escreve sobre as decisões de tecnologia e negócios no caminho. São mais de 20 anos transformando ideias em sistemas, operações e negócios. - Atuação: Desenvolvedor e empreendedor. Constrói produtos digitais próprios com inteligência artificial, do conceito ao lançamento. - Reconhecimentos: Finalista da 9ª edição do Prêmio Mario Covas (2013), na categoria Inovação em Gestão Municipal; Reconhecimento da OpenAI pelo uso de mais de 10 bilhões de tokens. - Contato: eu@luisjunior.ai (convites, imprensa e parcerias). - Idioma do site: português do Brasil. ## Produtos - [Pagenello](https://pagenello.com/): Estúdio de sites. Sites de uma página com a cara do negócio. Meu estúdio de sites para pequenos negócios. O cliente vê o topo do próprio site antes de pagar qualquer coisa, e eu cuido do design ao lançamento. - [ClipLeve](https://apps.apple.com/br/app/clipleve-comprimir-v%C3%ADdeos/id6821932730): App para iPhone. Vídeos mais leves, sem arriscar os originais. Cria uma versão menor do vídeo no próprio iPhone, compara antes de salvar e confere a cópia. O original só sai com a sua confirmação. - [Garfim](https://play.google.com/store/apps/details?id=br.com.garfim): App para Android e iPhone. Calorias e macros por foto, com comida de verdade. Fotografe a refeição, confira a estimativa da IA e ajuste as porções em medidas caseiras. A decisão continua com quem usa. ## Lançamentos - 27 de setembro de 2026: Garfim, primeiro capítulo da construção. https://luisjunior.ai/blog/da-ideia-ao-produto-na-era-da-ia - 3 de outubro de 2026: Pagenello, estúdio de sites aberto. https://luisjunior.ai/blog/pagenello-sites-para-pequenos-negocios - 16 de outubro de 2026: Garfim, aprovado na app store. https://luisjunior.ai/blog/garfim-aprovado-lancado-app-store - 20 de outubro de 2026: ClipLeve, lançado na app store. https://luisjunior.ai/blog/clipleve-aprovado-lancado-app-store - 22 de outubro de 2026: Garfim, chegou ao google play. https://luisjunior.ai/blog/garfim-lancado-google-play ## Textos - [Teste local verde até no S23, e o staging ainda achou um defeito.](https://luisjunior.ai/blog/garfim-teste-local-nao-valida): Como validei o Garfim em staging com serviços reais e aparelhos de verdade, achei um defeito antigo e preparei o envio da versão 0.1.4 às lojas. - [Outra IA revisou 4.170 traduções da IA em inglês e corrigiu 307.](https://luisjunior.ai/blog/traducoes-revisadas-contra-portugues): Como fechei 4.170 revisões em inglês e 4.136 em espanhol no Currículo para Vaga, com português como base, glossário fixo e build barrando falta e variável. - [A conta live do Stripe estava ativa, mas falhou na minha conferência.](https://luisjunior.ai/blog/stripe-conferido-antes-de-vender): O roteiro de conferência da conta live do Stripe no Currículo para Vaga: chaves restritas, versão dos webhooks, e-mails, Radar e retomada de entrega. - [Três regras de HSTS num só domínio: por que deixei o preload de fora.](https://luisjunior.ai/blog/hsts-sem-preload): Como resolvi a divergência entre borda, repositório e SRS no Currículo para Vaga e por que uso 6 meses de HSTS sem preload nas zonas da conta. - [Uma palavra a menos derrubou 13 páginas que já estavam no ar.](https://luisjunior.ai/blog/paginas-sumiram-do-google-portao): Como um portão do build tirou 13 páginas do Currículo para Vaga quando a nota caiu de 100 para 98, e os dados da primeira semana de busca e robôs de IA. - [Outro agente de IA revisou meu código 71 vezes e criou dois defeitos.](https://luisjunior.ai/blog/ia-revisou-meu-codigo-71-vezes): O que 71 rodadas de revisão por IA e 448 commits mudaram no Currículo para Vaga, os dois defeitos que entraram e o roteiro de auditoria que ficou. - [Depois de 20 anos de carreira, publiquei meu primeiro pacote no npm.](https://luisjunior.ai/blog/primeiro-pacote-npm-cli): Como coloquei a CLI do Currículo para Vaga no npm com GitHub Actions, teste no Node 22.13, empacotamento em monorepo e a correção do ./ no npm publish. - [Sozinho com IA: iPhone, Android, SaaS com MCP e CLI, e já faturando.](https://luisjunior.ai/blog/um-dev-com-ia-apps-saas-mcp-cli): Um app nativo em Swift, um app iOS e Android em React Native, um SaaS com API, CLI e MCP e um desktop a caminho, feitos por um dev só com IA. - [Copiei a mecânica dos líderes e recusei a mentira deles.](https://luisjunior.ai/blog/anuncio-copiar-mecanica-recusar-mentira): Garimpei anúncios, funis e avaliações da categoria para separar a mecânica que funciona da mentira que vende. Seis conceitos saíram dessa leitura. - [A pergunta de LGPD que trava a venda: e o backup?](https://luisjunior.ai/blog/lgpd-perguntas-de-produto): A pergunta que trava vendas é o destino do dado no backup. Veja as respostas sobre retenção, restauração e exclusão em até 90 dias que adotei. - [A IA calibrou minha câmera pelos números. Ficou cara de lanterna.](https://luisjunior.ai/blog/estudio-calibrar-camera-a-olho): A IA calibrou a Logitech Brio pelos números e a cena parecia uma lanterna no escuro. Veja como ajustei OBS, luz e foco manual comparando quadros. - [Um usuário não via o dia de ontem. Abri todo o passado do Garfim.](https://luisjunior.ai/blog/garfim-historico-dias-passados): A decisão de liberar a edição de qualquer dia passado no Garfim, sem limite de tempo e sem cobrar pelo que não consome IA. Veja as regras definidas. - [62% baixavam o Garfim. O problema estava antes da página.](https://luisjunior.ai/blog/garfim-ficha-das-lojas): Cerca de 62% de quem via a página baixava o Garfim, mas a busca não trazia visitas. Veja como mudei palavras-chave, capturas e textos nas lojas. - [O idioma certo na tela pode virar o errado no servidor.](https://luisjunior.ai/blog/padrao-de-idiomas-paraglide): Veja como organizo URLs e mensagens com Paraglide JS e guardo o idioma escolhido para respostas e comunicações posteriores. - [O limite de 10 por minuto que deixou passar muito mais.](https://luisjunior.ai/blog/rate-limit-cloudflare-aproximado): Entenda quando o Rate Limiting dos Workers é aproximado e como testei em produção um contador exato com rajadas em IPv4 e IPv6. - [Um PR do Dependabot travou meu banco e as rotas voltaram 500.](https://luisjunior.ai/blog/dependabot-postgres-4-hyperdrive): Veja como identifiquei conexões presas atrás do Hyperdrive e provei a correção antes de liberar uma atualização do driver. - [Meus produtos novos não começam do zero. Começam de um clone.](https://luisjunior.ai/blog/base-de-produto-clone): Uma base privada marcada como template traz site, app, conta, pagamentos e IA prontos. Cada produto clona, renomeia e apaga o que não usa. - [Tirei uma trava da minha IA e a resposta caiu de 5,5 s para 3,7 s.](https://luisjunior.ai/blog/openrouter-velocidade-primeiro): Veja como comparar provedores no OpenRouter e configurar o roteamento por throughput sem restringir a escolha de endpoints. - [Troquei velocidade por uma auditora que confere cada frase.](https://luisjunior.ai/blog/ia-auditora-confere-cada-frase): Dois recursos que escrevem em nome do usuário ganharam agente, guarda em código e auditora frase a frase. O acerto subiu e a espera também. - [Escrevi o método CERNE lendo seis especificações reais.](https://luisjunior.ai/blog/metodo-cerne-srs-com-ia): Como seis especificações reais viraram o método CERNE para escrever um SRS completo com IA, sem deixar dúvida para quem implementa. - [Como anunciar na Meta e vender online no CPF sem abrir empresa.](https://luisjunior.ai/blog/anunciar-e-vender-no-cpf): Descubra as regras oficiais para anunciar na Meta e vender produtos digitais como pessoa física no Brasil, evitando que a burocracia atrase o lançamento. - [Pausei anúncios depois de ignorar o resultado anterior.](https://luisjunior.ai/blog/pausar-canal-de-anuncio): Por que pausei um canal do Pagenello e como passei a avaliar intenção, histórico e sinais de tráfego antes de manter um canal pago. - [Como depurei um erro de API sem log no registro do Garfim.](https://luisjunior.ai/blog/garfim-voz-texto-erro-sem-log): O caso da API que falhava silenciosamente em voz e texto enquanto a foto funcionava, a mudança súbita no provedor e a lição de nunca esconder a causa no log. - [Como forçar atualização no React Native antes de um defeito grave.](https://luisjunior.ai/blog/garfim-bloquear-versao-antiga): Como o Garfim usa uma versão mínima para pedir atualização pela loja e evita bloqueios quando falta conexão ou versão conhecida. - [Como levei o LCP do ClipLeve de 9,9 s para menos de 1,5 s.](https://luisjunior.ai/blog/clipleve-site-novo-lighthouse): O diagnóstico do PNG pesado no topo, a migração para Astro em Workers e a reconstrução do site com 100 de pontuação e calculadoras úteis. - [Publiquei 650 páginas contra a regra do meu método.](https://luisjunior.ai/blog/laboratorio-busca-650-paginas): Como publiquei cerca de 650 páginas do Pagenello de uma vez, o que o build encontrou e quando vou medir a indexação delas. - [Uma conta para organizar erros, métricas e IA dos meus produtos.](https://luisjunior.ai/blog/sentry-posthog-openrouter-uma-conta): O padrão para gerenciar erros, métricas de produto e chaves de inteligência artificial em múltiplos projetos usando uma única conta central e regras claras. - [Separei o painel do site e pus o Access na porta.](https://luisjunior.ai/blog/painel-administrativo-cloudflare-access): Um script injetado no site público alcançava o painel pela sessão do operador. Separei o painel em app e endereço próprios, atrás do Access. - [Uma lista de 69 itens encontrou requisitos só no papel.](https://luisjunior.ai/blog/padrao-entre-produtos-69-itens): Como uso estados, evidências e divergências registradas para alinhar 69 itens entre produtos sem apagar o que cada um exige. - [O antispam esperou tanto que parou o formulário.](https://luisjunior.ai/blog/turnstile-barrando-visitante): Como defini o que bloquear quando o Turnstile falha, o que deixar passar e o que registrar para manter a captura disponível. - [Cortei a publicação de 17 minutos para 4 na minha máquina.](https://luisjunior.ai/blog/publicar-da-minha-maquina-ci-cd): Como medi o gargalo do build, passei a publicar da minha máquina com gate e ship e mantive uma rede curta no GitHub Actions. - [Eu gravo. A IA corta, legenda e entrega o vídeo curto.](https://luisjunior.ai/blog/edicao-de-video-com-ia): Eu gravo uma vez e a IA corta pausas, acerta legendas e normaliza a voz com regras fixas. Veja o passo a passo que uso nos vídeos curtos. - [Como criar anúncios UGC com IA usando o método PROVA.](https://luisjunior.ai/blog/metodo-prova-ugc-por-ia): As cinco batidas do método PROVA, o teste do corte e os dados que favorecem demonstrar o produto em anúncios curtos com IA. - [A IA disse que usou as skills. A página provou o contrário.](https://luisjunior.ai/blog/ia-disse-que-usou-as-skills): A IA afirmou que aplicou as skills e entregou uma página reprovada. Aprenda a conferir o que foi aberto, executado e deixado de fora. - [Nove páginas reprovadas antes de encontrar uma identidade.](https://luisjunior.ai/blog/metodo-mundo-site-com-identidade): Como usei uma régua, regras e arte própria para criar uma identidade de site com IA e o que a medição ainda não consegue provar. - [Em 48 horas, juntei domínios, e‑mail, sites e medição num padrão só.](https://luisjunior.ai/blog/arrumando-a-casa-48-horas): Por que juntei domínios, e-mail, sites, busca e medição de todos os meus produtos num padrão só, e a regra que guiou cada escolha. - [Por que tirei os três sites do GPT Sites.](https://luisjunior.ai/blog/por-que-sai-do-gpt-sites): O GPT Sites colocou meus três sites no ar, mas não dava HSTS na raiz, código no repositório nem controle sobre o que cada página carrega. - [Como troquei o luisjunior.ai com cerca de 10 segundos fora do ar.](https://luisjunior.ai/blog/migrar-site-astro-cloudflare-workers): O roteiro para levar três sites no ar para Astro em Workers da Cloudflare sem mudar URLs: o inventário, a ordem da troca e a conferência depois. - [Refiz o luisjunior.ai do zero: cada afirmação com prova.](https://luisjunior.ai/blog/novo-luisjunior-ai): Como o site novo do luisjunior.ai ganhou prova para cada afirmação, por que a grade de tokens saiu e quais números medidos ele entregou. - [Um padrão para todos os domínios, inclusive os de produtos futuros.](https://luisjunior.ai/blog/padrao-de-dominios-cloudflare): Os oito pontos do padrão de domínio que defini, como os domínios estavam, o que apliquei em 29 e 30 de outubro e o que ficou pendente. - [Todo o e‑mail dos meus domínios saiu do VPS num só dia.](https://luisjunior.ai/blog/email-dos-produtos-na-cloudflare): Como levei as caixas de todos os meus domínios do VPS para a Cloudflare, com Email Routing, Email Sending e um webmail que atende a todos. - [Decidi mover o envio do Garfim do Resend para a Cloudflare.](https://luisjunior.ai/blog/resend-para-cloudflare-email-sending): O Garfim ainda envia pelo Resend. Explico por que vou mover esse envio para o Cloudflare Email Sending, o que se perde e o que falta resolver. - [O método FONTE para aparecer no Google e nas respostas de IA.](https://luisjunior.ai/blog/seo-aeo-geo-metodo-fonte): SEO, AEO e GEO explicados, os números de 2026 sobre AI Overviews e citações, a escada de visibilidade e as cinco camadas do método FONTE. - [Três sites, três decisões de busca, e uma delas é não gerar páginas.](https://luisjunior.ai/blog/seo-aeo-geo-na-pratica): Na primeira rodada do método FONTE, cada um dos meus três sites recebeu uma decisão de busca. No site pessoal, a decisão foi não gerar páginas em escala. - [Medição de vários sites num painel só, com consentimento.](https://luisjunior.ai/blog/google-analytics-varios-sites-um-painel): Como medi todos os sites dos meus produtos no mesmo GA4, com consentimento, e juntei os dados num painel só. Também conto o site que não coletava visitas. - [Como a IA me apresenta mídias para aprovação](https://luisjunior.ai/blog/como-a-ia-me-apresenta-midias-para-aprovacao): Nos bastidores do Garfim: uma galeria com 13 peças, filtros por loja e imagens ampliáveis transforma a entrega da IA em algo que posso revisar e aprovar. - [O Garfim chegou ao Google Play. Agora tem Android e iPhone.](https://luisjunior.ai/blog/garfim-lancado-google-play): O Garfim está disponível para Android. Depois dos testes e da espera, os links de download, o que dá para fazer no app e os aprendizados de chegar às duas lojas. - [Conseguir testadores e esperar 14 dias: a reta final do Garfim no Android.](https://luisjunior.ai/blog/garfim-testadores-14-dias-antes-do-lancamento): Reunir pessoas para testar o Garfim foi uma das partes difíceis do lançamento. O que aprendi sobre convites, tempo, responsabilidade e a espera pelo Google Play. - [O ClipLeve chegou à App Store. O que aprendi até aqui.](https://luisjunior.ai/blog/clipleve-aprovado-lancado-app-store): Meu aplicativo para deixar vídeos mais leves no iPhone foi lançado. As decisões sobre imagem, originais, compras e acessibilidade que deram trabalho e mudaram minha forma de construir produtos. - [O ClipLeve foi rejeitado de novo. Dessa vez, por uma palavra.](https://luisjunior.ai/blog/clipleve-nova-rejeicao-subtitulo-app-store): Depois de gravar a demonstração no iPhone e responder à Apple, um termo no subtítulo em inglês trouxe outra negativa. O que esse percurso me ensinou sobre preparar um produto para a loja. - [O Garfim foi aprovado. E já está na App Store.](https://luisjunior.ai/blog/garfim-aprovado-lancado-app-store): Depois das revisões, dos testes e do reenvio, o Garfim chegou ao iPhone. O que está disponível no lançamento e o trabalho que começa com as primeiras pessoas usando. - [A última negativa do Garfim: câmera, assinatura e o caminho inteiro.](https://luisjunior.ai/blog/garfim-ultima-negativa-camera-assinaturas): A Apple apontou dois problemas na revisão de 15 de outubro. O que precisei conferir entre explicar uma permissão, carregar os planos e recuperar uma compra. - [ClipLeve: o cuidado por trás de um vídeo mais leve.](https://luisjunior.ai/blog/clipleve-videos-mais-leves-no-iphone): Qualidade da imagem, segurança do original e navegação com VoiceOver: as decisões que estão dando forma ao meu aplicativo para iPhone. - [Por que restaurar uma assinatura pode falhar em outra conta.](https://luisjunior.ai/blog/garfim-assinaturas-iphone-testflight): Uma assinatura ativa pode parecer perdida quando a compra pertence a outra conta do aplicativo. O que esse caso me fez ajustar no Garfim. - [Quando um aplicativo pode dizer que sua conta foi excluída?](https://luisjunior.ai/blog/garfim-confirmacao-exclusao-conta): Receber um pedido de exclusão e concluir a remoção são etapas diferentes. Como organizei a confirmação do Garfim para respeitar essa diferença. - [O que a primeira negativa da App Store me fez explicar.](https://luisjunior.ai/blog/garfim-primeira-negativa-app-store): A Apple pediu uma demonstração do Garfim e mais informações. Preparar a resposta exige olhar o produto com os olhos de quem acaba de chegar. - [O que quero aprender com o teste fechado do Garfim.](https://luisjunior.ai/blog/garfim-testadores-teste-fechado-google-play): Ter participantes inscritos ainda não mostra se o aplicativo cabe na rotina. Como observo dificuldades de uso no teste fechado do Garfim. - [O trabalho de uma assinatura continua depois da compra.](https://luisjunior.ai/blog/garfim-assinaturas-google-play): Cancelamento, restauração e avisos atrasados: as decisões por trás da integração direta do Garfim com o Google Play. - [Por que o Garfim ganhou um plano gratuito.](https://luisjunior.ai/blog/garfim-plano-gratuito): Um diário alimentar precisa caber na rotina antes de pedir uma assinatura. Como essa escolha mudou a entrada, os limites e a continuidade do Garfim. - [O login funcionou. Por que a tela do Garfim não saiu do lugar?](https://luisjunior.ai/blog/garfim-testes-internos-android): Um teste no Android mostrou a distância entre uma sessão criada e uma pessoa que consegue entrar. O que esse episódio mudou na forma de conferir o aplicativo. - [Pagenello: um site começa pelo que o visitante veio fazer.](https://luisjunior.ai/blog/pagenello-sites-para-pequenos-negocios): Cardápio, endereço, trabalhos ou orçamento: como a intenção de quem visita orienta os sites que estou construindo para pequenos negócios. - [Como uma foto do almoço vira um produto.](https://luisjunior.ai/blog/da-ideia-ao-produto-na-era-da-ia): Porções, comida brasileira e espaço para corrigir a IA: as decisões que dão forma ao Garfim antes de escrever a primeira tela. - [As decisões que continuo tomando ao desenvolver com IA.](https://luisjunior.ai/blog/desenvolver-com-ia-alem-do-codigo): De onde vêm os números, quanto custa cada uso e como lidar com falhas: o que preciso resolver para transformar código em um aplicativo útil. - [Apresentar o Garfim ao público também é um teste do produto.](https://luisjunior.ai/blog/garfim-preparando-o-lancamento): A página de lançamento coloca uma pergunta à prova: alguém que nunca viu o aplicativo consegue entender o que ele faz e o que esperar dele? ## Páginas - [Início](https://luisjunior.ai/): Quem é Luis Junior, produtos, lançamentos, reconhecimentos e contato. - [Sobre](https://luisjunior.ai/sobre): Bio para citar, fatos com data, produtos, fotos para imprensa e canais. - [Bastidores](https://luisjunior.ai/blog): Todos os textos, com as séries Construindo o Garfim, Construindo o ClipLeve, Arrumando a casa, Como trabalho com IA, Laboratório de busca e Vender pelo anúncio. - [Versão completa](https://luisjunior.ai/llms-full.txt): Todos os textos na íntegra, em um só arquivo. - [Privacidade](https://luisjunior.ai/privacidade) e [Termos de uso](https://luisjunior.ai/termos). ## Redes - [YouTube](https://www.youtube.com/@LuisJunior): @LuisJunior - [Instagram](https://www.instagram.com/luisjuniorj/): @luisjuniorj - [LinkedIn](https://www.linkedin.com/in/luisjuniorj/): /in/luisjuniorj - [TikTok](https://www.tiktok.com/@luisjuniorjj): @luisjuniorjj - [X](https://x.com/luisjuniorj): @luisjuniorj - [Facebook](https://www.facebook.com/luisjuniorj/): @luisjuniorj