Monorepo com um pipeline Python que coleta, escreve, verifica e distribui conteúdo, uma API FastAPI para o painel, e um site Next.js que lê as matérias publicadas. Toda chamada a modelo de linguagem passa por um roteador único, que aplica fallback, teto de custo e a escolha de modelo baseada em avaliação. A produção é dirigida por rotinas agendadas que respeitam o fuso de cada edição.
- Site público
- Next.js 16, React 19 e TypeScript estrito, com rotas por idioma e editoria, busca, RSS, sitemap de notícias e consentimento de medição de audiência. Cores e tipografia vêm de um pacote de tokens; o CI barra cor fixa fora dele.
- Painel e API
- API em FastAPI com Pydantic v2, autenticação e seis papéis com permissões por método e rota (entre eles proprietário, administrador, editor, leitor, publicidade e financeiro). O painel concentra matérias, agenda editorial, redes, newsletter, desempenho de modelos e custos.
- Pipeline editorial
- Python 3.12. Coleta RSS (feedparser, trafilatura), agrupamento de pautas por embeddings em pgvector, pontuação de pauta, extração de fatos, síntese, verificação independente, revisão de língua e publicação. Prompts versionados em arquivos, nunca no código.
- Orquestração de IA
- Roteador único para OpenAI, Anthropic e Google, com cadeia de fallback por etapa, até 3 tentativas com espera crescente, saída sempre em JSON validado e teto diário de custo por etapa. O verificador nunca usa o provedor que escreveu a matéria. A ordem da cadeia é ajustada por avaliação contínua de qualidade, engajamento e preço.
- Mídia
- Vídeos verticais e horizontais montados com Remotion e ffmpeg; narração por TTS da OpenAI ou do Google, escolhida pela mesma lógica de avaliação; legendas com tempo por palavra via Whisper, que também valida se o áudio corresponde ao roteiro. Carrosséis e artes gerados com Pillow.
- Distribuição
- Publicação em Instagram, Facebook e Threads (APIs da Meta), X, YouTube e TikTok, com fila de rascunhos, reenvio controlado e descarte de rascunhos vencidos. Newsletter diária por edição com Listmonk e envio pelo Resend, incluindo tratamento de devoluções.
- Dados
- PostgreSQL 16 com pgvector, PgBouncer e Redis. Migrations Alembic reversíveis; tabelas com identificação de tenant. Decisões de modelo, auditorias de qualidade e custos de API ficam registrados para análise.
- Infraestrutura e operação
- Servidor Linux próprio com Docker Compose para banco, cache, cofre de segredos (Vaultwarden) e monitoramento (Uptime Kuma); API e site como serviços systemd atrás de nginx e Cloudflare. Produção dirigida por cron, com janelas de horário calculadas no fuso de cada edição dentro dos jobs. Ambiente de staging, scripts de deploy e rollback, rotina de backup com ensaio de restauração e Sentry.
- Qualidade
- GitHub Actions em todo push: gitleaks (segredo em commit derruba o build), ruff, pytest, verificação de cor fixa e regra de escrita. Testes espelham os módulos, incluindo roteador, verificador, portões e aprendizado de modelo. Mudança de prompt exige teste de regressão de estilo.