← Todos os projetos
// 0012026live

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.

fitly.paulodalberto.comAbrir ↗
// 01

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.

// 02

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.

// 03

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.

// 04

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