Fitly
Curadoria pessoal de moda com IA
Sistema de recomendação de moda que inverte a lógica da descoberta: em vez de partir do catálogo da loja, parte do guarda-roupa real do usuário. As peças que a pessoa já tem viram um vetor de gosto que representa matematicamente o estilo pessoal — e é ele quem filtra o que as lojas têm a oferecer.
Do guarda-roupa ao vetor de gosto
A partir de fotos das peças que o usuário já tem, o sistema remove o fundo, extrai atributos via visão computacional (tipo, cor, estilo, ocasião) e gera embeddings visuais com CLIP.
Esses embeddings formam um vetor de gosto: uma representação matemática do estilo pessoal que serve de base para todas as recomendações.
Detalhes técnicos
Domínio puro
Fluxo controller → service → domain → repository. O core de negócio é 100% funções puras, sem conhecer framework, banco ou loja parceira. Testável sem mocks.
Monorepo por processo
Apps separados por ciclo de vida — API HTTP, worker de jobs, bot de notificação e frontend — consumindo pacotes compartilhados de core, db, adapters e shared.
Adapters por integração externa
Toda dependência externa vive atrás de um adapter: feeds de loja, LLM, object storage, envio de mensagem, embedding. Trocar de provider ou adicionar loja nova não toca o domínio.
Storage separado do banco
Fotos ficam no Cloudflare R2 (sem custo de egress). Postgres guarda só metadados e embeddings — banco enxuto, queries de matching mais rápidas, custo controlado.
Vetor de gosto centralizado
O gosto do usuário é um único embedding: média ponderada das peças, ajustada por feedback. Ranqueamento O(n) com índice HNSW no pgvector.
LLM separado por custo
GPT-vision uma vez por peça na catalogação. Matching é matemática pura, custo zero. LLM textual entra só nas 5 finalistas semanais.
Pipeline autônomo de recomendação
Um pipeline baixa diariamente feeds de lojas parceiras, gera embeddings dos produtos e busca os mais próximos do vetor de gosto do usuário via similaridade cosseno. Promoções reais são detectadas comparando o preço atual com o histórico — nada de desconto fabricado em cima de preço inflado.
As top recomendações recebem justificativa curta gerada por LLM e chegam semanalmente ao painel do usuário. Um loop de 👍/👎 refina o vetor de gosto ao longo do tempo.
Stack
- TypeScript
- Next.js 15
- Fastify v5
- Drizzle ORM
- Supabase (Postgres + pgvector)
- BullMQ
- Redis
- grammy
- Zod
- neverthrow
- Docker
- Cloudflare R2
- CLIP (Transformers.js)
- rembg
- OpenAI
- Vercel
- Contabo VPS
- Sentry
- Biome
- Vitest