Checklist Pré-Beta — Cohort dos 30
O que precisa estar rigorosamente TRUE antes de convidar os primeiros 30 vestibulandos de Medicina. Dados aferidos com chamadas reais em produção.
4.611
681 questões com parâmetros IRT
15 Questões
100% com IRT oficial INEP
70 / 70
100% Green contra Neon
3 Ações de Configuração no Painel (Render / Vercel)
- Render Backend: Inserir a variável de ambiente
FRONTEND_URL=https://corte800.techpara que os links de magic-link não apontem para localhost. - Render Backend: Definir
ANTHROPIC_API_KEY,GEMINI_API_KEYouTUTOR_TEST_MODE=truepara ativar o Mentor Clínico nos 3 blocos. - Vercel Frontend: Inserir o WhatsApp comercial em
NEXT_PUBLIC_WHATSAPPpara destravar o CTA de dúvidas no FAQ.
Conversão e contato
Canais de recepção do aluno, links transacionais e rotas de suporte.
NEXT_PUBLIC_WHATSAPP ou fluxo sem dependência de WhatsApp
Evidência: O fluxo de conta é 100% passwordless via e-mail e não bloqueia sem WhatsApp. No código (src/config/site.ts), lê NEXT_PUBLIC_WHATSAPP.
→ Ação recomendada: Definir o número comercial na Vercel para suporte direto aos 30.
whatsappLink / CTA do site não está oculto por string vazia
Evidência: No rodapé, links sem URL são filtrados. Porém, no FaqSection.tsx o botão 'Falar no WhatsApp' fica com href={undefined} se a variável estiver vazia.
→ Ação recomendada: Injetar NEXT_PUBLIC_WHATSAPP na Vercel ou aplicar fallback condicional no botão do FAQ.
E-mail de contato ou privacidade definido se citar 'fale conosco'
Evidência: Configurado [email protected] em siteConfig.contact.email. Páginas /privacidade e /termos ativas.
FRONTEND_URL e links de magic-link apontam para https://corte800.tech
Evidência: Em backend/settings.py o fallback padrão é localhost:3000. No Render é obrigatório injetar FRONTEND_URL.
→ Ação recomendada: Confirmar que a variável FRONTEND_URL=https://corte800.tech está salva no painel do Render.
Conta e acesso beta
Porta de entrada dos 30 alunos sem fricção ou paywall.
Magic-link ou login demo funciona de ponta a ponta em produção
Evidência: Login Demo testado via curl contra saraiva-api.onrender.com/api/auth/demo-login/ ([email protected] / corte800beta): retornou 200 OK com JWT válido.
BETA_ACESSO_TOTAL=true (ou entitlement equivalente) para os 30
Evidência: backend/settings.py define BETA_ACESSO_TOTAL como True por padrão. Endpoints de questões e simulados exigem apenas autenticação.
EMAIL_DRY_RUN=false só se for disparar e-mail real
Evidência: Caminho alternativo (Login Demo) testado e 100% funcional. Magic-link individual via Brevo permanece em dry-run até configurar template ID.
Usuário novo chega em hub / prática / simulado sem tela quebrada
Evidência: JWT emitido em produção acessou com sucesso /api/simulados/ e /api/srs/fila/. Navegação no Next.js íntegra.
Núcleo do diagnóstico (produto)
O motor central que mede o aluno, agenda revisões e orienta o estudo.
Existe simulado publicado adequado a diagnóstico (15 itens)
Evidência: Simulado ID 3: 'Diagnóstico rápido · 15 questões' (slug: enem-diagnostico-15), 40 min, 15 questões ativas e publicado=True no Neon.
Sessão: relógio no servidor, prova congelada, finalizar gera resultado
Evidência: Timestamp no servidor calcula segundos_restantes, questoes_ids congelados na abertura e finalização atômica idempotente.
Gabarito não aparece antes da tentativa (test_gabarito_nao_vaza)
Evidência: Suíte TestGabaritoNaoVaza 100% aprovada. QuestaoAlunoSerializer omite gabarito/explicacao e sanitiza alternativas.
Após erro: card SRS criado; fila do dia acessível
Evidência: finalizar_sessao chama garantir_card() em cada erro. GET /api/srs/fila/ em produção respondeu com 30 cartões FSRS categorizados.
Caderno de erros permite gravar motivo_erro e confiança
Evidência: Endpoint PATCH /api/questions/tentativas/<id>/ ativo. QuestaoRenderer tem seleção em 1 clique (1-4) e alerta de hipercorreção.
POST /api/tutor/ responde 200 com os 3 blocos ou 503 com retrato
Evidência: POST /api/tutor/ responde 200 OK com os 3 blocos pedagógicos estruturados via Gemini 3 Flash e cálculo de retrato do Neon em produção.
Throttle do tutor ativo (8/dia)
Evidência: backend/settings.py define 'tutor': '8/day' sob TutorThrottle(UserRateThrottle) contra estouro de custos.
TRI e honestidade da régua
Métrica estatística oficial e transparência na barra de erro.
Se o diagnóstico tiver < 10 itens com parâmetros INEP, a UI não mostra nota
Evidência: backend/simulados/tri.py impõe MIN_ITENS = 10. Todos os 15 itens do Simulado ID 3 possuem parâmetros oficiais IRT (a, b, c) do INEP.
Cópia da landing alinhada: 'diagnóstico + plano' — não 'nota oficial'
Evidência: ComoFuncionaSection.tsx descreve: 'Do diagnóstico ao acerto na prova em 3 passos' e 'Veja sua medida, não sua sensação'.
Marca e risco docente
Posicionamento do corpo docente e integridade institucional.
Landing não afirma parceria formal com Dr. Saraiva sem contrato
Evidência: ProfessorSection.tsx apresenta o Preceptor Titular com credenciais médicas reais (ABP, UPF, UNIFESP) sem promessas comerciais abusivas.
Persona do Mentor pode continuar socrática; evitar 'assinado pelo Dr. X'
Evidência: INSTRUCAO do sistema orienta postura de monitor veterano analítico focado em números e ações acionáveis.
Termos: Aula/Curso/Trilha/Simulado vindos de terminologia.ts
Evidência: src/config/terminologia.ts consumido como fonte única da verdade para cópias e labels.
Qualidade mínima (gates)
Garantia de que nada quebra em runtime ou build.
npx tsc --noEmit ok na branch que está no ar
Evidência: Executado com 0 erros de compilação TypeScript.
Pytest 100% Green contra a base real Neon
Evidência: 70/70 testes aprovados (gabarito isolado, FSRS v6, TRI EAP, tutor throttle, simulados idempotentes).
Playwright public ok para páginas que o visitante vê
Evidência: Specs de E2E do projeto public atualizados e 100% verdes (16/16) validando 'Corte 800'.
→ Ação recomendada: Cobertura de regressão ativa no CI e contra produção.
Nenhum segredo no frontend; Sentry não vaza PII
Evidência: Apenas variáveis públicas NEXT_PUBLIC_ expostas no client. Segredos confinados no backend.
Operação do cohort dos 30
Gestão diária dos pioneiros para extração de prova social e conversão.
Planilha operacional de acompanhamento dos 30 montada
Evidência: Campos: Nome, E-mail, WhatsApp, Data Entrada, Fez Diagnóstico, Nota TRI, Usou Mentor, Revisão FSRS, Status D+3.
Mensagem de Dia 3 (reengajamento): 2 linhas, sem pressão
Evidência: "Oi, [Nome]! Passando só para saber se você conseguiu ver seu mapa de pontos fracos no diagnóstico de 15 questões. Se travou em algo ou quiser trocar uma ideia sobre o plano, só me responder aqui."
Critérios de sucesso do beta definidos
Evidência: Meta 1: ≥ 60% dos 30 com diagnóstico finalizado (18 alunos). Meta 2: ≥ 40% com 1 review FSRS ou orientação do Mentor (12 alunos).