← All posts

How it works

How CurbMinder knows which side of the street you parked on

A walk through the offline pipeline: a Bluetooth park signal, a GPS breadcrumb trail, heading-aware map matching, which side has odd or even house numbers, and LA's official sweeping calendar, all bundled with the app so it works with no signal.

Street sweeping in Los Angeles almost never applies to a whole block. It applies to one side of it. The north curb gets cleaned Monday; the south curb gets cleaned Thursday. Park facing the wrong set of house numbers and a perfectly good reminder becomes a perfectly wrong one.

So the interesting engineering question behind CurbMinder is not “what street are you on.” Phones have answered that for fifteen years. It is: which side of the street are you on, decided well enough to set an alarm you’ll trust, using only what’s already on the phone?

Here is the whole pipeline, one stage at a time.

Stage 1: The park signal, your car hangs up

Everything starts with knowing the moment you stopped driving. CurbMinder gets that for free from a signal your phone already produces: your car’s Bluetooth disconnecting.

When you turn off the engine and walk away, the phone’s connection to the car stereo drops. That edge, from connected to not connected, is a remarkably clean “I have just parked” event. It is better than motion detection (which can’t tell parking from stepping out at a red light) and it costs almost no battery, because the OS is already tracking Bluetooth state.

If your car has no Bluetooth, there is a manual I parked button that fires the exact same downstream logic.

Stage 2: The breadcrumb trail, a heading, not just a dot

The instant the park signal fires, CurbMinder looks at the last few seconds of GPS fixes leading up to the stop, a short breadcrumb trail of where you were just driving.

A single GPS point is a fuzzy dot: it tells you roughly where the car is, plus or minus several meters, which in a narrow street is easily enough to land on the wrong side. But a sequence of points tells you something a single dot never can: the direction you were traveling. Two or three fixes in a row draw a little arrow, your approach heading, and that arrow is the key that unlocks the side of the street.

Stage 3: Map matching, snap the dot to a real street

Now CurbMinder has a fuzzy location and a direction of travel. It matches both against LA’s official map data for every street, one line running down the middle of each street segment.

The naive version of this is “snap to the nearest line.” That fails constantly at intersections and on parallel streets a few meters apart. CurbMinder’s matcher is heading-aware: among the candidate segments near you, it strongly prefers the one whose orientation lines up with the direction you were actually driving. If you were heading due north, the east-west street you happen to be near is rejected in favor of the north-south one you were on. That single constraint removes most of the ways naive map matching goes wrong.

The output of this stage is a specific street segment, the stretch of one road between two cross streets. Your block.

Stage 4: Odd or even, the trick that names your side

This is the stage that earns the whole app. You are on a known segment, and you know which way you were driving. Which side of that segment are you parked on?

The answer comes from something wonderfully old-fashioned: which side has odd or even house numbers. Addresses in LA, as in most American cities, put even numbers on one side of the street and odd numbers on the other. The city’s segment data records which side is which: this segment runs 4400 to 4498 evens on the north side, 4401 to 4499 odds on the south side.

CurbMinder computes which side of the street you are on (left or right relative to your direction of travel), then reads the odd or even numbers the city assigned to that side. Left-of-travel, evens, north curb: that is your side, with a real street name and address range attached. Not “somewhere on the block.” That curb.

Stage 5: The calendar, not every week is a sweeping week

Knowing the curb is only half of a reminder. The other half is when. LA posts schedules like “2nd & 4th Tuesday” or “1st & 3rd Thursday,” which means you also have to know which occurrence of the weekday this week is. Is today the second Tuesday of the month, or the third?

CurbMinder resolves your curb’s posted route against the City of Los Angeles’s official yearly sweeping calendar, including the holiday suspensions when sweeping is cancelled citywide. So a schedule of “1st & 3rd Wednesday” becomes an actual next-sweeping timestamp for your curb, this month, accounting for whether this Wednesday counts.

All of it, offline, bundled with the app

Here is the part we are quietly proud of. Every stage above, the map matching, the 79,000+ segments, the 871 sweeping routes, the odd and even house numbers for each side, the full yearly calendar, runs entirely on your phone, with no network at all.

It all fits in a small compressed snapshot built from LA’s open data and bundled inside the app. It means CurbMinder works in a parking garage with no signal, works on the subway, works when you are roaming, and, not incidentally, means your location has nowhere to be sent even if we wanted to send it. There is no server in this story. There never was one.

Why go to all this trouble

Because a reminder you can’t trust is worse than no reminder. If CurbMinder told you “Tuesday, somewhere on this block,” you would still have to walk out and read the sign, and you would eventually stop opening the app. Getting the side right, from the moment you park, without draining your battery or phoning home, is the difference between a novelty and something you actually rely on.

And if we ever get it wrong, there is an “Are we wrong?” button that lets you fix the street, block, or side, or tell us there’s no cleaning there at all. Your correction stays on your device and makes your next reminder better.

Curious about the privacy side of all this? Read our Privacy Policy, or start at Introducing CurbMinder.