Computational Design Tool  ·  Hackathon  ·  48 hours

DASH Configurator

A computational design tool built in 48 hours. It reads a real land parcel, generates a valid housing block layout from scratch, and exports a structured JSON file and a 3D model, all verified against 15 interdependent building rules in under 35 seconds.

48Hours to build
10Parcels processed
15Rules verified per parcel
100M+Configurations evaluated

The Brief

Generate a building. Follow the rules. Do it automatically.

The DASH Configurator Hackathon gave teams a single task: build a tool that reads a real land parcel and produces a complete housing block layout with no manual editing after the fact. Output had to be a structured JSON file describing the configuration and a matching 3D model.

Five parcels were given at the start. Five more dropped in the final hours, with no warning about their geometry or constraints.

The tool had to produce valid results on parcels it had never seen before.

The Problem

The rules don't line up. They interact.

The housing block had to satisfy 15 rules at once. Fire separation distances depend on window area. Window area depends on which unit types are placed. Unit types set bay widths. Bay widths are limited by the parcel boundary. One change anywhere in that chain could quietly break something three steps down.

The hard part was not generating a layout. It was generating one where every constraint held simultaneously, across a decision space with millions of possible combinations, fast enough to be useful.

01
Cascading constraints
15 rules where each decision affects what's valid downstream. No rule existed in isolation - solving one could silently break another.
02
Unknown parcels
The final five parcels arrived without warning: irregular shapes, awkward angles, unusual setbacks, sites with internal holes.
03
Mid-competition rule change
A clarification mid-hackathon changed a structural rule. Every layout built up to that point was invalid and had to be thrown out.
04
Reliability across systems
The tool had to run offline, in any browser, with no installation, and produce identical results every time on the same parcel.

The Approach

Three layers. Each one built on the one below.

Rule engine
Every rule got translated into verifiable code. Two independent checkers cross-verified each output. The save button stayed locked until all 15 passed.
Generator
Reads the parcel geometry, finds valid block orientations, places parallel bars with fire gaps, and fills bays with permitted unit combinations. Simulated annealing explores over 100 million configurations. Six searches run in parallel and the best valid result is kept.
Design layer
Applies design intent beyond what the rules require: spacing blocks further apart, orienting cores toward the street, placing accessible units next to the elevator. Each move is only kept if it leaves all rules and metrics intact.

The generation pipeline

Six steps, left to right. Steps 3 and 4 loop - if validation fails, the search restarts with a new candidate configuration.

Input 01
site.geojson
Parcel file
Parse 02
Buildable area + edge angles
Geometry
Generate 03
Simulated annealing 100M+ configs
Search
Verify 04
15 rules checked pass / fail
Validation
Refine 05
Spread blocks, cores to street
Design layer
Output 06
JSON
GLB
Config + 3D model
Export
any rule fails - restart search
Typical run time: 15 - 35 seconds per parcel

Key Decisions

Where the real judgment calls were.

Rebuilding from scratch, mid-competition

Partway through the hackathon the organizers clarified that every floor within a block had to be structurally identical. Every layout generated up to that point was invalid. The rule went straight into the checker, the existing work was scrapped, and the generator was rebuilt around the new constraint. It cost several hours.

Reading ambiguous rules strictly

Two organizer documents contradicted each other on bay width limits. One implied a wider option was allowed; a combination list included a case that exceeded the stated maximum. The stricter reading was enforced as a hard constraint. Losing a small amount of flexibility was worth more than the risk of a rule failure on submission.

A minimum block height

The optimizer found that a single-storey block with an elevator core was technically valid and slightly improved some metrics. It was cut. A minimum of 3 storeys per block was added, not because any rule required it, but because a one-storey building with an elevator is not something anyone should have to stand behind.

The hardest decisions were not technical. They were about what counts as a valid answer when the rules don't say no.

The Rules

15 constraints. Each one pass or fail.

One failure invalidates the whole result. The diagram below shows how they group and where they interact.

R1Blocks and stairs fully inside the buildable area, no overlap.
R2Total floor area within the FAR limit.
R3Building footprint within allowed site coverage.
R4Tallest block within the height limit, max 6 storeys.
R6Fire separation distance met on all facades, measured to property lines and between blocks.
R7Each block one straight rectangle. No L-shapes or corridor bends.
R8Only catalogue units at exact catalogue sizes. No custom dimensions.
R9Permitted bay pairings only. Every floor of a block structurally identical.
R10Corridor at least 1.1 m wide with units on both sides.
R11One central core with elevator, stairs at each end.
R12Nearest exit within 45 m of every unit entrance.
R14At least 10% adaptable and 5% accessible units.

Compliance rules and scoring goals

The rules split into two types. Compliance rules are pass/fail - any single failure invalidates the result. Scoring goals are optimized during the search simultaneously.

Compliance - pass / fail All must pass before a result is accepted
Parcel
Block shape
Unit mix
Fire + safety
Buildable area boundary
R2FAR limit
R3Site coverage
R4Height limit
R1Block fits inside buildable area
R7Straight rectangle only
R8Catalogue units only
R9Permitted bay combos, identical floors per block
R14Min 10% adaptable units
R14Min 5% accessible units
Hard floors on unit category. Falling below either threshold fails the submission.
R6Fire separation to property lines and between blocks
R10Corridor min 1.1 m wide
R11Central core + stairs at each end
R12Escape route max 45 m from any unit
R6 depends on window area, set by unit type. Change the unit mix and the required fire distance shifts - potentially invalidating block placement.
Once all compliance rules pass, the generator maximizes these three
Scoring goals - optimized Combined into a single parcel score. Best valid result is kept.
R5
Unit yield

How many units fit, scored as a power curve against the theoretical maximum. Overbuilding scores zero.

Weight 40%
R13
Unit type mix

Deviation from equal spread across Studio, 1-Bed, 2-Bed, 3-Bed and 4-Bed (20% each target). Closer to equal = higher score.

Weight 35%
R15
Building efficiency

Net unit area divided by gross floor area. Linear curve 0.70 (zero) to 0.95 (100). Penalizes wasted corridor and core area.

Weight 25%
The constraint cascade

Unit type sets window area, which determines required fire separation distance (R6), which constrains where a block can be placed (R1), which limits which unit combinations fit (R8 + R9). Every change to the unit mix silently changes what is geometrically possible.

Reliability

Tested on parcels built to break it.

Before the final five parcels dropped, a set of deliberately extreme synthetic cases were run: 300 m strips, triangular sites, L-shaped parcels with 260 m arms, sites with internal holes, FAR-capped parcels, a maximum height of 3 storeys, and a site barely wide enough for one block.

Two failures surfaced and were fixed. One caused wrong placements on very large sites. The other froze when the block count exceeded the search's original limit. Both would have produced bad results on real parcels. Neither shipped.

JavaScriptLeafletthree.js proj4jsSimulated annealing glTF / GLBParallel Web WorkersJSON Schema validation

Watch it run on a real parcel.

The tool reads the parcel geometry, evaluates constraints in real time, and generates a valid housing block layout - complete with unit types, dimensions, and a 3D model export.

Recorded during the 48-hour hackathon. Results not yet publicly released.

Outcome

All 10 parcels. All rules passing.

The tool processed all 10 parcels, including the five that arrived in the final hours, with no manual adjustments. Every result passed all 15 rules, confirmed by two independent checkers and the official schema validator. Every 3D model exported with zero errors.

It ran offline from a double-click in any modern browser. The same parcel always produced the same file. Built, tested and submitted in 48 hours.

Competition result pending.