O Styli nasceu da ideia de criar um closet digital inteligente, onde a inteligência artificial não apenas organiza suas roupas, mas entende seu estilo pessoal e sugere combinações que você não pensaria sozinho.
Era uma sexta-feira à noite e tínhamos reserva para jantar às oito. Eu já estava pronto há vinte minutos quando ouvi, do quarto, a frase que provavelmente todo casal conhece: "Não tenho nada pra vestir." O guarda-roupa estava cheio. O problema nunca foi quantidade e sim combinação. Minha esposa experimentava uma blusa, trocava a saia, voltava para a primeira opção, pedia minha opinião sobre duas alternativas que, honestamente, eu não conseguia distinguir.
Naquela noite, enquanto esperava no sofá, abri o bloco de notas do celular e escrevi uma única linha: "app que monta looks a partir do que você já tem." Não sabia ainda que essa anotação viraria meses de trabalho, mas a semente estava plantada. Quando contei a ideia para ela no caminho do restaurante, a resposta foi imediata: "Se isso existisse, eu usaria todo dia." Foi o pontapé inicial que eu precisava.
Não existia nada no mercado que combinasse visão computacional de alta qualidade com recomendações realmente personalizadas em um app mobile. A maioria das soluções era catálogo de loja disfarçado de closet. Eu queria algo diferente: uma inteligência que entendesse o seu estilo, não o de uma vitrine. Decidi construir.

O app é construído com Flutter e Dart, rodando nativamente em iOS e Android a partir de um único codebase. O backend usa Supabase para autenticação e banco de dados, com Row Level Security garantindo isolamento de dados entre usuários. O armazenamento de imagens roda no Cloudflare R2, que oferece custos significativamente menores que S3 para o volume de fotos que o app processa.

A arquitetura segue um padrão de state management reativo com separação clara entre camada de UI, lógica de negócio e acesso a dados. Cada feature é um módulo independente, facilitando testes e manutenção.
Quando o usuário fotografa uma peça de roupa, o pipeline de IA entra em ação. A imagem é processada para gerar um embedding visual de 768 dimensões, que captura características como cor dominante, textura, padrão e silhueta. Esse vetor é indexado no Pinecone, um banco de dados vetorial otimizado para buscas por similaridade.
A classificação automática identifica tipo de peça, ocasião de uso, estação e paleta de cores, tudo sem intervenção do usuário. Quando chega a hora de montar um look, o sistema faz buscas vetoriais cruzadas para encontrar combinações harmônicas entre as peças do closet.
Essa abordagem segue o padrão de Retrieval-Augmented Generation (RAG) multimodal: em vez de depender apenas do conhecimento interno do modelo generativo, o sistema recupera peças relevantes do banco vetorial e fornece esse contexto visual ao Gemini, que então gera sugestões fundamentadas no guarda-roupa real do usuário. Conforme documentado no survey "A Survey of Multimodal Retrieval-Augmented Generation" (Mei et al., 2025 — https://arxiv.org/abs/2504.08748), essa estratégia reduz alucinações e melhora significativamente a qualidade das respostas ao ancorar a geração em dados factuais multimodais — exatamente o que diferencia o Styli de soluções que apenas geram looks genéricos sem considerar o que o usuário realmente possui.
O Styli foi um dos primeiros apps mobile a integrar IA generativa para o domínio de moda, no início de 2025, quando poucos modelos estavam disponíveis e otimizados para uso em produção mobile. Na época, a maioria das soluções de IA generativa exigia infraestrutura de GPU dedicada e latências incompatíveis com a experiência de um app.
Testei diversos modelos locais e em nuvem antes de chegar na arquitetura atual. A experimentação com fine-tuning e LoRA foi essencial para adaptar modelos de uso geral ao domínio específico de moda, onde a precisão na identificação de tecidos, caimentos e harmonias de cor faz diferença real na qualidade das sugestões.
Um dos maiores desafios em produção foi controlar os custos de API. A solução foi uma estratégia híbrida: Gemini Flash para tarefas rápidas como classificação de peças e extração de atributos básicos, e Gemini Pro para análises mais complexas como sugestão de looks e interpretação de estilo pessoal.
Implementei uma camada de cache inteligente que armazena respostas de classificação, evitando chamadas repetidas para peças já analisadas. O resultado foi uma redução de cerca de 60% nas chamadas de API sem perda perceptível de qualidade nas recomendações.
O sistema de prompt engineering foi construído com múltiplas camadas de guardrails. Cada prompt enviado aos modelos passa por validação de input multimodal, garantindo que imagens inadequadas ou tentativas de jailbreaking sejam bloqueadas antes de chegar à IA.
Os guardrails mantêm as respostas focadas no domínio de moda e estilo pessoal, evitando que o modelo seja desviado para outros assuntos. A sanitização de prompts é feita tanto no cliente quanto no servidor, criando uma defesa em profundidade.
Colocar modelos de IA em produção em um app mobile trouxe desafios que não aparecem em protótipos. A latência dos modelos varia de forma imprevisível, e o custo por requisição pode explodir se não houver controle rigoroso. Implementei circuit breakers, retry com backoff exponencial e fallbacks entre modelos para garantir que o app continue funcionando mesmo quando um provedor de IA está instável.
O monitoramento usa Sentry para crash reporting e performance monitoring, com alertas configurados para degradação de latência nas chamadas de IA. Métricas customizadas medem o engagement com cada feature de IA, permitindo decisões baseadas em dados sobre quais funcionalidades priorizar.
A gestão de assinaturas é feita pelo RevenueCat, que abstrai as diferenças entre App Store e Google Play em uma única API. O modelo freemium oferece funcionalidades básicas gratuitamente e reserva as features de IA mais avançadas para assinantes, como geração de looks completos e análise de estilo personalizada.