5,323 spectators used our map. They gave it 411 hours.
We built the live spectator map for the Philadelphia Cycling Classic — the whole 13.85-mile circuit, live GPS on the pace car, every restroom and medical tent, and a first-party record of where the crowd actually stood. Sixteen days from first commit to race morning.
Built, hosted and operated by MackTechs · 4329 Main Street, Manayunk
What one afternoon produced
Every figure below is first-party — measured by software we wrote, on infrastructure we run, with no third-party panel and no modelled estimate.
Every big event has the same three blind spots
They are not marketing problems. They are missing instrumentation — and they cost real money every year the event runs.
Nobody knows where the crowd actually is
Barriers, staff, toilets and medical tents get placed from last year's guess. When the answer finally arrives it is a modelled estimate bought from a vendor who will not publish a methodology, priced somewhere between $8,000 and $30,000 a year.
Nobody knows what attendees were trying to find
People stand on a curb wondering where the nearest restroom is, when the race reaches them, or which street is closed. Those questions are asked thousands of times and answered by nothing — so they are never counted, and next year's plan cannot improve.
Nobody can prove a sponsor placement worked
A tent, a stage, a big screen and a merchandise stand all get sold on estimated footfall. Without a first-party instrument on site there is no per-placement, on-the-ground number to put in the recap deck — only an attendance figure divided by hope.
One map that answers the questions people actually ask
Recorded from the live app. The pace car below is the real GPS track from race day, replayed at speed.
Where the race is, right now
A tracker in the pace car, a 2-second polling relay, and a position on every spectator's phone. Speed, freshness and distance-to-you, updating as the car climbs the Wall.
Where the nearest toilet is
One tap filters the map to restrooms, food, medical or bike parking, flies to the closest one and hands over walking directions. Used in 1,581 sessions — every tap a stated need, stamped with a time and a course zone.
Where to stand, and when to be there
Four spectator areas, 39 marked facilities, street closures and arithmetic pass-time estimates for each part of the circuit — so people know when the race reaches them without any live timing feed existing.
Measured, not estimated
2,467 spectators chose to share their position, producing 13,789 readings at a median accuracy of 12 metres. An opt-in rate near half is itself a finding — people trusted the tool enough to switch it on.
Sessions by course zone. 94.5% of located sessions were on the course; Manayunk and the Wall held 63.6% of them — more than the other three zones combined. “Off course” is a real bucket, not a rounding error — without it there is no denominator, and any share figure would be meaningless.
The method, stated in full
Most crowd-measurement vendors will not publish one. We think the method is the product — a number you cannot interrogate is not evidence, and an audience that cannot see the method is right not to trust it.
- Who is counted
- A spectator is a distinct browser that loaded the map. Automated traffic and link-preview crawlers are identified and excluded before any figure is calculated.
- What we never collect
- No name, no account, no email unless someone deliberately signs up, and no IP address stored against a location. Country of origin only — nothing more precise.
- Location is opt-in
- Nothing is read until a spectator taps to allow it, on a card that states plainly that the position is also sent to us and what it is used for. Positions are rounded to roughly 11 metres.
- What gets published
- Aggregates only. Every heat map is binned into 50-metre cells server-side, so the smallest unit that reaches any page is a cell — never a person, never a track.
- The honest limit
- Location sharing is opt-in, so the located sample is self-selected. It is valid for comparing one part of a course with another. It is not a headcount of attendance, and we will not present it as one.
- Retention
- Position data expires on a published schedule, enforced by a job inside the application itself rather than a cron line someone can forget to install.
Federal guidance (NCHRP Report 797) is explicit that opt-in device samples cannot be scaled into total pedestrian volumes. That constraint applies to us exactly as it applies to every vendor selling footfall — the difference is that we say so on the page, and report an index rather than an invented headcount.
If you run an event, a district or a festival, this is buildable for you
The race was the launch, not the limit. The same instrument works anywhere a crowd spreads out across a map and somebody has to make decisions about it.
Live tracking
Pace cars, parade floats, shuttles, trolleys, race leaders. A hardware tracker, a relay we run, and a position on every phone in the crowd.
Wayfinding that answers questions
Restrooms, medical, food, parking, viewing spots, road closures — filterable, searchable, with walking directions from wherever someone is standing.
First-party crowd analytics
Your own instrument, your own data, a stated method — instead of a subscription to someone else's model that you cannot audit and do not own.
Built to survive the peak
The design cost of serving the map does not move between fifty viewers and fifty thousand. It held a four-hour plateau above 1,400 spectators an hour without a wobble.
Your branding, your domain
We white-label the whole thing and run it on a subdomain of your own site. One DNS record on your end; hosting, certificates and race-day support stay our problem.
Ready before you need it
This one went from first commit to a live public map in sixteen days, on a fixed date that could not move. Event timelines are the normal case, not the exception.
The race came back, and it was a great day for Manayunk
Genuine congratulations to everyone who put this race on. Bringing a professional cycling classic back to Philadelphia — and back onto Main Street and up the Wall — took years of work by people who did it because it mattered to the city, not because it was easy.
You could feel it in Manayunk all afternoon. Neighbours on stoops, shops full, the crowd four deep on the climb, and a genuine roar every time the field came through. That atmosphere was not built by an app. It was built by the organisers, the agency team, the volunteers, the police and street crews who closed and reopened fourteen miles of city, and the businesses and residents who gave up their block for a day.
We are grateful to have been a small part of it, and thankful the organisers were willing to try something new on a short runway. Thank you for letting a Main Street shop help — and congratulations to all the riders and teams who raced it.
Here is to the next one.
Have an event that needs this?
Races, festivals, parades, business districts, campuses. Tell us what you are running and we will tell you honestly whether this helps.