In late 2025, Dallas City Council approved a contract with a company called City Detect to mount AI-powered cameras on sanitation trucks. The pitch was simple. Trucks already drive every residential street in the city on a regular schedule. Put two cameras on each one, let computer vision scan for illegal dumping, high weeds, and graffiti, and you get a monthly visual survey of every parcel in Dallas without hiring a single new inspector.

Code Compliance director Chris Christian described the goal in plain terms at the time. “For us, it’s not an enforcement focus, it’s a voluntary compliance focus,” he told reporters. The idea was to let residents know they might have a violation and point them toward city resources to fix it. The vendor’s CEO went further, telling the Dallas Morning News the system wasn’t focused on people at all. “We really try to be the good AI,” he said. “This is not a police-like tool, this is a community enhancement beautification tool.”

Six months later, the numbers tell a different story. Records obtained by NBC 5 Investigates show the system has flagged more than 21,000 Dallas properties. Every flagged property gets assigned a blight score from one to four. About 1,800 courtesy notices have gone out after city staff reviewed what the AI found. The AI doesn’t issue citations itself, a person still reviews the flag first. But the system is now the thing deciding which houses get a human’s attention and which don’t. That’s not a beautification tool anymore. That’s a scoring and sorting system feeding directly into code enforcement, running on public streets, on every property, whether the owner asked for it or not.

Nobody voted on that shift. It happened the way this kind of thing usually happens: not through a policy reversal announced at a podium, but through the quiet accumulation of what the tool actually does once it’s running. The cameras didn’t change. The pipeline around them did.

The pitch was universal. The results aren’t.

Every version of this technology gets sold the same way, and it’s worth naming the pattern instead of treating each new instance like a surprise. The sales pitch is always framed as help for everyone. Faster pothole detection. Cleaner neighborhoods. A more efficient use of a truck that’s already driving the route. Nobody in the room objects to those goals, because on their face they aren’t objectionable. Nobody proposes a camera network by saying it will end up sorting the city’s poorest homeowners into a fine pipeline. That’s never the pitch. It’s never the pitch anywhere this technology gets deployed.

But universal framing and universal outcomes are two different things, and the gap between them is where the actual effect of the system lives. A tool that scans every property the same way doesn’t produce a uniform result, because the thing it’s scanning for, unmaintained yards, deteriorating structures, code violations visible from the curb, isn’t distributed evenly across a city to begin with. It tracks income. It tracks age. It tracks whether a homeowner has the time, the mobility, or the spare cash to keep a property looking maintained on a schedule the software finds acceptable. A camera that photographs every yard in Dallas once a month isn’t neutral just because it points at every house equally. It’s neutral in coverage and lopsided in consequence, and those are not the same thing.

This is the part that tends to get lost in the initial coverage, because the initial coverage is built almost entirely on the sales pitch. Reporters get the vendor’s framing, the city’s framing, a quote about blurred faces, and a quote about beautification, and that becomes the story. The story that runs six months later, built on actual flagging numbers instead of a press release, almost never gets the same attention. By the time anyone’s writing about 21,000 flagged properties and a four-point blight score, the program is already running, already funded, and already treated as settled infrastructure rather than an open question. The “it’ll help everyone” framing did its job long before anyone checked whether it actually did.

Who actually gets flagged

A blight score doesn’t fall evenly across a city. High weeds, deteriorating structures, and code violations visible from the street correlate closely with how much money a homeowner has to spend keeping a property looking maintained. A retiree on a fixed income who can’t afford a landscaping service every two weeks, or who’s behind on a roof repair because a fixed Social Security check doesn’t stretch as far as it used to, is going to accumulate a higher blight score than a homeowner with disposable income for upkeep. That’s not a flaw in the AI’s accuracy. The AI can be perfectly accurate and still produce an enforcement system that lands hardest on the people least able to respond to it.

Think through what a monthly scan actually means for someone living on a fixed income. The system doesn’t check in once and move on. It comes back every month, on the same truck, on the same route, and it re-scores the same property every time. A homeowner who fixes one issue this month may already be behind on another by the time the truck comes back. There’s no version of this where the system pauses to ask whether the person behind the fence has the money to fix it faster. It just re-scans, re-scores, and lets the pipeline downstream decide what happens next.

A courtesy notice sounds gentle until you’re the one holding it. For someone on a fixed income, a notice that a property needs weeds cut, a fence repaired, or debris removed isn’t an inconvenience, it’s often a cost they have to find room for in a budget that has no room. Miss the deadline and courtesy notices become fines. Fines on a fixed income compound in ways they don’t for a household with slack in the budget. A fine that’s a rounding error for a two-income household with equity in the home can be a choice between the fine and a prescription for someone living on a fixed Social Security or disability check. The city frames this as help, a nudge toward resources. But a scoring system that runs monthly, silently, on every parcel in the city is going to find the same struggling homeowners again and again, whether or not they ever catch up.

