Mike Oustamanolakis, PhD

15,000 rooms, one answer

I joined records people already kept into one search, and showed where they disagree.

Problem

Finding a room that fits a class took anything from half an hour to weeks, and each route depended on somebody else.

The institution’s own records disagreed about what its rooms held, and nobody could see the differences.

What I did

  • Used only what already existed. Floor plans, layouts, teaching profiles and surveys, joined to one room record.
  • Never picked a winner. Where two records disagree, both figures show and the difference goes to the record owners.
  • Used AI to write the build, and kept it out of the product, so staff get the same answer every time.

Where it stands

15,000+

rooms in one search, across more than 40 buildings.

A working prototype. No pilot has run, so there is no measured saving. A six-week pilot is proposed, with its measures set in advance.

BeforeAfter
Half an hour to weeks to find a suitable room
One search across 15,000+ rooms in 40+ buildings
Four sets of records that disagreed with each other
Joined into one, with every conflict listed for correction
No single source anyone trusted
One place to look, built only from existing files

Working prototype; a six-week pilot is proposed, measured on time to answer.

Re-created from the working prototype, with sample data.

Who

Client
A large UK university
Scale
More than 15,000 rooms in over 40 buildings
My role
I framed the problem, designed the interface, and decided how the sources join and what counts as a conflict. Claude Code wrote the build code under my direction.
Status
Working prototype; pilot proposed

The situation

To find a room that fits a class, staff have four routes today. Each one costs time, and each depends on somebody else.

Estimates from my proposal, not measurements. A pilot would measure them first.

Where it started

It started with colleagues who teach film. The timetable gives them a room that meets the request, and it can still fail the class: film needs good acoustics, a room that goes dark quickly and a high-contrast projector. No system records any of that. So they found the best rooms themselves and ask for them by number. When colleagues move on, the next person starts again.

What I found

The room data existed, in files nobody could search together, and the know-how lived in people. That makes it a service problem: how staff find out, who they depend on, and who owns the record when it is wrong.

The records also disagreed with each other. Most of it is nobody’s mistake: a layout drawing counts chairs, and the timetable counts bookable seats. Nobody could see the differences before.

What I decided

  1. Used only what already existed. Floor plans, furniture layouts, teaching profiles and occupancy surveys, joined to one room record. The sources stay where their owners keep them, with no migration first.
  2. Made one search answer the real question. Which room, where, how many seats, and set up for what kind of teaching.
  3. Never picked a winner. Where two records disagree, the finder shows both figures and puts the difference on a list for the people who own the records. Corrections then happen once, at source.
  4. Used AI to write the build, and kept it out of the product. Staff and record owners need the same answer every time, and a way to see where it came from. So AI wrote ordinary code that reads the files the same way each time, and the finder itself calls no AI model. One command rebuilds everything.
  5. Made access part of a room’s details. Lifts, hearing loops and Changing Places sit with the floor and the room. It works by keyboard, in print and on a phone.
Four separate sources — floor plans, furniture layouts, teaching profiles and occupancy surveys — joined into one search over more than 15,000 rooms, with the conflicts between records listed for correction. Four sets of records, one search Floor plans Furniture layouts Teaching profiles Occupancy surveys One search 15,000+ rooms 40+ buildings Where records disagree: listed for correction Outlined: written records. Solid: what people now use.
Built only from files the institution already had. No new data was collected.

The screens

Three screens from the working tool, with sample data in place of the institution’s records.

“30 seats or more”: every match, in one list

  1. One filter, one answer. “30 seats or more” is a single choice, not a form to fill in.
  2. The totals come first. Nine rooms, seven of them learning spaces, 430 seats: enough to know whether the search is worth reading.
  3. What staff call it, and what it is for. “Known as” and “Use” sit beside the room number, because people ask for rooms by name.
The working tool, re-created and anonymised: an invented campus and invented rooms.

When two records disagree, the room shows both

  1. The space record says 40. The source is named under the figure.
  2. The timetable says 36. Neither figure is overwritten. The difference goes on the list for the people who own the records.
  3. What kind of room it is. Learning space, timetabled, teaching: the words the estate records already use.
The working tool, re-created and anonymised. The 40 and 36 are sample figures.

One building, from the same records

  1. A building in one line. Rooms, learning spaces, seats and floor area, added up from the joined records.
  2. Floor by floor. The same list, narrowed to one floor.
  3. Filter by what a room is for. Teaching room, computer lab, studio: the question staff actually ask.
The working tool, re-created and anonymised: “Glassworks” is an invented building.

What every build lists for the record owners

List names only; row counts are withheld. The highlighted list is the one shown in the room above.

Where it stands

This is a prototype. No pilot has run and it has not been adopted. Agreement is what the plan asks for, not something I have won yet.

What this case cannot say

See the working prototype (sample data) →