Concurse
Converte editais de concurso em trilhas de estudo geradas por IA.

[ O projeto ]
Plataforma gamificada de estudo para concursos públicos. Desenvolvimento solo, end-to-end: produto, modelagem de dados, backend, frontend, pipeline de IA, pagamento e aquisição. Multitenancy com Row Level Security em todas as tabelas e CI com typecheck e testes automatizados.
[ stack ]
- Next.js 16
- React 19
- TypeScript
- Tailwind v4
- Supabase
- Postgres + RLS
- DeepSeek
- ts-fsrs
- pdf-parse
- Zod
- AbacatePay
- Meta CAPI
- Vercel
- GitHub Actions
[ Decisões técnicas ]
- 01
Pipeline de IA que roda offline, em workers de linha de comando, nunca no runtime do usuário: extrai a estrutura do edital direto do PDF, gera questões no estilo da banca (Certo/Errado para Cebraspe, múltipla escolha para FGV) e valida em lotes de dez antes de publicar. Custo de centavos por edital e nenhuma espera por LLM.
- 02
O system prompt é mantido estável entre chamadas de propósito, para o prefixo bater no cache de contexto do DeepSeek e sair por cerca de um décimo do preço. Cada chamada tem custo estimado e registrado.
- 03
Curadoria como máquina de estados — rascunho, validada, publicada ou reprovada — com veredito e motivo gravados para auditoria. Toda saída do modelo passa por schema Zod e invariantes estruturais antes de tocar o banco.
- 04
Deduplicação por similaridade de Jaccard sobre tokens normalizados, com limiar de 0,85. Escolha deliberada: resolve o problema real do MVP sem infraestrutura de embeddings, que entra quando o volume justificar.
- 05
Motor pedagógico com repetição espaçada (FSRS) e um session mixer que monta cada sessão de quinze questões em 35% de revisão vencida, 55% de conteúdo novo e 10% de desafio, com teto de 40% por tópico e intercalação que impede duas questões seguidas do mesmo assunto.
- 06
Progressão em ondas: a onda seguinte só destrava quando todos os tópicos da atual atingem o domínio mínimo — e volta a trancar se o domínio decai.
- 07
Previsão de nota com encolhimento bayesiano e prior pessimista, modelando a regra real da Cebraspe: 120 questões em três blocos, erro anulando acerto, líquido com piso zero por bloco e eliminação abaixo do mínimo. Inflar o número destruiria a confiança de quem estuda.
- 08
Sobre os mesmos workers rodam também flashcards, leitura gerada, simulado, lei seca, ofensiva e ranking — um único pipeline alimentando seis formatos de estudo.
- 09
Assinaturas com webhooks idempotentes: decisão isolada como função pura e testável, validação HMAC, tabela de eventos com chave única e parsing tolerante a variações de payload do gateway.
- 10
Tracking de aquisição server-side com deduplicação browser/servidor por event_id, rota first-party resistente a adblocker, PII hasheada em SHA-256 e evento de compra originado apenas no webhook — sem conversão falsa.