Lots of positive comments in here, but I think you probably need to learn how loss prevention works in stores of all sizes, first. The way you're phrasing your value proposition says you don't understand that.

Here's why: I think you're making unwarranted assumptions about the purpose and value of all those security cameras.

In a lot of cases, it's not to catch shoplifters. It's just to collect evidence. That's why security officers in stores aren't supposed to touch or give chase to offenders. It's also often to collect evidence against the employees. An employee has opportunity to steal a lot more than a visitor does, that's why bank tellers and cashiers have cameras pointed at their hands, not at the customer.

Second, loss is built into a retail business model. It's going to happen. It's unavoidable. The only goal of loss prevention is to keep it from happening more than it happens to other stores like yours. There may not be any incentive to stop an additional $1k/mo. of loss if you're already at or below average, because you're not compensated or rewarded based on that.

Third, I think you're overestimating the "real-time" nature and the quality of your video, here. Ever seen a video of a pickpocket on YouTube? Or in the movies? Where they have to slow-mo it so you can even tell something happened at all? A decent shoplifter isn't going to get noticed by a grainy, analog, CCTV camera, whether watched by machine learning, an average Joe, or a trained security officer.

And in your machine learning + crowdsourcing situation, you're processing data in real-time, using ML to look for what? Someone touching the merchandise and putting it in their pocket isn't very different from someone touching the merchandise and putting it in their basket, when your CCTV camera is 300 lines of resolution and in black and white and 50' away.

How long does it take for an analog CCTV camera video to get to the back room of the store (10ms?), get compressed (hardware MPEG4? 100ms?), sent over the internet to your cloud for distribution to your workers (20 video streams * 0.5mbit/sec. for 360p MP4 with no audio, that means the store has to upgrade to 10mbit dedicated upstream to your servers, and we'll say 500ms latency), decompressed and analyzed in "real time" (< 100ms? 500ms? this is your necessary core competency right here) and then flagged and either trimmed and sent as a specific video clip to users on home connections in non-US countries, or streamed as part of an ongoing video stream (another 500ms latency plus download time to the user), and then wait for the user to respond (5000-10000ms?), and then you go and notify the store. That's 10+ seconds, best case, assuming you're able to do any kind of decent analysis on compressed CCTV feeds, and the security guy still has to get up and go to where the incident happened, all the way across the store. In ten seconds, the shoplifter is nowhere near where they were when the video was originally taken. In reality, you're talking 30 seconds to a minute. In that time, they might have left the building already.

And then maybe you realize you can't do anything useful with CCTV, and you need to get retailers to upgrade to HD video. Now you have 20 1080p streams, plus the new cameras, plus adding ethernet wiring throughout the store (since the analog feeds just ran over cheap coaxial cables), meaning you need a store with 70mbit upstream. That's a really, really expensive upgrade for only $1k/savings a month. That might be a lot more than you save them.

Or maybe this means you need hardware on the premises to do the algorithm, and it only sends it upstream when it detects an issue. This actually makes your latency worse, because now a store sticks with their crappy 0.5mbit upstream. And, now you don't get a lot of video to analyze yourself to improve your ML and CV. Shoplifters will learn what your algos can detect and not detect and just avoid those movements and now you're not saving anyone any money.

I'm not saying it's a bad idea, I'm just saying it sounds like there might be a lot you haven't considered.