Introduction

Welcome to Multimodal! We're excited to understand your approach to backend system design. This take-home assignment is designed to assess your ability to architect, design, and justify a backend service relevant to the kind of work we do – automating complex knowledge tasks.

Our systems often involve processing documents or data, sometimes involving long-running tasks (like interacting with LLMs or complex databases), and then making the results available via APIs. This assignment asks you to design a small piece of such a system.

Focus: This assignment is about design and justification, not coding. We want to see how you think about building robust, scalable, and maintainable systems.

Estimated Time: We expect you to spend approximately 3-5 hours thinking through and documenting your design.

Scenario: Asynchronous Task Processing API Design

Multimodal needs a backend service that can accept tasks, process them asynchronously, and allow clients to check the status and retrieve the results of these tasks. For this assignment, the "task" will be a simplified version of text processing – analyzing a piece of text to extract some basic information.

Imagine this service could later be extended to handle more complex tasks, like summarizing text using an LLM, extracting entities, or classifying documents.

Your Task: Design the System

You are to provide a detailed design document for the "Asynchronous Task Processing API" described above. Your document should cover the following aspects:

  1. Overall Architecture:
  2. API Design:
  3. Asynchronous Task Processing:
  4. Data Persistence:
  5. Technology Stack:
  6. Scalability and Reliability:
  7. Containerization & Deployment (Conceptual):
  8. Testing Strategy:

Deliverables