Mimic — Decisões técnicas
Decisões — Mimic
D1 — Motion transfer (Opção A) em vez de full diffusion (Opção B) no MVP
Por quê: end-to-end diffusion (Wan 2.2 + LoRA) é mais flexível mas: lento (10min/vídeo), instável em identidade frame-a-frame, custo H100 alto. Motion transfer com MimicMotion roda em A100 em 3min e preserva identidade melhor.
Quando reconsiderar: quando MimicMotion limitar criatividade (cenas com múltiplas pessoas, motion não-humano).
D2 — F5-TTS em vez de ElevenLabs
Por quê: ElevenLabs custa $0.30/1k chars e proíbe alguns usos comerciais sem plano enterprise. F5-TTS é open-source, roda em L4 ($0.40/h), qualidade PT-BR comparável após fine-tune leve.
Risco: F5-TTS PT-BR pode precisar fine-tuning específico. Backup: XTTSv2 ou Fish Speech v1.5.
D3 — RunPod Serverless em vez de VPS GPU dedicada (no início)
Por quê: tráfego inicial será burst (poucos vídeos/dia). Serverless paga só uso. Cold start 30-60s aceitável p/ user que aceita "vídeo em ~10min".
Quando migrar p/ dedicada: quando volume ≥ 50 vídeos/dia em janela de 8h (utilização > 60%).
D4 — Cloudflare R2 em vez de S3 ou MinIO
Por quê: R2 não cobra egress. Plataforma serve vídeos finais via CDN. S3 explodiria custo em download. MinIO self-host adiciona ops.
Risco: vendor lock. Mitigação: API S3-compatível, migrável.
D5 — Bun + Elysia + Drizzle (stack default user)
Por quê: stack já definida em preferências user (LunaCRM, vek1). Reuso de skills/agents do vault.
D6 — Worker Python em vez de TS para IA
Por quê: PyTorch/Diffusers só funcionam direito em Python. Worker faz HTTP/queue bridge com API TS via BullMQ.
Como: Python worker consome BullMQ via redis lib, processa, atualiza job via HTTP callback.
D7 — Consent obrigatório com selfie+código
Por quê: deepfake misuse = risco existencial. Plataforma tem que provar boa-fé. Bloqueia uso da imagem de terceiros.
Como: no upload do avatar, user precisa enviar selfie segurando papel com código gerado na hora. Modelo de visão valida match facial + leitura código.
D8 — Watermark invisível (SynthID-like)
Por quê: rastreabilidade caso vídeo seja usado pra fraude. Não impede uso legítimo.
Como: lib invisible-watermark ou modelo próprio. Embed timestamp + job_id.
D9 — Não armazenar vídeo TikTok original > 24h
Por quê: copyright. Vídeo original é input transitório. Output (com avatar do user) é derivado e pertence ao user.
Implementação: cron deleta tiktok_downloads/* > 24h.
Decisões pendentes
- Nome final do produto
- Modelo de cobrança: créditos vs assinatura vs híbrido
- BG: mantém original sempre ou oferece "gerar BG novo"?
- Idiomas no MVP: só PT-BR ou + EN/ES?
- Tamanho máximo vídeo input: 30s? 60s?