━━ FEATURE · COMMUNITY ALERTS
Spotted a police trap? Tap once.
Two cars later, the next driver knows. codriver is built around three contribution paths that feed one consensus map — every driver is a sensor, every drive-by is a confirmation, and the platform owns the data layer so the network doesn't break when any single feed does.
━━ THREE PATHS · ONE PIPELINE
How the map fills itself.
1 · In-app "+"
Tap a "+" on the Tesla screen, pick a kind (police, hazard, construction, road-closed). Position, heading and speed snap to the report automatically — no typing, no menu diving. Your report lands in seconds.
2 · Drive-by confirm
When you approach a proposed pin in your forward cone (~80 m, heading-aligned), a non-blocking toast asks 👍 or 👎. Three independent confirms promote it to confirmed; disputes do the opposite. The toast never blocks the map.
3 · Subscribable feeds
Curated public feeds in Settings — provincial 511 traffic, Hydro-Québec power outages, road-closure overlays — one click to subscribe. Or register your own private feed and only you see those entities.
━━ ANTI-GRIEF BY DESIGN
Open contribution, not open season.
Crowd-sourced doesn't mean unsupervised. The pipeline has four anti-abuse layers built in, all enforced server-side:
- Per-device rate limits. One propose-new per 60 seconds; one confirm + one dispute per entity per 24 hours. Enforced at write time on the server.
- Consensus before visibility. A new report sits as
proposed— visible only to drivers in the forward cone. It promotes toconfirmedand broadly visible at a 0.7 sigmoid confidence threshold and retires at ≤ 0.2. With baseline trust weights that's three independent confirms to promote, two disputes to retire. - Trust-weighted scoring. Each user has a trust score (default
1.0) that compounds with the layer trust on every observation. Confidence =1 / (1 + exp(-(Σ confirm·w − Σ dispute·w) / 3)). A driver with a track record earns more weight per tap; a serial griefer earns less. - TTL decay on dispute. Every dispute halves the entity's remaining TTL (floor 60 s). A wrong pin disappears in minutes, not hours. Confirmed pins reset to the full kind TTL on every confirm.
━━ FAQ
What drivers actually ask
How fast do alerts surface after I tap?
Seconds. The in-app one-tap report posts immediately to the consensus pipeline. Other drivers within range get the new pin on their next map refresh (every 5–10 seconds depending on speed). Drive-by confirmations from drivers right behind you add weight in real time.
What happens to a false report?
Drive-by drivers can dispute it the same way they confirm — a 👎 toast when they pass the spot. Disputes accumulate against the consensus score; entities that fall below threshold for more than 24 hours auto-retire. The reporter's trust weight also drops slightly, which makes their future reports count for less.
Can I see who reported something?
No. Reports are anonymous by default. Server-side we keep a hashed device fingerprint for rate-limiting and abuse signals, but it's never surfaced in the UI. Privacy isn't a setting — it's the default.
Can I add my own data feed?
Yes. Power users can register a private external feed via /v2/feeds — push a token-protected POST endpoint or point us at a pull URL. The feed maps to a layer you own; entities are visible only to you unless you request the public catalog (which requires platform approval). See /developers for the full spec (endpoints, kinds catalog, payload format, stability commitments).
What incident kinds can I report?
Today: police, accident, road-closed, construction, and hazard with subtypes — pothole, animal-on-road, and flooding already ship as alert.hazard.* kinds. Next on the catalog: dedicated first-class kinds with their own icons (instead of nesting under hazard) and EV-specific kinds (broken charger, blocked stall). The kind catalog is platform-owned, so adding a new kind is a one-line schema seed plus an icon.
What stops someone from spamming the map?
Three layers: rate limits per device fingerprint (one propose-new per 60 s), per-user caps (one confirm + one dispute per entity per 24 h), and the consensus engine itself — a single report sits as 'proposed' until at least three independent drivers confirm it. Sybil-resistance tightens further once Tesla-pair activation becomes a trust prerequisite.