Design Image Recognition

Hard45 min
1 / 30
understanding9 min read

Problem Statement: Enterprise Image Recognition Platform

Problem Statement: Enterprise Image Recognition Platform — image recognition interview depth

Enterprise image recognition platform

Design a multi-tenant visual intelligence API comparable to Google Cloud Vision, Amazon Rekognition, or Clarifai: developers send photos or URLs, receive labels, bounding boxes, OCR text, embeddings, or custom classifier scores.

Interview framing

Google and Amazon interviews probe whether you treat vision as distributed systems + ML ops, not a single ResNet in a notebook. Clarifai-style products add custom model hosting and vector search.

Core capabilities to name early

  • Synchronous classify/detect/OCR with strict p99 latency
  • Async batch jobs over millions of images in object storage
  • Custom model upload, versioning, canary promotion, rollback
  • Embeddings + similarity search for dedup and visual search
  • Safety: NSFW/violence classifiers, PII blur, geo restrictions

Scale anchors (state explicitly)

  • 2,000,000,000 images/day → ~23,148 avg QPS, 185,000 peak (8×)
  • Average 450 KB JPEG after client compression; heavy 4K bursts for enterprise tenants
  • 8,000 custom models; 1200+ GPU nodes across 6 regions

Architecture split interviewers expect

Control plane: model registry, routing table, quota/billing, policy config. Data plane: preprocess workers (decode, resize, EXIF strip), GPU inference (Triton/TensorRT), post-process (NMS, thresholding), optional vector index write.

Failure modes to volunteer

Poisoned uploads (decompression bombs), EXIF malware, adversarial patches, hot keys on celebrity detection models, GPU OOM from greedy dynamic batching, embedding index lag after model swap.

javaOne Dark Pro
1public record VisionRequest(String tenantId, String imageUri, String modelId, Map<String,String> opts) {}
pythonOne Dark Pro
1@dataclass(frozen=True)
2class VisionRequest:
3 tenant_id: str
4 image_uri: str
5 model_id: str
6 opts: dict[str, str]
typescriptOne Dark Pro
1export interface VisionRequest {
2 tenantId: string;
3 imageUri: string;
4 modelId: string;
5 opts: Record<string, string>;
6}

Why interviewers care

Image Recognition interviews reward crisp scope, explicit trade-offs, and failure stories—not generic microservice diagrams.

Interview checkpoint

Name one failure story for Problem Statement: Enterprise Image Recognition Platform that proves you understand real outages, not happy-path diagrams.

Key Highlights

  • Separate control plane (registry, routes, policy) from data plane (preprocess + GPU)
  • Quote 2B images/day before naming GPU counts
  • Offer sync API plus async batch over object storage
Key insight
Tie sec-01 decisions to measurable vision SLOs, not model buzzwords.
Avoid
Do not collapse preprocessing, inference, and policy into one opaque box in sec-01.

Section Rescue Kit

Buzzwords to use:

Visual EmbeddingNon-Max Suppression

Safe statements:

  • "For sec-01, I will separate upload ingest from GPU inference and keep policy enforcement outside the model graph."
  • "I will quote peak 185,000 QPS and 450KB images before picking GPU SKUs."
Design Image Recognition - System Design | WinJob | WinJob