About the unverified marks on this pageFigures tagged unverified are PACE-local estimates that could not be confirmed against any published source, so they are labelled rather than quietly presented as fact. Every other factual claim on this page — statutes, standards codes, gene biology, primary-source citations — was independently checked; the full claim audit, including what came back wrong, lists every claim with its source.
Try it Tuesday · 90 minutes
Run this next week
90 minutes, one contested Honolulu parcel with public documentation. Minutes 0–20: students pull the actual constraints from the record — zoning, height limit, existing use. Minutes 20–55: they open the embedded tradeoffs demo (or build one with the prompt) and, for three different height and density settings, write the plain-language consequence a resident would feel — shadow, traffic, who gets priced out, what is demolished. Minutes 55–90: a mock testimony round — half the room plays residents and reacts to each scenario; planners revise the wording of any consequence the residents did not understand. The deliverable is the revised consequence sheet, graded on whether a non-planner could act on it.
The full assignment
Make it Laser cut · layered
A layered site model of a real Honolulu parcel: topography, existing structures, proposed massing, each on its own removable layer. Residents can lift the proposal off and see what is underneath, which is exactly the conversation that renderings prevent.
Build it AI chat · no code
An interactive tradeoff explainer for the same parcel: move a slider for height or density and see the consequences a resident actually cares about, in plain language. Built in an afternoon, used in a real meeting.
Try the demo · runs offline
Urban Planning demo
Interactive demo — “zoning-tradeoffs”. It cannot be printed; run it in a browser at https://el3vate.vercel.app/demos/zoning-tradeoffs/index.html
This demo runs entirely offline against canned data — no keys, no network, safe on conference wifi.
4 weeks, realistically
The 4-week version
- Wk 1Pick one contested parcel with public documentation. Students extract the actual constraints from the record — and the topography, existing structures and proposed massing the layered model will render.
- Wk 2Submit the layered-model cut file at the start of the week so fabrication runs in parallel. Build the interactive explainer; test it on someone outside the major and rebuild the parts they did not understand.
- Wk 3While the model is cut, students prepare the meeting facilitation, not the presentation.
- Wk 4Run a mock community meeting with the model and the tool on the table. Invite the neighborhood board if the timing allows.
Starter prompt & what the model actually did
The prompt, run for real
Build me a single self-contained HTML page with sliders that shows planning tradeoffs for a site. The variables are: [building height, unit count, parking ratio, open space, whatever applies]. When a slider moves, update plain-language consequences that a resident would care about: shadow, traffic, who can afford to live there, what gets demolished. No jargon, no acronyms. Assume the reader has never been to a planning meeting.
Here's a single file. Save it as `kakaako-tradeoffs.html` and open it in any browser.
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Kaka‘ako Site Tradeoffs</title>
<style>
body{font-family:system-ui,sans-serif;max-width:640px;margin:2rem auto;padding:0 1rem;line-height:1.5;color:#1a1a1a}
h1{font-size:1.4rem}
.ctrl{margin:1rem 0}
label{font-weight:600;display:block}
output{color:#0a6}
input[type=range]{width:100%}
.out{background:#f4f6f8;border-radius:10px;padding:1rem;margin-top:1.2rem}
.out p{margin:.6rem 0}
</style>
</head>
<body>
<h1>What this building would mean for the block</h1>
<p>Move the sliders. The notes below tell you what a neighbor would notice.</p>
<div class="ctrl"><label>How tall: <output id="hV"></output></label>
<input type="range" id="h" min="3" max="40" value="12"></div>
<div class="ctrl"><label>How many homes: <output id="uV"></output></label>
<input type="range" id="u" min="10" max="400" value="120"></div>
<div class="ctrl"><label>Parking spots per home: <output id="pV"></output></label>
<input type="range" id="p" min="0" max="2" step="0.25" value="1"></div>
<div class="ctrl"><label>Share kept as open ground: <output id="oV"></output></label>
<input type="range" id="o" min="0" max="60" value="15"></div>
<div class="out" id="out"></div>
<script>
const $=id=>document.getElementById(id);
function upd(){
const h=+$('h').value,u=+$('u').value,p=+$('p').value,o=+$('o').value;
$('hV').textContent=h+" floors (~"+(h*11)+" feet)";
$('uV').textContent=u+" homes";
$('pV').textContent=p+" spots each";
$('oV').textContent=o+"% open";
const shadow=h<8?"Barely changes sunlight next door.":h<20?"An afternoon shadow reaches the sidewalk and nearest homes.":"A long shadow crosses the street for much of the day; some yards lose direct sun.";
const cars=Math.round(u*p);
const traffic=cars<50?"Adds a light trickle of cars—hardly noticeable.":cars<200?"Roughly "+cars+" more cars come and go daily; expect busier mornings.":cars+" more cars means real backups at the driveway and corner.";
const afford=p>=1.5?"Every home pays for a parking spot, so rents run higher—aimed at people with cars and money.":p<=0.5?"Fewer parking spots keeps costs down; friendlier to people who bus, bike, or walk.":"Middle-of-the-road costs; some renters priced in, some priced out.";
const foot=Math.round(u/(h)*3);
const demo=o>40?"Most of the lot stays as yard, trees, and walkways—little is paved over.":o>15?"A courtyard or lawn survives, but much of the lot becomes building and pavement.":"Almost the whole lot is built on; existing trees, parking, or low buildings there get torn down.";
$('out').innerHTML=`<p><b>Sunlight:</b> ${shadow}</p><p><b>Traffic:</b> ${traffic}</p>
<p><b>Who can live here:</b> ${afford}</p><p><b>What gets torn down:</b> ${demo}</p>`;
}
document.querySelectorAll('input').forEach(i=>i.addEventListener('input',upd));upd();
</script>
</body>
</html>
```
The numbers (11 feet per floor, cars = homes × parking ratio) are rough rules of thumb for conversation, not code-accurate figures. Want me to add a fifth factor like noise or school crowding, or tune it to a specific parcel?
- Self-flagged rules of thumb: '11 feet per floor... not code-accurate figures'The model warned its numbers are conversational, not siting-grade — the honesty a student should preserve and a planner should replace with real data.
- Kept the distributional point: 'aimed at people with cars and money' vs. 'friendlier to people who bus'It surfaced who is priced in or out by the parking ratio — the political content technocratic language usually hides.
- Plain-language output, no acronymsConsequences are written for a resident, following the prompt; this is the accessibility the assignment grades.
- Dead code: a 'foot' variable computed but never displayedA small artifact revealing the model padded logic it did not wire in — a reminder that AI-built tools need inspection, not trust.
Assessment
Rubric
| Criterion | Weight | What it assesses |
|---|---|---|
| Fidelity to the actual constraints | 25% | Consequences are tied to the parcel's real zoning and documented conditions, not generic assumptions. |
| Plain-language accessibility | 30% | A resident with no planning background can understand and act on each stated consequence; jargon and acronyms are removed. |
| Distributional honesty | 25% | Names who benefits and who is displaced under each scenario rather than describing tradeoffs neutrally. |
| Revision from feedback | 20% | The consequence sheet is measurably clearer after the mock-testimony reactions. |
What this replaces
Swapping it into a real course
Replaces
The studio site-analysis report with rendered massing diagrams.
What is lost
The comprehensive drawn analysis and the rendering craft.
What is gained
Students translate zoning into consequences residents can weigh, and learn that a rendering hides the tradeoff a slider exposes; the grade rewards communication with the affected public over presentation graphics.
Where AI is bad at this
The failure your students should catch
Ask a model for planning consequences and it produces authoritative-sounding figures — trip-generation counts, shadow lengths, affordability thresholds — with no siting data and no acknowledgment of local code, presenting rules of thumb as parcel-specific findings. It also strips the politics, describing a tradeoff in neutral technocratic language that hides who wins and who is displaced — exactly the information a community meeting needs surfaced.
Budget & logistics
What it costs to run
- Instructor prep2 hours
- Class time90 minutes
- Per-student cost$0 for the Tuesday version; roughly $15–30 per team in laser stock unverified for a layered site model in the four-week build.
- Fabrication file dueFirst day of Week 2 — submit the layered site-model cut file once the parcel’s record is extracted in week 1. PACE quotes 7–10 business days (up to 14 calendar days), so it clears before the week-4 mock meeting.
- Calendar dependencyThe interactive tool needs no lead time. The layered model (topography, existing structures, proposed massing) comes straight from the public record extracted in week 1, so its cut file goes in at the start of week 2 and the up-to-14-calendar-day turnaround clears before the week-4 meeting.
Three sizes
Scale it to the time you have
One session
The 90-minute constraint-to-consequence session with a mock testimony round; no fabrication.
4 weeks
The seeded four-week plan: extract constraints, build and test the explainer on non-planners, submit the cut file, then run a mock community meeting with the model and tool on the table.
One semester
A full charrette on a real parcel — constraint extraction, an iterated public-facing tool tested on non-planners, a layered fabricated model, and a facilitated neighborhood-board session.
Reserved · live build
This space is intentionally empty. During the Day 8 session it will be filled in live — fill the liveBuild field in content/urban-planning.json and rebuild.
Tell us what happened
Run it, then say how it went
If you try this — the 90-minute version, the prompt, any part of it — send back what you tried and what happened, especially anywhere the model was confidently wrong. That is the material the next session is built from.
Email feedback on Urban Planning →
Opens a draft in your mail client, already addressed and titled. No form, no account, nothing to sign up for.