PhotoCheckWP is a WordPress plugin that runs every image upload through the Google Cloud Vision API before it can go live. I built it because I watched editors pull images off Google Search for years. Not because they were being reckless, but because nobody had built anything to stop them, and deadline does not wait for copyright research.
I was the IT director watching it happen. I knew the exposure was real. AP and Getty run active enforcement programs. A single unlicensed image can trigger a settlement demand in the $750 to $2,500 range, and it arrives weeks or months after the fact with no warning and no negotiating room. The letter comes from a law firm you have never heard of, and your options are to pay or to spend more fighting it. Most small newsrooms pay.
So I built PhotoCheckWP.
The plugin intercepts WordPress image uploads and runs each one against the Google Cloud Vision Web Detection API before the editor can insert it into a post. If the API finds potential matches, a modal fires. The editor sees the source domains and thumbnail matches, reads a disclaimer that this is not legal advice, and has to click an acknowledgment before the image goes live. Every upload is logged, including who did it, whether matches were found, and whether they acknowledged. The audit trail is the point. It turns a wild guess into a documented decision.
The technical architecture is boring on purpose. WordPress hook into the upload process, AJAX call back to check the result, Backbone-based modal in the media library, one custom database table. Nothing clever. Cleverness breaks. The plugin needs to work reliably for non-technical editorial staff who will never read the documentation and would ignore a modal that was not interruptive enough to register.
It is live and shipping at version 1.1.18. Freemius handles licensing and payments at five dollars a month per site, with multi-site and agency tiers above that. Seven-day free trial, no credit card required. The first paying customer is inkfreenews.com, where I am also the IT director. Eating your own cooking matters.
The thing that makes this interesting to me beyond the problem it solves is the business architecture. I built it to be sold. Clean entity separation under its own LLC, transferable brand voice, no personal bylines on any published content, acquisition-ready accounting. The Google Vision API costs are classified as COGS so gross margin is clean and legible at due diligence. Every decision from the beginning has been made with the question of what a buyer needs to see.
The next significant piece is the managed tier. Right now customers bring their own Google Cloud API key. The managed version uses a key on my account, and I track their usage through periodic reports the plugin sends back every twelve hours. When a customer approaches their plan allowance, the system sends a warning email with an upgrade link. No automated charges. One extra click. Clean.
The management console lives at admin.photocheckwp.com as a standalone PHP application with no WordPress dependency. It survives a WordPress migration or a sale without breaking. A buyer gets two separable assets instead of one thing bolted to another thing. That distinction will matter.
Eleven articles are live at photocheckwp.com, targeting the reactive audience, the person who already has the problem or can see it coming. The highest-intent traffic in the keyword research is people searching how to check if an image is copyrighted before they publish. Someone searching that is seconds away from either doing it manually or installing a plugin. That is where the content points.
I do not know exactly what this exits for. That depends on how the subscriber curve develops. SaaS businesses at this stage sell at three to five times annual revenue. The math gets interesting fast if the managed tier gets traction with newsrooms that are uploading fifteen hundred to two thousand images a month, which is a realistic number for a local news operation that is actually publishing.
For now, I build it and see what it becomes.

