Voltar ao portfólio
IA & Assistentes

Paper Compass

Assistente acadêmico para fluxos de pesquisa.

Abrir app Abrir no Lovable

Descrição completa

Assistente acadêmico para fluxos de pesquisa.

Stack atual: IA, PDF. Já está publicado e acessível via URL pública.

Estágio atual: Protótipo (45% de maturidade estimada). O foco do próximo ciclo deve ser fechar os gaps de segurança listados ao lado, antes de abrir para clientes externos.

Diagnóstico desse app

3 OK3 Atenção1 Crítico

Visão por área com a evidência usada para classificar cada status e a ação concreta para mudar de patamar.

Publicação

OK

Evidência: Publicado em academe-aid-flow.lovable.app. Roda em subdomínio *.lovable.app.

Recomendação: Para clientes pagantes, mover para domínio próprio em Settings → Domains e revisar política de cache.

GitHub / código-fonte

Crítico

Evidência: Repositório GitHub não está conectado — código vive apenas dentro do Lovable.

Recomendação: Menu (+) → GitHub → Connect project. Habilita backup, code review e CI/CD próprio.

Autenticação

OK

Evidência: App não exige login — sem superfície de auth a proteger.

Recomendação: Se um dia exigir conta, ativar email/senha + Google e já incluir MFA + HIBP.

Banco de dados

OK

Evidência: App não persiste dados em banco.

Recomendação: Se adicionar banco, começar já com RLS ligada e GRANTs explícitos.

Uploads (Storage / PDF)

Atenção

Evidência: 2/3 controles. Pendentes: Validar tipo/tamanho antes de processar.

Recomendação: No handler de upload: checar mime real (magic bytes), extensão e limite de bytes antes de salvar.

IA & custos

Atenção

Evidência: 3/4 controles. Pendentes: Moderação de prompts e respostas.

Recomendação: Pré-filtro de prompt (lista de termos + moderation API) e logar input/output para auditoria.

Baseline (logs, SEO, validação)

Atenção

Evidência: 4/5 fundamentos no lugar. Pendentes: Logs estruturados + Sentry no client e server.

Recomendação: Instalar Sentry no client e nas server functions; capturar erros com user.id e contexto da rota.

Riscos e recomendações prioritárias

  1. 1
    AltoIA & custos

    Moderação de prompts e respostas

    Por quê: Sem teto de uso, o custo de IA escala silenciosamente e prompts maliciosos passam.

    Ação: Pré-filtro de prompt (lista de termos + moderation API) e logar input/output para auditoria.

  2. 2
    AltoUpload e processamento de PDF

    Validar tipo/tamanho antes de processar

    Por quê: Entrada não validada é o vetor mais comum de injeção e bug em produção.

    Ação: No handler de upload: checar mime real (magic bytes), extensão e limite de bytes antes de salvar.

  3. 3
    MédioBaseline (todo app deveria ter)

    Logs estruturados + Sentry no client e server

    Por quê: Sem observabilidade, você descobre o incidente pelo cliente reclamando.

    Ação: Instalar Sentry no client e nas server functions; capturar erros com user.id e contexto da rota.

  4. 4
    MédioEspecíficos deste app

    Auth com MFA + HIBP

    Por quê: Conta sequestrada vira porta de entrada para todo o resto.

    Ação: Cloud → Users → Auth Settings → habilitar MFA (TOTP) e exigir para roles admin.

  5. 5
    MédioEspecíficos deste app

    Revisão de RLS por tabela

    Por quê: Sem RLS/GRANT correto, qualquer usuário pode ler ou alterar dados de outros.

    Ação: Para cada tabela em public.*: ALTER TABLE … ENABLE ROW LEVEL SECURITY + policy escrita com auth.uid().

  6. 6
    MédioEspecíficos deste app

    Rate limit nas APIs

    Por quê: Sem rate limit, um único usuário derruba ou inflaciona o custo do serviço.

    Ação: Middleware por IP+user_id (ex: 60 req/min) com bucket no Redis ou tabela com TTL.

  7. 7
    MédioEspecíficos deste app

    Limite de uso por usuário

    Por quê: Item pendente do checklist — endereçar antes de abrir para clientes externos.

    Ação: Tabela ai_usage(user_id, day, tokens) + checagem no início de cada chamada; bloqueio acima do teto.

  8. 8
    MédioEspecíficos deste app

    Custos por chamada monitorados

    Por quê: Sem teto de uso, o custo de IA escala silenciosamente e prompts maliciosos passam.

    Ação: Implementar: Custos por chamada monitorados.

Mostrando 8 de 10 risco(s) com filtro atual. Os demais aparecem no checklist abaixo.

Checklist completo

9/19 (47%)

Cada item traz status (OK · Atenção · Crítico) e, quando pendente, a recomendação específica de correção.

Baseline (todo app deveria ter)

4/5 OK
  • Validação Zod em toda server functionOK
  • Rate limit por usuário/IPOK
  • Logs estruturados + Sentry no client e serverAtenção

    Como corrigir: Instalar Sentry no client e nas server functions; capturar erros com user.id e contexto da rota.

  • SEO mínimo (head/meta + OG) por rota públicaOK
  • Páginas de Privacidade e TermosOK

IA & custos

3/4 OK
  • Orçamento mensal por usuárioOK
  • Moderação de prompts e respostasAtenção

    Como corrigir: Pré-filtro de prompt (lista de termos + moderation API) e logar input/output para auditoria.

  • Logs de uso e custo por chamadaOK
  • Fallback quando o provedor falhaOK

Upload e processamento de PDF

2/3 OK
  • Validar tipo/tamanho antes de processarAtenção

    Como corrigir: No handler de upload: checar mime real (magic bytes), extensão e limite de bytes antes de salvar.

  • Sanitizar conteúdo extraídoOK
  • Antivírus / scan de malwareOK

Específicos deste app

0/7 OK
  • Auth com MFA + HIBPAtenção

    Como corrigir: Cloud → Users → Auth Settings → habilitar MFA (TOTP) e exigir para roles admin.

  • Revisão de RLS por tabelaAtenção

    Como corrigir: Para cada tabela em public.*: ALTER TABLE … ENABLE ROW LEVEL SECURITY + policy escrita com auth.uid().

  • Rate limit nas APIsAtenção

    Como corrigir: Middleware por IP+user_id (ex: 60 req/min) com bucket no Redis ou tabela com TTL.

  • Limite de uso por usuárioAtenção

    Como corrigir: Tabela ai_usage(user_id, day, tokens) + checagem no início de cada chamada; bloqueio acima do teto.

  • Custos por chamada monitoradosAtenção

    Como corrigir: Implementar: Custos por chamada monitorados.

  • Antivírus em arquivosAtenção

    Como corrigir: Integrar scan (ClamAV via edge function ou serviço externo) antes de marcar arquivo como disponível.

  • Storage com signed URLsAtenção

    Como corrigir: Para cada tabela em public.*: ALTER TABLE … ENABLE ROW LEVEL SECURITY + policy escrita com auth.uid().

Histórico de mudanças

  1. Início
    Projeto criado no Lovable — categoria ia.
  2. Construção
    Stack montada: IA, PDF.
  3. Publicação
    Publicado em academe-aid-flow.lovable.app.
  4. Hoje
    Maturidade estimada em 45% (Protótipo). 10 item(ns) pendente(s) de segurança.

Edite src/data/apps.ts e adicione um array changelog ao app para registrar marcos manuais.