Domain Atlas / Housing & homelessness services
San Jose's camera car: a low-precision detector aimed at who is sleeping outside
Work with this case in the PAN Lab ↗
San Jose's vehicle-mounted computer-vision pilot, described by city officials and national housing advocates as the first US experiment training AI to recognize tents and lived-in vehicles, reported sharply class-asymmetric accuracy in the city's own staff-ground-truthed evaluation — 97% for potholes and 88% for trash, but only 70% for RVs (unable to distinguish a lived-in RV from an empty one) and 12.5% for lived-in vehicles, with a March 2024 official interview bracketing the habitation figures at 70–75% for RVs and 10–15% for lived-in cars against a 70% goal; no detection ever generated an operational dispatch, and after investigative exposure and structured engagement the city removed every habitation-detection use case, its March 2025 status report declining to recommend implementing AI object detection in city operations at this time.[3]
What happened
Beginning with an open invitation to technology companies in July 2023, San Jose mounted six cameras on a single white city-owned Toyota sedan that, from December 2023, periodically drove City Council District 10 collecting street footage. That footage was fed to no-cost vendors whose computer-vision models were trained to classify a mix of road-condition and habitation objects. The pilot originated in a May 16, 2023 City Council directive to find better methods for tracking reported vehicles (abandoned vehicles and 72-hour parking violations); the IT Department's initial project scope covered potholes, obstructive trash, graffiti, homeless encampments, parking violations, and lived-in vehicles. City officials and national housing advocates described it as the first US experiment training AI to recognize tents and lived-in vehicles — a first-of-kind framing attributed to those sources rather than independently established.
The city was candid about accuracy, and the numbers were sharply class-asymmetric. In a March 2024 interview the IT director said participating companies were detecting lived-in RVs with 70–75% accuracy but lived-in cars at only 10–15%, against a pilot goal of at least 70%; city staff followed the camera car's route to confirm whether vehicles were actually occupied. The city's final staff-ground-truthed Phase One evaluation reported 97% true-positive pothole detection (3% false positives), 88% trash detection (12% false positives), unreliable 72-hour parking tracking (slight vehicle movement broke tracking), 70% RV detection that could not distinguish a lived-in RV from an empty one, and 12.5% accuracy for lived-in vehicle detection, along with systematic double-counting of the same object seen at different distances. The low-precision classes were precisely the ones aimed at people: the demand the city cited was real (residents had complained to 311 about encampments 914 times in early 2024, and reported illegal dumping 6,247 times, graffiti 5,666 times, and potholes 769 times the prior year), and San Jose's unhoused population had grown from roughly 4,200 in 2009 to more than 6,200 in 2023, with over two-thirds living outdoors or in vehicles and a city estimate of more than 800 lived-in RVs. The mayor said the city needed to know where all lived-in vehicles are "so that we can manage them."
The pilot's data-usage protocol, dated December 2023 and updated April 2024, is where the declared rule and the feasible flow part company. The protocol states the footage cannot be actively monitored for law-enforcement purposes but that police may request access to previously stored footage — verbatim: "Law enforcement may request access to previously stored footage. Law enforcement is not actively monitoring any data collected by the object detection solutions." It requires footage to be de-identified (blurring faces, addresses, and license plates) or deleted within one month, names Information Technology, Transportation, and Parks, Recreation and Neighborhood Services as owning departments, and limits access to city staff and participating vendors. The CIO stated data was not shared with police during the pilot. Yet Guardian reporting documented, from public records, that vendor Sensen.AI's report on footage from February 8, 2024 — which identified 10 lived-in vehicles on two streets — stated its system included optical character recognition of the vehicles' license plate numbers, despite the city's no-identification claim; the vendor did not respond to a request for comment. Advocates from the Lived Experience Advisory Board treated the police request path and eventual data flow as the operative risk, a characterization the city disputes.
Purpose was contested throughout. The city framed the pilot as proactive service delivery, and the IT director said the data was intended for the housing and parks departments to provide services — but the housing department and outreach nonprofits said they had not been involved. Advocates set the pilot against contemporaneous municipal action: the Lived Experience Advisory Board of Silicon Valley was simultaneously fighting a mayoral proposal to let police tow and impound lived-in vehicles near schools, and the city had recently cleared encampments along the Guadalupe River trail (announcing a no-return zone) and issued 72-hour vacate notices at Columbus Park. A Law Foundation of Silicon Valley attorney said the approach treats unhoused people "as blight consistent with trash or graffiti." Critically, the detection-to-response loop was never wired: no detection generated an operational dispatch during Phase One, and the planned auto-generation of service tickets from detections remained a Phase Two aspiration. Every accuracy claim was verified by hand against the footage, and no enforcement or outreach action was triggered by a detection.
After the March 2024 investigative exposure, the city ran structured value-sensitive-design engagement with the Algorithmic Impact Methods Lab at the Data & Society Research Institute, holding interpreted sessions with Amigos de Guadalupe and the Vietnamese American Organization (January and April 2024), meeting the Lived Experience Advisory Board (April 2024) and Destination: Home (May 2024); advocates asked why the city would "build a tool that will be weaponized against a marginalized community" and warned that a dataset of lived-in vehicle locations could become public record used to harass residents. The city then removed every habitation-detection use case. The rationales vary within its own report: encampment and graffiti detection never advanced to testing (attributed in the executive summary to capacity limitations and privacy concerns, in the body to resource constraints and the need for additional public engagement, and in the per-class section, for graffiti, to changes in project scope), while lived-in vehicle detection was removed after a single round of testing over privacy concerns. The March 20, 2025 status report, transmitted to Council by an April 1, 2025 memo, does not recommend implementing AI object detection in City operations at this time — with a stated suggestion to evaluate the removed classes separately in the future. A federal ITS Deployment Evaluation summary later restated the accuracy findings and the removal, though it does not carry the non-recommendation language.
Two residual channels stayed open. The retained 88%-accuracy trash-detection class carries recorded public concern about AI mistakenly identifying encampments as trash. And the pilot sits on an explicit scaling channel: San Jose leads the GovAI Coalition (150-plus agencies in March 2024, described as 600-plus by 2025), participates in a coalition data-sharing initiative (obtaining Chattanooga data through it) and is preparing to share pilot data with San Jose State University, while vendors wrote to city staff about the coalition's "scalability" potential and vendor models trained on San Jose footage remain marketable to other jurisdictions. A May 2024 $260,000 Toyota Mobility Foundation grant (with US Ignite) redirected Phase Two toward bike-lane and sidewalk obstruction detection. (Source discrepancies to note: the Guardian named five participating companies including Ash Sensors, while the city's final report lists four — CityRover, Blue Systems with Sensen.ai, xLoop, and Blue Dome Technologies — so the roster is reported, not settled; and the AIAAIC repository's developer field is uncorroborated by other sources and is not relied on here.)
The sociotechnical reading
Most of the Atlas's housing systems put a number on a person — a prioritization score that decides who reaches scarce help first, a prevention model that ranks who to reach, a risk tier that routes a case — and the London consolidation tool, its nearest neighbor here, links records into one shared picture many readers inherit. San Jose's camera car is a different object again, and it teaches a different lesson: one about the gap between the rule a system declares and the flows it leaves feasible. It scores no one and, in this pilot, decided nothing — no detection ever drove an operation. What it does is drive a district capturing street footage, and split that footage into two detector channels whose accuracy and stakes run in opposite directions. On infrastructure the detector is good: 97% on potholes, 88% on trash. On habitation it is bad: 70% for RVs (and unable to tell a lived-in RV from an empty one) down to 12.5% for lived-in vehicles. And the low-precision classes are exactly the ones aimed at people a physical response — a sweep, a tow, an impound — can be taken against. That inversion is the first half of the lesson: a detector's error only becomes catastrophic where its target can be acted on, so a 12.5%-precision guess about who is sleeping outside carries a risk a 97%-accurate pothole never could, and "raise the accuracy" is, on the high-stakes class, a way to make the surveillance more effective rather than safer.
The second half is the divergence the case is built around. The system's governance is real and, in most respects, careful: a City Council directive, a published data-usage protocol, staff who ground-truthed every accuracy claim against the footage, aggressive one-month de-identification or deletion, and structured value-sensitive-design engagement with unhoused-advocate groups. But the governing question a node like this raises is not "is the score fair?" It is "do the flows you leave feasible match the rule you declare?" — and here they did not. The protocol forbids active law-enforcement monitoring in the same breath it preserves a police request path to the stored footage. The city claimed no identification, yet a vendor's own report shows it ran license-plate OCR. Pilot data and San-Jose-trained vendor models flow outward through a 600-agency coalition and a university sharing preparation. A written rule constrains the authority you declare; it does not, by itself, close a door that is mechanically still open. The declared authority graph and the feasible data flows were two different graphs, and the gap between them was surfaced not by any standing check but by journalists reading public records. That is the absence the paired Lab draws as its defining latent edge: no audit ever reconciled what the vendor pipeline actually extracted against what it was declared to do.
What makes this case instructive rather than alarming is how it ended — and when. The safeguard that actually bound the pilot was not a better model or a tighter score; it was two structural facts. First, the detection-to-response loop was never wired: the auto-generation of service tickets stayed a Phase Two aspiration, so a low-precision habitation flag never became a physical action, and the loop the city never closed is a safeguard it never had to trust. Second, the city exercised a governed exit before any operational coupling existed — it removed every habitation-detection use case and its status report declines to recommend deployment at all, a halt taken while the response loop was still unwired. That is the rare inverse of the discontinuation cases that stop a running harm: here oversight acted on a pilot before harm data could accrue. So the instruments that fit this shape are not the domain's usual ones. There is no risk score to make fair and no eligibility gate to appeal. The tools that matter are the ones for a divergent-flow sensor: authorize each connection so the feasible flow matches the declared rule; audit what the vendor pipeline actually extracts against what it claims, on a rhythm, because a shared pipeline drifts; minimize what is retained and what leaves; hold the reflex that would wire a response loop because the pothole numbers looked good; and keep the exit exercisable. The distinct lesson the Atlas draws here: a written rule governs the authority you declare, but harm rides the data flows that remain feasible — so the governing question for a surveillance-adjacent sensor is not its accuracy figure but whether its feasible flows (a preserved request path, an off-policy identification capability, an outward sharing channel) have outrun its declared purpose, and the strongest safeguards available were the response loop the city never wired and a governed exit taken before any coupling existed. Accuracy would have made the wrong thing work better; what protected the people in frame was refusing to connect the machine to a consequence. The honest boundary throughout: served people — unhoused residents, and any enforcement or outreach action toward them — are not modeled in the paired Lab; because the response loop was never closed there are no false-positive consequence data on unhoused people and no counts of police requests, the accuracy figures are the city's own self-reported statistics rather than an independent audit, the purpose and police-request-path risk are contested and carried as such, and this was never an individual-scoring system — any reading that implies case-level adjudication misreads it.
The concepts used in this reading are defined in the Field Guide; the governance responses live in the Practice Library. The model organization for this case can be stress-tested in the PAN Lab.