SisuData: Consultas Avançadas SISU + ENEM com matching probabilístico
Find a file
2025-10-14 04:25:45 -03:00
csv Como o endpoint que o scraper usava pra conseguir todos os .csv nao esta mais disponivel, decidi colocar os arquivos de volta no repositorio 2025-10-12 08:45:25 -03:00
helpers python Refactor: Remove old scripts and consolidate functionality into helper modules 2025-10-14 04:19:46 -03:00
node_modules feat: enhance UI and add help modal functionality 2025-10-14 04:08:12 -03:00
public feat: enhance UI and add help modal functionality 2025-10-14 04:08:12 -03:00
.env.example Adiciona arquivos de configuração e scripts para importação de dados do Sisu para o banco de dados 2025-09-12 08:10:37 -03:00
.gitignore Como o endpoint que o scraper usava pra conseguir todos os .csv nao esta mais disponivel, decidi colocar os arquivos de volta no repositorio 2025-10-12 08:45:25 -03:00
index.js feat: enhance UI and add help modal functionality 2025-10-14 04:08:12 -03:00
package-lock.json feat: enhance UI and add help modal functionality 2025-10-14 04:08:12 -03:00
package.json Como o endpoint que o scraper usava pra conseguir todos os .csv nao esta mais disponivel, decidi colocar os arquivos de volta no repositorio 2025-10-12 08:45:25 -03:00
README.md feat: update README.md to reflect application renaming and enhanced functionalities 2025-10-14 04:25:45 -03:00
requirements.txt fix: add missing dependencies to requirements.txt 2025-10-14 04:20:22 -03:00

SisuData – Consultas Avançadas SISU + ENEM

SisuData é uma aplicação web para consulta inteligente de candidatos aprovados no SISU, enriquecida com dados detalhados dos microdados do ENEM. O sistema realiza matching probabilístico entre as bases públicas do ENEM e SISU, mostrando notas individuais de cada componente, classificação, cotas e mais – tudo via uma interface moderna e responsiva.


Funcionalidades

  • Scraper/Importação: Baixa e processa os arquivos CSV do SISU automaticamente (por co_ies). Faz join com microdados públicos do ENEM, populando o banco PostgreSQL.
  • Matching Inteligente: Algoritmo atribui probabilidades a cada match SISU↔ENEM, e exibe a precisão dos dados no site.
  • API Express: Endpoints REST /buscar e /filtros para pesquisa por nome, curso, nota, estado, etc.
  • Frontend: Interface web moderna, UX responsiva (busca, filtros, stats, ranking TOP 10 e análise detalhada do candidato).
  • Help/Transparência: Modal detalhado de "Como funciona?" explicando conexão dos dados e limitações.
  • Paginação e stats: Sistema paginado, rankings por curso/universidade/notas e análise por estado.

Estrutura dos arquivos

  • scraper.py: Faz download automatizado dos CSVs do SISU usando lista de co_ies (arquivo.json).
  • importar_csv.py: Limpa e integra todos os CSVs do SISU e microdados do ENEM, importa ao Postgres.
  • index.js: Backend Express com API (com retry, pooling robusto, filtros avançados e stats).
  • public/index.html: Frontend SPA com abas, busca, cards responsivos, stats, modal de ajuda, etc.
  • arquivo.json: Lista de objetos "co_ies" para download segmentado.
  • csv/: Pasta onde ficam todos os arquivos CSV baixados e usados no pipeline.

Pré-requisitos

  • Node.js >= 16
  • Python >= 3.8
  • PostgreSQL (NeonDB recomendado ou local/cloud)

Instalação

  1. Clone o repositório:
git clone https://github.com/Revocable/SisuFinderNode.git
cd SisuFinderNode
  1. Instale dependências Node.js:
npm install
  1. Instale dependências Python:
pip install -r requirements.txt
  1. Configure o arquivo .env (na raiz do projeto):
DATABASE_URL=postgres://usuario:senha@host:porta/database

Como executar

1. Baixe os arquivos CSV do SISU

Coloque um arquivo.json válido na raiz do projeto e execute:

python scraper.py

2. Importe/integre para o banco

python importar_csv.py

3. Inicie o backend Express

node index.js

Site iniciado em: http://localhost:8080


Como usar

  • Acesse http://localhost:8080
  • Pesquise por nome, curso, ou use filtros avançados (estado, nota, turno, etc)
  • Clique em "Buscar"
  • Veja detalhes do candidato, stats, todas as notas ENEM, classificação no SISU, cotas, bônus etc
  • Consulte rankings por curso, universidade ou maiores notas
  • Clique no botão flutuante de ajuda ("❓") para entender o funcionamento e metodologia do matching.

Transparência dos Dados

  • Origem dos dados:
  • Matching entre bases:
    • Realizado por múltiplos critérios (nota, UF, município de prova, dependência, cotas, PcD etc), com score de precisão e thresholds para confiabilidade.
    • A nota individual de cada área do ENEM é exibida com um badge de precisão baseado em quão forte foi o matching.
  • Limitações:
    • Alguns candidatos não foram encontrados no ENEM (sem match acima do threshold).
    • Notas detalhadas ("por área") podem não ser 100% precisas para todos. O badge indica isso!

Observações

  • É necessário acesso PostgreSQL (preencha .env).
  • Scraper pode parar de funcionar caso o MEC altere a estrutura das APIs/arquivos.
  • O frontend foi desenhado para uso rápido, transparente e com foco em análise real de dados abertos.

Autor

Desenvolvido por Murilo Scolari
GitHub