PracHub
QuestionsLearningGuidesInterview Prep
|Home/System Design/Shopify

Design a Product Photography Upload Service

Last updated: Jul 14, 2026

Quick Overview

Design a product-photography workflow from shoot creation and direct upload through processing, merchant review, acceptance, and reshoots. Cover scoped upload authorization, authoritative metadata, idempotent state transitions, stale completion events, notifications, retention, and publication safety.

  • medium
  • Shopify
  • System Design
  • Software Engineer

Design a Product Photography Upload Service

Company: Shopify

Role: Software Engineer

Category: System Design

Difficulty: medium

Interview Round: Onsite

# Design a Product Photography Upload Service Design a service for a commerce platform's product-photography workflow. A merchant ships an item to a studio, a photographer captures one or more photos, and the merchant can review the results and request a reshoot when dissatisfied. Cover the workflow from creating a shoot through upload, processing, review, acceptance, and reshoot. Define APIs for submission, upload authorization, status queries, review decisions, and cancellation. Explain how large files reach object storage, where metadata lives, and how users learn that processing or upload has completed. ### Constraints & Assumptions - Original images are large enough that routing bytes through the application tier is undesirable. - Upload authorization must be scoped to a specific shoot and object, expire, and prevent arbitrary storage writes. - Upload completion notifications can be duplicated, delayed, or delivered out of order. - A shoot may contain several attempts, but only an accepted attempt becomes the published asset set. - The appropriate notification mechanism depends on traffic and product latency needs; compare push, event-driven, and polling approaches rather than assuming one. ### Clarifying Questions to Ask - Who creates the shoot and maps it to a merchant and item? - Which image formats, sizes, transformations, and moderation checks are required? - Is near-real-time progress necessary, or is eventual status acceptable? - What are the retention and deletion rules for rejected attempts? - Can a merchant review while some files are still processing? ### What a Strong Answer Covers - A coherent state machine and idempotent transitions. - Secure direct-upload authorization plus authoritative metadata. - Reliable completion detection, processing, and user notification. - Failure recovery, observability, consistency, and cost-sensitive scaling choices. ### Follow-up Questions 1. How would you resume a multipart upload after a client disconnects? 2. How would you prevent a stale completion event from publishing a rejected attempt? 3. When would polling be preferable to a persistent push channel? 4. How would the design change for untrusted public uploaders?

Quick Answer: Design a product-photography workflow from shoot creation and direct upload through processing, merchant review, acceptance, and reshoots. Cover scoped upload authorization, authoritative metadata, idempotent state transitions, stale completion events, notifications, retention, and publication safety.

Related Interview Questions

  • Scaling a Collision-Free Rover Fleet to a Million Robots - Shopify (medium)
  • Choose Between Batch and Streaming for a Data Pipeline - Shopify (medium)
  • Design and implement a word-guessing game - Shopify (medium)
  • Design a rare-book lending and returns system - Shopify (hard)
|Home/System Design/Shopify

Design a Product Photography Upload Service

Shopify logo
Shopify
Apr 28, 2026, 12:00 AM
mediumSoftware EngineerOnsiteSystem Design
4
0

Design a Product Photography Upload Service

Design a service for a commerce platform's product-photography workflow. A merchant ships an item to a studio, a photographer captures one or more photos, and the merchant can review the results and request a reshoot when dissatisfied.

Cover the workflow from creating a shoot through upload, processing, review, acceptance, and reshoot. Define APIs for submission, upload authorization, status queries, review decisions, and cancellation. Explain how large files reach object storage, where metadata lives, and how users learn that processing or upload has completed.

Constraints & Assumptions

  • Original images are large enough that routing bytes through the application tier is undesirable.
  • Upload authorization must be scoped to a specific shoot and object, expire, and prevent arbitrary storage writes.
  • Upload completion notifications can be duplicated, delayed, or delivered out of order.
  • A shoot may contain several attempts, but only an accepted attempt becomes the published asset set.
  • The appropriate notification mechanism depends on traffic and product latency needs; compare push, event-driven, and polling approaches rather than assuming one.

Clarifying Questions to Ask Guidance

  • Who creates the shoot and maps it to a merchant and item?
  • Which image formats, sizes, transformations, and moderation checks are required?
  • Is near-real-time progress necessary, or is eventual status acceptable?
  • What are the retention and deletion rules for rejected attempts?
  • Can a merchant review while some files are still processing?

What a Strong Answer Covers Guidance

  • A coherent state machine and idempotent transitions.
  • Secure direct-upload authorization plus authoritative metadata.
  • Reliable completion detection, processing, and user notification.
  • Failure recovery, observability, consistency, and cost-sensitive scaling choices.

Follow-up Questions Guidance

  1. How would you resume a multipart upload after a client disconnects?
  2. How would you prevent a stale completion event from publishing a rejected attempt?
  3. When would polling be preferable to a persistent push channel?
  4. How would the design change for untrusted public uploaders?

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...

Browse More Questions

More System Design•More Shopify•More Software Engineer•Shopify Software Engineer•Shopify System Design•Software Engineer System Design

Your design canvas — auto-saved

PracHub

Master your tech interviews with 8,500+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • AI Coding Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.