Own product

Simulador Sisu — Official cutoff scores by course, no sign-up

An independent website with the official Sisu cutoff score by course and university, from 2019 to 2025: history, cutoff by quota category, seats, weights and a chart. It needs no sign-up, and the scores a person types never leave the browser. The full simulator, which crosses your scores with the cutoffs, is still in development.

YEAR
2026 — present
TYPE
Own product · Data site live, simulator in development
ROLE
Creator & Developer
SIMULADOR SISU: o site no computador e no celular
12
Sisu editions in the base, from 2019/1 to 2025/1
Fonte: The site's base, Ministry of Education open data (About the data page)
124
institutions with seats in Sisu 2025
Fonte: The site's base, Ministry of Education open data (Universities page)
120 pts
year-over-year change flags a cutoff as suspect until reviewed
Fonte: ETL check rule, described on the About the data page
0
sign-ups or logins to browse

Problem.

Students who took the Enem and are applying through Sisu (Brazil's centralized college admission system) want one answer: does my score get me into that course? The official data exists, but it sits in huge spreadsheets from the Ministry of Education, and the sites that show it usually ask for sign-up first. Students look this up on their phones, mostly through Google, with one course and one university in mind.

Solution.

A website that turns the official Sisu reports into fast pages, one for each course and each university: the latest cutoff, history since 2019, cutoff by category and quota, seats, applications, weights and a chart. It has guides on how Sisu works, the calendar, quotas and weights, and a page that says where every number comes from. The home page has a demo with a draggable ruler: an example score against the cutoffs for Medicine at UFRJ.

Result.

Live at simuladorsisu.com.br since 20/10/2026, launch day. The site's base covers 12 Sisu editions, from 2019 to 2025, and 124 institutions that offered seats in 2025 (Ministry of Education open data, per the Universities and About the data pages). The full simulator is still in development. Usage numbers will go here once there is something to measure.

Screens.

Screenshots of the live site.

Simulador Sisu home page with the headline Where does your Enem score get you and the draggable ruler showing 790 against the Medicine cutoff at UFRJ
Home: the demo with a draggable ruler, an example score against the 2023 to 2025 cutoff for Medicine at UFRJ. It is the demo, not the full simulator, which is in development. The independent-site notice sits at the top of every page. (Site in Portuguese.)
Cutoff score page for Medicine at UFRJ, with the 2025 cutoff and the history chart
A course at a university: the 2025 cutoff, the difference from 2024 and the history in a chart, with the category and round stated right below. The quota table follows.
Cutoff score page for Medicine in Sisu 2025 with the summary and the table of all universities
A course across all universities: the year's summary (offers, lowest, highest and median) and the table, each university linking to its own page.
UFRJ cutoff scores page with the summary and the list of courses with cutoff and seats
A university: every course it offered in Sisu 2025, with cutoff, location, shift and seats, each course linking to its page.
Guide on weights and minimum scores in Sisu, with the weighted average formula
Weights guide: the weighted-average formula explained with an example, for anyone who needs to understand why the same score becomes different averages.
The draggable ruler demo on a phone, with the score 790 and the text comparing it to the Medicine cutoff at UFRJ
The ruler on a phone: a finger drags the score and the text below says where it sits against the last 3 years' cutoff.
Medicine at UFRJ page on a phone, with the cutoff summary and the history chart
A course page on a phone, where the student arrives from Google: the answer in the first paragraph and the chart on the first screen.
Cutoff score page for Medicine in Sisu 2025 on a phone, with the year's summary
A course across all universities, on a phone: the year's summary before the table.
Weights guide on a phone, with the weighted-average explanation
Weights guide on a phone: short text, the formula and the worked example.

The hard part.

Every project has a point where the obvious solution doesn't cut it. Here, it was these.

An official spreadsheet, a number you can trust

The Ministry publishes one XLSX report per edition, and the files change shape over the years. The ETL runs in four steps: download, read, normalize and check. An offer is the same course at the same institution, shift and city, which is how history carries over from one year to the next. Until 2023 Sisu had two editions a year, so the first is the main line and the second is dashed. Zero or empty becomes "no cutoff", and a minimum score of 0.01 or 1 counts as no minimum. The check flags as suspect any cutoff that moves more than 120 points from one year to the next, and it stays out of the chart until reviewed. If the check finds an error, nothing is published.

Thousands of similar pages without becoming duplicate pages

One page per course and per university is how a student finds the answer on Google, and it is also the classic risk of programmatic SEO: the same text with numbers swapped. Here the text comes from rules that depend on the data (the cutoff went up or down, there are quotas, the weights are similar or not), never from a random draw, and with no AI. A test measures similarity between pages in a sample and fails above 60%. It runs in CI and inside the Docker image build, so a version with pages that are too alike doesn't ship.

A real 404 for what doesn't exist

A course at a university that doesn't offer it shouldn't return a pretty page with status 200. The site answers a real 404 for combinations with no data, and the error page comes straight from the proxy, because a rewrite to an app page came back from the cache with status 200. The same rule applies to text: when there is no data, the page says so, and the site never invents, estimates or fills in a cutoff score.

A site that rolls over to the new year by itself

Sisu changes every year: the edition, the calendar, which Enem editions count. Instead of rewriting texts every season, a pure module takes the date and the calendar and decides which Sisu the site is talking about today, what phase it is in, and which dates are confirmed or only forecast. No other file writes the year by hand, the guides have year-free URLs, and tests cover dates from 2026 to 2030, including the rollovers.

Chance, never a guarantee, and data that stays with the person

Nobody knows next year's cutoff, so the site speaks in comparison with past years and never promises admission. It is also not the Ministry's or any university's, and says so at the top of every page, with no government logo or crest. The product rule is that typed scores stay in the browser and don't go to the server, which is why the site has no sign-up. The data ships inside the Docker image, SQLite is opened read-only and there is no remote database to look after.

What I did.

  • Product, code and infrastructure, from the first commit to the live domain, all on 20/10/2026
  • An ETL in steps from the Ministry of Education's official XLSX reports: download, read, normalize and check, with a SQLite database as output
  • A check that flags as suspect any cutoff that moves more than 120 points from one year to the next, and only publishes the database if there are no errors
  • Course, university and course-at-a-university pages, with text built by rules from the data and a real 404 when there is no data
  • Sisu guides (how it works, calendar, quotas and weights) and the About the data page, with sources and limitations
  • An automatic season: the site changes year, dates and rules with no code edits
  • The ruler demo on the home page, with an example score against the cutoffs for Medicine at UFRJ
  • Docker with the data inside the image, a Cloudflare Tunnel on my own VPS and CI on GitHub Actions

Stack.

Next.js 16React 19TypeScriptTailwind CSS 4SQLiteDockerCloudflare TunnelGitHub Actions

Have a similar project?

Tell me the problem — I answer personally.

See it live.

Public pages of the product, open to anyone.

Sister product.

Same foundation and same rule, for another audience.