Skip to content
SPACESENSE Launch app
EMBA Final Project · EMBA Cohort 3 · IIT Roorkee · May 2026

From weeks of Excel,
to minutes of optimised allocation.

Perwez Alam Enrolment 24812003 · EMBA Cohort 3 (Finance) · IIT Roorkee Supervisor: Prof. Amit Upadhyay · Department of Management Studies

SPACESENSE is a decision-support tool for corporate workplace planning. It takes your portfolio of buildings and your demand for sections, runs a constraint-programming solver against an explicit business-utility function, then translates the chosen layout into a CFO-grade financial scorecard with a per-constraint audit trail.

16k
lines of app.js
2-min
default solver budget
65
idempotent migrations
13
in-tool reports
Engineered on open-source
  1. Google OR-Tools 9.8.3296
  2. CP-SAT
  3. Supabase
  4. PostgreSQL
  5. FastAPI
  6. Vercel
  7. Railway
Problem framing

A re-stacking decision worth millions — still made in Excel.

The corporate workplace planning problem is large in money, large in combinatorics, and currently solved by intuition. SPACESENSE replaces that with constraint programming and corporate-finance methodology.

8–15%

of operating budget

spent on workplace real estate by corporate occupiers[1]. Re-stacking decisions therefore move material money on the income statement.

4–8wks

of analyst time per cycle

is the typical cost of a single mid-size re-stacking exercise[2] — spreadsheet versions, AutoCAD overlays, committee revisions. The output is rarely defensible without an audit trail.

1060

candidate assignments

for a modest 50-section, 8-floor problem — beyond enumeration, beyond intuition. Tools that only visualise a stack don't solve it; they let a planner guess faster.

Incumbents — Serraview, OfficeSpace, Archibus, FM:Systems, JLL Blackbird — excel at visualisation and space inventory. None of them couples a real combinatorial optimiser to a CFO-grade financial layer with industry-benchmarked validation. That is the gap SPACESENSE fills.

Figure 1. SPACESENSE three-layer architecture: a portfolio plus a demand expression flows through a CP-SAT solver, a Floyd-Warshall block-connectivity graph, and a JavaScript finance scorecard, ending in a plan with a per-constraint audit trail.
Methodology

Three orthogonal layers. One decision.

Each layer uses the right tool for its job, can be reviewed independently, and contributes a piece the committee can defend in writing. The planner picks the solver budget per the stakes of the decision: 30 seconds for triage, 30 minutes for sign-off.

maximise  Σ ( w_stay  · stay_put
            + w_reuse · fitout_reuse
            + w_floor · floors_freed
            + w_block · blocks_freed
            + w_bldg  · buildings_exited
            + utility_terms )
Figure 2. The Layer-1 objective. The three Pareto presets (Cost-first, Balanced, Collab-first) re-weight the same six terms; the named weights live in the objective_weights table and are surfaced in the UI as labelled sliders.
01
SOLVE

Allocation

Google OR-Tools 9.8.3296 · CP-SAT

A constraint-programming solver assigns every section to a specific block. Decision variables are booleans x[section, block]; the objective is an explicit business-utility sum (location bonus, floor-exit reward, reuse bonus, building-exit reward, stay-put weight).

  • Hard constraints: capacity, adjacency, colocation, location anchors
  • Soft constraints folded into the objective with named, tunable weights
  • Configurable solver budget — default 2 min, settable 30 s to 30 min[7]
Optimality badges

Every run carries its honesty stamp into the scorecard so the room knows what kind of answer they are reading.

PROVEN OPTIMAL NEAR-OPTIMAL · gap % TIME-LIMITED · gap %
Per-constraint audit trail

Every soft-constraint contribution is logged to allocation_constraint_audit with the rule that fired, the rows it touched, and the delta_score it added. "Why is Risk on Floor 12?" is a one-line SQL query, not an explanation a planner has to remember.

Byte-determinism

num_search_workers = 1 + random_seed = 42 + SHA-256 input_hash. Two runs from identical inputs produce byte-identical outputs — a hard requirement for any model presented to a finance committee.

02
SCORE

Collaboration

Floyd-Warshall[8] · block-connectivity graph

The chosen layout is evaluated against a block-level connectivity graph weighted by stairs and lift-bank travel time. Cross-team meeting demand is then scored against the realised distances to produce a single collaboration index on a 0–100 scale.

  • All-pairs shortest paths computed once at scenario open
  • Coverage of meeting-room demand factored into the index
  • Indexed against industry benchmark bands — low / mid / high
Industry-benchmark bands

Six in-tool KPIs carry low / mid / high band badges with citations on hover. Sources: JLL India Office Outlook 2024[3], CBRE Workplace Benchmarks 2024[4], JLL APAC Office Index 2024[5], Leesman Workplace Insights 2024[6].

03
COST

Finance

JavaScript · CFO-grade scorecard

The layout is translated into money: annual lease-exit saving, productivity recovery, fit-out cost, 5-year NPV at 10% discount, payback, IRR[9] via Newton's method, and a 3×3 NPV sensitivity grid. Every number is sourced from a labelled input row — the audit trail is the deliverable, not a side-effect.

  • Mode A — greenfield: total cost of ownership, sqm-per-seat, benchmark bands
  • Mode B — re-stacking: savings deltas vs the AS-IS reference plan
  • NPV at three discount rates × three horizons — nine sensitivity cells
