Residual Spaces and the Block is my master's thesis at the Royal Danish Academy, concluded in May 2026, and a direct continuation of Urban Residues, the project I developed in the final year of my undergraduate studies at FAU-Mackenzie. Where the earlier project intervened in a single block by intuition, this one asks whether the same operation can be systematised: can a computational workflow identify residual urban spaces and generate architectural scenarios for their activation — functioning as a tool for urban intensification in the centre of São Paulo?
São Paulo is the largest city in the Southern Hemisphere and the largest metropolitan region in the Americas, with around 22 million people. It is defined by extreme urban heterogeneity: within a single block you often find buildings from very different periods, heights and economic contexts, producing a dense and irregular fabric shaped by continuous cycles of redevelopment. This is especially visible in the historic centre, where the research is focused.
The centre concentrates a huge share of the city's infrastructure, and yet it holds a paradox: high built density coexists with widespread spatial underuse. The 2022 Census counted over half a million vacant housing units in São Paulo, and in the centre roughly one in every five apartments is empty. A recent city hall survey identified more than 1,300 idle properties in the Sé district alone — many of them heritage-listed buildings closed for years or decades, tied up in legal disputes, inheritance issues or institutional ownership.
The most visible spatial trace of this cycle is the blind façade: the exposed wall that appears when an attached building is demolished, leaving the side of its neighbour uncovered. They register, in elevation, the city's pattern of replacement — a survey along the Minhocão corridor identified 141 of them in only 2.8 kilometres, and this research mapped all 304 in the centre. The same concentration is what the Operação Requalifica Centro, established in 2021, responds to, offering property tax exemption for three years and a subsidy covering up to 25% of renovation costs for buildings constructed before 1992.
Vacancy here is not a static condition but the residue of an active, partial process of redevelopment: some buildings are replaced, others — protected by heritage regulations or held in litigation — are left behind. Meanwhile the centre's 430,000 residents share the area with almost 13,000 people living on the street, around 40% of São Paulo's homeless population concentrated in less than 2% of its territory. More than 200 occupied buildings house over 46,000 people, and in 2018 that fragility became visible when the Wilton Paes de Almeida building, an occupied high-rise in the centre, caught fire and collapsed, killing seven people.
My own experience of the centre reflects the same contrast. During my undergraduate studies I spent five years commuting there daily and, like most people, learned to move through it quickly. Then a friend invited me to a rooftop bar on top of an old building. Getting there was the typical experience — chaotic traffic, dense streets, a certain caution — and inside, climbing the staircase, I passed doors that could have belonged to occupied apartments or to empty ones, with no way of telling which. On the roof the atmosphere was the opposite: the space was full of people, with a view over the skyline. The same building held both conditions.
That experience is not isolated. In recent years a number of initiatives across the centre have started reusing upper floors and underused buildings, and both city and state governments are now betting on the same mechanism at a larger scale — the state is relocating its administrative headquarters to the centre, bringing 22,000 employees there daily. But concentrated investment in a declining centre routinely raises rents before it raises quality of life, displacing the residents who stayed through decades of abandonment. As the urbanist André Zalcman puts it, revitalisation must be associated with real occupation, not speculation. Santiago is the cautionary case: around 100 mega-towers built in a single central district in under a decade, later described as an urban sacrifice zone.
Mike Davis, in Planet of Slums, argues that vacancy and spatial underuse in Global South cities are structural conditions — produced by speculative land markets and uneven infrastructure investment, not individual negligence. São Paulo's centre fits that account exactly, and its decline is self-reinforcing: spatial underuse, low street presence and heightened insecurity feed each other. The Requalifica Centro addresses part of it, through the reoccupation and renovation of buildings. What it leaves open is the programmatic layer — the daily activities and services that make streets feel occupied. This project works in that gap, not against the policy but alongside it.
Decades of demolition and replacement have not resolved the centre's underlying conditions. If the answer is not more demolition, it may lie in a different spatial layer — the spaces that already exist between, around and above the buildings. The problem itself is not new; what is new is urban data at a resolution and coverage that makes systematic spatial analysis possible.
That shift has a precedent in Jaime Lerner's urban acupuncture. Responding to cities that had grown in population and built mass without the services and public spaces that make daily life functional, Lerner argues that cities do not require comprehensive plans to change, but precise interventions at specific pressure points. In the chapter Continuity is Life he describes vacant urban lots as a cancer in the fabric — each empty space reduces street activity, weakens social presence and invites further decline. His prescription is diagnosis followed by targeted insertion: identify what the surrounding area lacks, then introduce it at that precise point, even temporarily, until a permanent use arrives.
A series of precedents was studied that insert structure and programme into the existing fabric rather than replacing it. One proposes modular structures attached to Niemeyer's Copan, using blind façades and unused rooftops as structural support. Lebbeus Woods' High Houses rise into the airspace above the existing fabric that had been occupied during the war by mortar fire, so that the city reclaims that space by inhabiting it — balanced on bent, tensioned beams stabilised by steel cables, reaching upward while anchored to the ground. And Archigram's Plug-In City imagined a permanent megastructure served by cranes, into which housing and service capsules could be inserted and replaced independently, while Instant City took the opposite direction: a mobile infrastructure airlifted into underserved towns to temporarily deliver the programmes those places lacked.
In direct dialogue with them, Yona Friedman's Ville Spatiale raises a structural framework on columns above the existing city, the columns working as service cores and vertical access points. The framework is permanent; what fills it is not — residents configure their own spaces within the available volume, so the city's composition is never fixed. To support that, Friedman developed the Flatwriter: a rule-based decision tool, first mechanical and later computational, that brought non-architects into the design process by translating their needs into a spatial layout.
His drawings were noticed by Nicholas Negroponte, who founded the Architecture Machine Group at MIT in 1967, and whose first computer-aided design software — the Jana system — was named after him. It also called for the involvement of inhabitants in design, building diagrams that would eventually resolve into the plan of a house: architecture predetermined by the needs of the people involved, and with it a redefinition of the architect's role. Alongside these, MASP, SESC Pompéia and the Pinacoteca were studied as São Paulo references for inserting new structure into what already exists.
From here, two operational questions follow: how can we systematically identify where to intervene within the city, and how can we determine what kind of intervention is appropriate in each location? The workflow runs on two databases — GeoSampa, the municipal open data platform, which provides shapefiles for blocks, buildings, zoning envelopes and urban facilities, and a mapping of all 304 blind façades in the centre produced for this research through direct visual observation in Google Earth. Every layer is structured into three categories, from raw records to cleaned datasets ready for analysis, and the connection between QGIS and Grasshopper is made through a pipeline built with the Heron plugin.
Five layers are imported into Grasshopper: the blocks inside the Requalifica Centro perimeter, the buildings within it, the buildings on non-buildable blocks, the buildings in a context buffer around the area, and the blind façades. From these, two families of residual volume are derived — the unused volume above buildings, calculated by extruding the top of each building up to the maximum buildable height of its block, and the unused volume above ground-floor areas, extruded to the same reference. Together they describe, in three dimensions, the spatial capacity the centre already holds without demolishing anything.
Identifying latent volume answers where an intervention can exist, but not what it should be. A second layer of analysis introduces three types of data: demographic density; the distribution of urban facilities, covering culture, education, health, human rights, safety, social assistance and sport; and the Social Vulnerability Index, developed by the São Paulo State Data Analysis Foundation, which classifies census sectors across socioeconomic conditions and demographic life cycle. Each urban block is then assigned this set of attributes, so that spatial opportunity can be related to demand, intensity and existing supply.
To test the methodology, one block is taken as a case study, chosen for its combination of high population density and high social vulnerability — an intensity not matched by the availability of services. The design begins by isolating the total residual space in the block, and then by identifying the residual spaces that extend down to ground level, which define where the structural system can be anchored. From those points, vertical elements rise as primary support and vertical circulation, dimensioned to accommodate elevators inside them. The verticals are connected by horizontal beams that form a continuous network across the whole block, working as structure and as circulation at once, and the units are suspended from that framework.
The data points to programmes that relieve daily pressure within the block: a daycare centre, a public laundry, and a community kitchen combined with a dining hall and a local market, organised in three volumes. Access is organised exclusively from the block's interior rather than from the street, since the programmes are designed for the residents of the block and not as public facilities open to the wider city; against the street-level safety concerns described earlier, the interior perimeter becomes the community threshold. At roof level, the beam network that spans the block doubles as a walkway, so every resident can reach all three programmes from any entry point.
In section, volume one holds the community kitchen with the two laundry facilities stacked above it, and volume two the dining hall and local market at its base with the daycare centre and a terrace above. Two separate stairs connect them — one running between the top-floor terraces, the other from the kitchen directly down to the dining hall — so the two volumes work as a single programme rather than as isolated boxes. Volume two sits entirely within the interior of the block, on top of the ground-floor parking, and the cross sections show how each volume negotiates the height and the party walls it was given.
The city-scale application runs as a four-stage pipeline. Raw spatial and tabular records are imported into QGIS as a 2D base map — block boundaries, street network, building footprints, zoning envelopes. Python scripts inside QGIS then read that data alongside every derived block attribute and apply two sets of rules: one evaluates each block and produces a score and a programme assignment; the other places intervention footprints within the residual space, determining orientation and whether each volume sits above an existing building or over a ground-floor void. The output is a layer of small rectangles carrying programme category, position and block conditions as attributes, which Grasshopper reads to generate the three-dimensional morphology.
Every block inside the perimeter is evaluated by an Intervention Necessity Score: a weighted sum of the Social Vulnerability Index, demographic density, the count of notified buildings and the distribution of urban facilities around the block. Each indicator is normalised and weighted, producing a score from one to five, drawn as the weight of each block's outline — the thicker the line, the higher the score. Blocks below 2.5 are not selected, so the algorithm proposes interventions only where the combination of spatial pressure and service absence is high enough to justify it.
The programme itself comes from a second reading of the same territory. Each urban facility is drawn with a radius representing the distance within which it can realistically be part of someone's daily routine, and through a spatial join at block radius the majority facility category within that radius determines the programme assigned to the intervention volume: the dominant equipment type signals the character of that urban area, and the proposed programme extends and activates that character in ways the existing infrastructure does not.
Applied across the whole research area, the interventions form a distributed network of collective infrastructure through the city centre — each selected block carrying a volume sized by its own residual space and programmed by its own surroundings, so the network is dense where pressure is high and absent where it is not.
To evaluate what the algorithm produces at block level, a second selected block is examined. It sits in an area with a strong presence of cultural facilities and yet has a high Social Vulnerability Index and high residential density; culture being the dominant equipment type within its 300-metre radius, the context triggers the assignment of the Collective Space and Local Activation category. Grasshopper then runs the residual volume detection on the block's geometry and generates four volumes, each labelled with a programme drawn from that category.
The algorithm is not external to design. The spatial rules encoded in it are architectural choices — where volumes anchor to ground-floor residual space, how they fit within the available height, how the structural system relates to building geometry — all defined explicitly by the architect. What it leaves open is the arrangement of programmes across floors and the design of circulation through the intervention. The workflow structures where and what; the architectural decisions inside it remain the designer's. The result is not an automated output but a design scenario, in which data-driven decision-making and architectural judgment operate as a single process.
Friedman and Negroponte were working in this same territory: using computation to translate conditions into spatial form. Their limit was data — both systems worked with geometric information, so the tool could configure space but not identify where space was needed, or why. This project starts from that second question, and its input is not geometric but social. What stays open is the qualitative layer: the workflow never asks residents what is actually missing. The productive next step is to compare what the data identifies as absent with what people say is absent, and to test whether the two converge.