---
# System prepended metadata

title: Systems Design Interview

---

# Systems Design Interview

### Setup

Imagine you have an existing system that tracks and aggregates information about shipping containers.

The information tracked includes... 

Highly structured information such as:
- the physical characteristics of the container (height, width, refrigerated or not, etc.)
- the location history of the container (times when it was on a vessel, or at a port, etc.)

And unstructured information such as:
- screenshots of 3rd party websites that publish information about the container

You can assume that the structured information is stored in a relational database (PostgreSQL) and that the unstructured information is stored in an object storage system (S3, etc.) or NoSQL db (MongoDB, etc.).

You can further assume that there is an existing API (REST or GraphQL) that can be used to retrieve all information for a container by its unique identifier (container number).

### Challenge

The team would like to build a brand-new web app that allows end users to request and download this information in the form of PDF reports.

Please design and diagram this system.

Some considerations:
- Each PDF report can have up to 100,000 containers which can create a report of the size 20 GB
- The largest reports requests can take a very long time to generate (several minutes)
- We want to keep the users informed of the status of their report requests and make it easy for them to download the reports once they're complete.