A hybrid that couples constraint programming with corporate-finance methodology compresses the four-to-eight-week stacking exercise into single-digit minutes while producing a more defensible answer.
— §2.4, Hypothesis
Demonstration results

Three presets. One configurable solver budget. Three defensible answers.

Reference scenario SCN_2026_BASE — 4 buildings (Z01–Z04) across two campus clusters, ~50 floors, 10 sections. Numbers in USD. Indicative magnitudes; values vary slightly run-to-run as the underlying seed evolves.

Cost-first · annual saving
~$5.0 M
freeing up to 5 floors + 1 building
Cost-first · 5-year NPV @ 10%
~$18 M
positive across all 9 sensitivity cells
Cost-first · payback
~18 mo
IRR > 60% · Newton-Raphson, 100 iterations
NPV (USD millions) on the Cost-first plan across three discount rates and three horizons.
Discount \ Horizon3 yr5 yr7 yr
6 %~$11 M~$22 M~$31 M
10 %~$9 M~$18 M~$24 M
14 %~$7 M~$15 M~$19 M
Figure 3. NPV on the Cost-first plan across three discount rates × three horizons — all nine cells positive. The 5-year @ 10% cell is the headline figure quoted above.
Metric
Cost-first
Balanced
Collab-first
Optimality badge
PROVEN OPTIMAL
NEAR-OPTIMAL · ~2% gap
PROVEN OPTIMAL
Annual saving
~$5.0 M
~$3.5 M
~$2.0 M
5-year NPV @ 10%
~$18 M
~$13 M
~$7 M
IRR
> 80 %
~65 %
~40 %
Payback
~18 mo
~24 mo
~36 mo
Floors freed
5 floors + 1 bldg
3 floors
1 floor
Blocks freed
14
8
5
Collaboration score · 0–100
~72
~84
~91

The point is not any single number — it is that all three plans are produced from the same input in a single solver budget, accompanied by a 3×3 sensitivity grid, industry-benchmark bands on every KPI, and a per-constraint audit trail.

Engineering

Tools that earn their place.

Approximately 16k lines of app.js, 8k lines of style.css, 2.3k lines of Python solver — 65 idempotent migrations behind a versioned JSON contract[10].

OR-Tools 9.8.3296
CP-SAT solver

Google's constraint-programming engine. Chosen over MILP / GA / heuristics because section-to-block is a pure combinatorial problem with proven optimality bounds on this size class.

Python 3.12.1 · FastAPI
Solver runtime

Thin HTTPS wrapper around the solver, hosted on Railway. The frontend POSTs a typed JSON contract (OR_CONTRACT_VERSION = 1) and reads the solution back.

Supabase · PostgreSQL
Persistence + auth

Magic-link authentication, 65 idempotent migrations, JSONB input_snapshot on every run so any analysis can be re-built from its input_hash.

Vanilla JS · System fonts
Frontend

No framework. ~16k lines of app.js + ~8k lines of style.css + or_engine.js for the financial layer. Loads on Vercel as a static bundle, zero web-font network requests.

Floyd-Warshall
Layer 2 graph

All-pairs shortest paths over the block-connectivity graph. Pre-computed at scenario open; the collaboration index is then a weighted sum over realised section-pair distances.

Pareto presets
Multi-objective

Three solver runs (Cost / Balanced / Collab) instead of true NSGA-II — pragmatic, deterministic, and produces the trade-off frontier the planner can defend in committee.

References

Citations and methodological notes.

  1. [1] CBRE. Occupier Sentiment Survey. 2024. Workplace operating-cost share by industry.
  2. [2] JLL. Office Outlook. 2024. Typical analyst-time consumption per re-stacking cycle.
  3. [3] JLL. India Office Outlook 2024 Q3. Benchmark bands for sqm-per-seat and cost-per-seat in the India market.
  4. [4] CBRE. Workplace Benchmarks. 2024. Global utilisation %, vacancy %, meeting-seat density bands.
  5. [5] JLL. APAC Office Index 2024 Q2. Regional cross-check on cost-per-seat bands.
  6. [6] Leesman. Workplace Insights. 2024. Collaboration-index bands and meeting-room demand norms.
  7. [7] Solver budget UI presets: 30 s · 2 min (default) · 5 min · 10 min, custom 0.1–30 min. Source: app.js preflight modal.
  8. [8] Floyd, R. W. (1962). Algorithm 97: Shortest Path. CACM 5(6). Warshall, S. (1962). A theorem on Boolean matrices. JACM 9(1).
  9. [9] Brealey, R., Myers, S., Allen, F. Principles of Corporate Finance. 13e. NPV, IRR, payback methodology applied to Layer 3.
  10. [10] Versioned JSON contract — OR_CONTRACT_VERSION = 1 — pins the frontend↔solver wire format. Source: or_engine.js.

Three presets. One configurable solver budget. A defensible plan with the audit trail attached.

From open to signed-off plan in a single run — you choose 30 seconds for triage or 30 minutes for sign-off.

Launch SPACESENSE