There’s also a quieter effect worth naming. Once blight scores exist for every property, they exist for reasons beyond fixing the fence. A score of three or four sitting in a database is exactly the kind of data point that shows up later in a rezoning debate, a redevelopment proposal, or an assessment of which neighborhoods are “declining” and need intervention. The people least equipped to attend a city council meeting and push back on how that data gets used are often the same people the data is quietly building a case against. A retiree working to keep a home on a fixed income rarely has the time or the standing to show up at a committee hearing and argue that a database score doesn’t tell the full story of their situation. The data speaks. They usually don’t get to.

This is where “the tech will help everyone” turns into something else entirely. The pitch was universal coverage in service of a shared goal, cleaner neighborhoods for the whole city. What actually got built is a tool that finds the people already struggling the most and puts a number on how much they’re struggling, on a recurring schedule, feeding a pipeline that can turn into fines. That’s not a side effect nobody could have predicted. It’s what happens, every time, when a system built to spot “problems” gets pointed at conditions that track directly with poverty. The universal framing isn’t a lie exactly. It’s just describing the coverage of the camera, not the weight of what falls out the other end.

“If you have nothing to hide, you have nothing to fear”

This response comes up in nearly every conversation about surveillance technology, and it deserves a straight answer instead of a shrug.

The problem isn’t that the cameras might catch you doing something wrong. The problem is that the phrase assumes the only thing that matters is whether you personally get caught. It skips past every other question that actually determines whether a system like this is safe to run: how long are the images kept, who can access them later, what happens when the system is wrong, and what else the same infrastructure gets used for once it exists. “Nothing to hide” answers a question nobody asked. Nobody worried these cameras would catch them robbing a bank. The worry is what happens to a retiree who can’t afford to fix a fence fast enough, and whether that person’s yard becomes a permanent line item in a database they never agreed to be part of.

Dallas has answered almost none of the questions that actually matter here, publicly. The city says faces and license plates get blurred before staff see them, which is a real technical safeguard, not just a promise, since blurring on the front end means that specific data literally isn’t captured for tracking individuals. That part is worth taking at face value. But blurring faces doesn’t touch the property-level data the system was built to collect, and nobody has said clearly how long that data sits in a database, who besides Code Compliance can query it, or whether “voluntary compliance” stays the stated purpose once the next budget cycle needs a justification for the program’s cost.

That last point matters more than it sounds like it should. Council Member Chad West, who raised privacy concerns from the start, has now proposed cutting the program’s funding in the current budget debate. If that pressure holds, one of two things happens. Either the program shrinks back toward its original narrow purpose, or the city leans harder on the AI to justify the cost, which means less human review, not more. A human reviewing every flag among 21,000 properties is expensive. A human reviewing flags among 50,000 properties, if the program expands instead of contracts, gets expensive fast enough that the review step is exactly what budget pressure tends to erode first. “Nothing to hide” doesn’t hold up well against a system whose human safeguard is the first thing to go when the budget gets tight.

“Nothing to hide” also assumes the system stays scoped to what it was sold as. Automated license plate readers were sold as a tool to find stolen cars. They became location-tracking databases that outlast their original purpose and get queried by agencies that had nothing to do with the original justification. There’s no reason to assume a blight-scoring camera network is immune to the same drift, especially once the hardware, the contract, and the database already exist. The infrastructure doesn’t need a new vote to expand. It just needs someone to find a new use for what’s already running. And once that happens, the person who had nothing to hide from a beautification program discovers they had plenty to lose in a program that quietly became something else.

The honest reply to “nothing to hide” isn’t a counter-slogan. It’s a list of specific, answerable questions the city hasn’t answered. How long do the images and the blight scores get retained. Who outside Code Compliance can query that database, now or in a future administration. What happens to the human review step under budget pressure. Whether a resident can see their own property’s score and challenge it. None of those questions require distrust of any individual employee running the program today. They require distrust of infrastructure that outlives whoever’s running it today, which is the correct default for anything collecting data on every property in a city, indefinitely.

What to actually watch

The honest test for a program like this isn’t whether it’s currently doing something objectionable. Right now, arguably, it isn’t. The test is whether the city commits, in writing, to hard limits before the program grows past the point where those limits are easy to walk back. That means a stated retention period for images, not a vague “as needed.” It means a public list of who can access the database and under what conditions. It means a real answer to what happens to the human review step if the program scales up. And it means treating the blight score itself as sensitive data, since a number that quietly ranks how “kept up” your property looks is the kind of thing that outlives its original stated purpose the moment nobody’s watching closely enough to ask.

Watch the budget fight closely, because it’s the clearest signal available right now. A program that gets defended on the grounds that it’s already found 21,000 properties worth flagging is a program justifying its own expansion using the very numbers that should raise the most questions. If the response to “this is flagging a lot of struggling homeowners” is “see, it’s working, we should fund it more,” that’s the tell that the tool’s usefulness to the city and its cost to residents on fixed incomes are being treated as the same question when they’re not.

Dallas isn’t a uniquely bad actor here. It’s a fairly typical one, and that’s the point. This is what the pattern looks like when it’s moving through channels that feel reasonable at every individual step, sold as universal help, deployed with real technical safeguards on the parts that are easy to safeguard, and quietly reshaped by the parts nobody wrote a hard limit on. Worth watching, especially for anyone in a city considering the same contract next.