The situation.
A media company publishes marketing images to a platform with a strict content policy. Their library is in the millions and grows daily. Every image needs a decision before it goes out: compliant or not. Humans were making that decision by eye, slowly, and inconsistently.
The constraint.
Nothing leaves the building. The client self-hosts everything, including their content management system, and a cloud vision API was off the table for both privacy and cost reasons. The system also had to be explainable: if the platform disputes a decision, the client needs to show why the pipeline made it.
What we found.
The in-house CMS had no API for this. Images were reachable, but only through the system's own storage conventions, so the first job was a reliable, read-only way to pull images out at scale without touching the CMS itself. We also found that no single model would do. Fast classifiers were wrong on edge cases, and large models were too slow to run on millions of images.
What we built.
A pipeline that reads images from the client's CMS and runs each one through three layers of computer vision: a TensorFlow.js graph model for the fast, obvious calls, CLIP for semantic matching against the policy's categories, and a vision-language model for the small remainder that needs judgment. Each layer is configured for the client's specific policy, and the layers run deterministically rather than agentically: the same image always gets the same decision, for the same recorded reason, so every call is repeatable and auditable. The whole thing runs dockerized on client-owned hardware, and it logs which layer decided each image and why.
What changed.
The backlog cleared. New images are checked before anyone thinks about publishing them, and when a decision is questioned the client can show the exact reason the pipeline recorded. Nothing has left their network.
- millions of images
- 3 model layers: TFJS graph, CLIP, VLM
- deterministic, on-prem, Docker
Related work
If this sounds like your operation, apply to work with us.
Apply