Sorted in model order: school → ocean → train → Porto. Click a header to sort by that column. In the “Class” column: ▨ is hatching (far from the train or Porto), ≈ is borderline; hover to see why. “Private” is minutes to the nearest private school (rank or “no rank” is in the card). Click a row to open the zone card.
| Class | Zone | Municipality | Catchment school | Schools · why | Ocean | Train | Porto | Private | Intl. |
|---|
The map answers one question: “is a house in this zone worth a look, and how good is the location?” Every idealista zone around Porto is coloured by two things, always in the same order: first the school you’re zoned for, then the ocean. Train access and distance to Porto show up in the card as extra info, not as colour.
Zone = an idealista zone (the “Zonas” list in the site’s filter): an old parish (freguesia before 2013) or a 2013 union, exactly as idealista has them, so you can tick the zones in your house search. Boundaries come from the official CAOP 2012.1 / 2013 map (DGT). Minutes are measured from the centre of the zone’s main village (an OSM point) over the road network without traffic (OSRM); at rush hour real times are 10–30% longer.
Colour is an order, not a score. School first, then ocean. Two legend rows — school strong or average — set by two inputs, your zoned público school and a private school nearby; a toggle decides whether to use whichever is better or whichever is worse of the two (lenient: at least one strong gives the green row, grey only when both are weak; strict: green only when both are strong, grey if either is weak; switching either input off means colour follows the one still on). Three columns — ocean close, so-so, far. A zone in the top row always beats any zone in the bottom row; within a row, the closer the ocean, the better. There are no weights or points being added up — the colour just reflects those two facts directly. Train and Porto aren’t part of the colour at all: they show as lights in the card, and if a zone is beyond the “so-so” threshold the map hatches it and says why. A dotted border means “borderline” — the deciding number (rank within 20 places, or minutes within 2) is right at a threshold, and a slider nudge would flip the zone to the next class.
School: a child is placed at the cluster (agrupamento) school for their home address. Under Portuguese enrolment rules, living in a school’s catchment area gives you 6th priority for it; a strong school from another cluster nearby only has leftover places to offer, so it doesn’t count toward colour. Rank comes from Público’s 2025 ranking of 9th-grade exams (1,161 schools), but colour is based on the worse of two years’ ranks, this edition and the previous one, because a single year’s rank is noisy — the median shift between editions is 115 places. Strong means no worse than the threshold in both editions; grey means worse than the grey line in at least one. Público counts 9th-grade exams per building, so we use the best of the cluster’s own schools that teaches 9th grade — either the EB 2,3, or the cluster’s secondary school if it also teaches grades 7–9 (moving within a cluster only takes 2nd priority). A standalone secondary school (não agrupada, on the DGAE list) or one belonging to another cluster doesn’t count as “yours”: its 7th grade only admits by catchment area, at 6th priority if places are available, so it only counts toward colour where we’ve verified that catchment area (Esposende: Henrique Medina; Paços de Ferreira; Valadares: Ferreira Alves; Marco; Matosinhos: Zarco and Boa Nova; Ramalde: Clara de Resende) — elsewhere it’s just a note in the card. Where no catchment school has been established, we assume “so-so”, never “ideal”, unless the facts say otherwise. Next to the rank, the card also shows the “context-adjusted” rank — Público’s ranking de superação, the same rank adjusted for pupils’ family income and parents’ education — plus the intake itself; none of this affects colour. Upper secondary (secundário, 10–12) and international schools appear as facts in the card and don’t affect colour either.
Private schools (added 21.09.2026): minutes to the nearest private school with the Portuguese curriculum, using two sliders — “nearby” (default 10 minutes, a strong result) and “so-so” (20); beyond that it counts as weak. This combines with the zoned público school through a toggle (added 23.09.2026): lenient, the default, uses whichever is better — at least one strong result gives the green row, grey only when both are weak; strict uses whichever is worse — green row only when both are strong, grey when either is weak. There are no rank cutoffs for private schools, because almost all of them already sit at the top of Público’s ranking (41 of the 47 with a 9th-grade rank are 200th or better); the rank shown is just for reference. The one exception is a private school ranked worse than the grey line, which doesn’t count as a real option — there are three of these (Vagos, Braga, Amarante). Private schools with no rank at all count too: Público doesn’t rank a school with too few exam sitters (in the 2025 edition, the smallest ranked school had 45 secondary exams and 38 at 9th grade) — this covers Colégio Horizonte, CEI, and Colégio Novo de Gaia and Colégio Ibérico de Gaia in Arcozelo (both opened in 2024, up to 9th grade, no exams yet). Colégio Cedros (boys only) is excluded, and so is Colégio D. Duarte in Porto, which closed in 2024. The “zoned school counts toward colour” and “nearby private school counts toward colour” checkboxes switch each input off: público-only gives you the map as it looked before 21.09; private-only colours purely by minutes to the nearest private school; both off colours by ocean only.
Train: CP Urbanos do Porto stations (on the Aveiro, Braga, Guimarães and Marco lines) plus the metro; the narrow-gauge Vouga line and stations with regional-only trains (Barcelos, Viana) don’t count. The scenario: drive the teenager to the station, then they take the train from there. Ocean: the nearest Atlantic beach in OSM (river beaches don’t count). Porto: a fixed point in Boavista, used as a stand-in for Porto in general.
Criteria spec: house-criteria.md; build: knowledge/sources/location-radar/build (README there).
School rule now: .