The upload: fast checks, then visible
The person posting waits only for the checks that can stop a post: the known illegal index, blocklists and uploader limits. The media goes to object storage, the post goes live (or is held, if the uploader is high risk), and an event for every upload goes onto a durable queue.
- The app uploads the photo; the media goes to object storage.
- The upload service checks the uploader’s limits, blocklists and the known illegal index.
- A block stops the post here; otherwise it goes live, or is held if the uploader is high risk.
- An event for every upload goes onto the moderation queue, kept until it is processed.
Diagram as text
Components: App (Client); Upload service (Service); Uploader limits (Rate limiter); Known illegal index (Search); Media storage (Object store); Visible to others (Service); Moderation queue (Queue). Connections: App → Upload service (post); Upload service → Uploader limits (within limits?); Upload service → Known illegal index (match?); Upload service → Visible to others (live, or held); Upload service → Media storage (store); Upload service → Moderation queue (every upload), asynchronous.
Read:Learn: High-level architectureLearn: Large file upload & blob handling
Check yourself
Why not run all six classifiers before the upload returns?
Show answerHide answer
Every post would wait for the slowest model, and video would multiply the work exactly at the peak. Only checks that must happen before anyone sees a post belong here.