Command Palette

Search for a command to run...

Blog

How marko finds you inside a building

How we mapped two floors of two connected Cornell buildings with one phone, route people through them, find them without beacons, and talk them there. The interactive figures run on the building's real map.

The atrium, rebuilt from our walks. Cornell's Physical Sciences Building atrium dissolving into a 3D model of the building made from the Capture Walk scans.

GPS stops at the front door. Inside, you're left with signs, floors that look alike, and asking whoever is at the desk. Indoor positioning has worked for years, as long as you bolt hardware to the ceiling, and installing and maintaining that hardware is a big reason most buildings still don't have it.

We set one rule before writing any code: nothing powered gets installed in the building. Everything had to come from a phone in someone's hand: the one that maps the building, and the one held by the person trying to find room 294.

marko is the result. You raise your phone, search for a room, a professor or "restroom", and a trail appears on the real floor in front of you. Lower the phone and it becomes a Find My-style arrow. A voice guide speaks every turn. We built it over a weekend at MLH Big Red Hacks in October 2026, where it took 2nd place, for the Physical Sciences Building (PSB) and the connected Clark Hall at Cornell.

The maps below are interactive and run on the building's real map. Where a number is illustrative, the caption says so.

Walking is the map

Our first plan was to start from architectural floor plans. It went badly: drawings carry no reliable scale or north, tracing corridors from them invented hallways that don't exist, and a map that's wrong about geometry sends people confidently into walls. So instead, someone walks every corridor with an iPhone. We call that the Capture Walk. It's to scale by construction, it only contains places a person can actually walk, and everything else marko needs is built from it.

Floor 2 · the walk

Capture Walk trajectoryWalkable spaceScanned walls and furniture
Walk it, and the map appears. This is floor 2 of PSB and Clark from above. It shows the real Capture Walks over the scan they produced. Everywhere someone walked becomes walkable. Drag the slider, or press Replay.

Routing in milliseconds, on the phone

Each floor becomes a grid of walkable space, joined to the next by the stairs recorded on the walk. Routes are solved entirely on the phone, in milliseconds, then straightened into a few long legs. The corners that remain become the turns in the instructions. Try it below: it solves in your browser, on the same map.

walking
–
at 1.3 m/s
–
cells explored
–
to solve, in your browser
–

Floor 2

Floor 1 · the atrium

RouteSpace searchedPlace: tap one to go thereStairs between floors
Route it yourself. This runs on PSB's real map, in your browser. Pick two places or tap a dot. The shaded wash is the space searched before reaching the goal, and Grid path shows the raw path under the straightened one. Step-free is off because PSB's elevator isn't mapped yet, and a "step-free" route that used stairs would be worse than none.

Finding you, without beacons

Routing is the easy half. The hard half is answering "where am I?" in a steel-and-concrete building where GPS is useless and the compass is unreliable. Early on we learned the rule that shaped everything after:

A confident wrong fix is worse than no fix.

A wrong fix doesn't look wrong. It draws the trail with full confidence and walks someone down a hallway that looks identical to the right one. Matching what a corridor looks like isn't enough, because many corridors look the same. marko matches the shape of the space around you against the building's map, and only answers when one place fits clearly better than every other.

Your scan

Where it could be on floor 1

Rejected: 0 spots fit equally well. marko keeps looking instead of guessing.

How well the scan fits thereBest-fitting spots, numberedAccepted fix
A full scan and a short one. Both scans are cut from the real floor 1 walls and searched over the whole floor. A full scan wins clearly. A short one fits several spots equally well, so marko rejects it and keeps looking rather than guess.

A fix tells you where you are once. Between fixes, the phone tracks its own motion, and each fix ties that motion back to the building. Counting steps with a compass, the usual approach and marko's last resort, drifts badly near steel and lab equipment.

step counting off by
0.0 m
marko off by
0.0 m
Where you really areRoutemarko's trackingStep counting + compass
Drift, and the snap back. One walker on a real floor 2 Route, with two estimates of where they are. The drift rates are illustrative. Each fix snaps both estimates back. Turn fixes off to watch them wander.

A trail on the real floor

Once the phone knows where it is, the Route is drawn onto the actual floor: a band of chevrons (the "k" from marko's wordmark) leading to the next turn, and a ring at the destination. Phone up gives you the trail. Phone down gives you an arrow with the distance and one line of instruction. A floor change takes over the screen until you're on the new floor.

Phone up · Route Ribbon

Route Ribbon view: a green trail on the corridor floor, 35 m, turn right at 294 Clark

Held up, the camera sees the corridor, so marko draws the Route into it, from your feet to the next turn.

Phone down · Guidance Arrow

Guidance Arrow view: the camera sees the floor, a ring arrow points ahead, 23 m, bear left at 120 PSB Seminar Room

With the camera on your shoes there is nothing to draw on, so marko shows a Find My-style arrow, the distance, and one line of instruction.

Phone up, phone down. Real screenshots from the demo iPhone in PSB. Which view you get depends on how you hold the phone.

A voice that can't be late

The voice guide is built for people who can't see the screen. Turn instructions are prepared when a Route starts and play straight from the phone, so they're never late for the turn. A separate conversational guide answers questions like "is there a restroom on this floor?" and can start a route for you.

What's next

A second building starts with another walk. Step-free routing switches on once the elevators are mapped; until then it stays off rather than quietly sending a wheelchair user to the stairs.

More on marko: https://get-marko.vercel.app

Command Palette

Search for a command to run...