← Openai Interview Insights

Openai·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
Jun 2026

Summary

System design round at OpenAI for a software engineer role. The problem was a task scheduling system for a human data-labeling platform, which sounds deceptively manageable until you get into the incremental update requirements and the fairness constraints across both humans and models.

Questions Asked (1)

Q1

Design a task scheduling system for a human data-labeling platform. Each day a new batch of tasks arrives and must be assigned to human labelers and models, with constraints around fairness, no repeat assignments, and incremental daily updates rather than full recomputation.

System DesignData ModelingTechnical Trade-offs
Author's notes

The fairness angle is what trips you up.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then design a data model that tracks task assignments and labeler history to enforce no-repeat and fairness constraints. Propose an incremental scheduling algorithm that processes only new tasks and updates assignments daily, using techniques like priority queues or constraint programming. Discuss trade-offs between fairness, throughput, and complexity, and how to handle failures and rebalancing.

Pro tip: Emphasize idempotency and auditability: ensure that daily updates can be safely retried and that assignment decisions are logged for debugging and fairness audits. This shows production maturity beyond just algorithmic correctness.

1. Clarify Requirements and Scale

Ask about task volume, labeler pool size, fairness metrics (e.g., equal exposure, skill matching), and latency requirements. Confirm that assignments are daily and that no-repeat means a labeler shouldn't see the same task twice, but tasks can be assigned to multiple labelers for consensus.

2. Design Data Model

Propose tables/collections for tasks, labelers, assignments, and history. Include fields like task_id, labeler_id, assignment_date, status, and a history of past assignments to enforce no-repeat. Consider indexing for efficient lookups.

3. Incremental Scheduling Algorithm

Describe an algorithm that processes only new tasks each day. Use a priority queue or greedy matching with constraints, leveraging existing assignments and labeler availability. Avoid full recomputation by maintaining state and using incremental updates.

4. Fairness and No-Repeat Enforcement

Explain how to incorporate fairness (e.g., round-robin, quota-based, or optimization with fairness constraints) and prevent repeat assignments by checking history. Discuss potential conflicts and how to resolve them (e.g., fallback to next best labeler).

5. Trade-offs and Scalability

Discuss trade-offs between fairness, throughput, and complexity. Address scalability: partitioning, sharding, and handling failures. Mention monitoring and rebalancing strategies for long-term fairness.

Key Points to Mention

  • Idempotent daily updates to allow safe retries and recovery from failures.
  • Use of a history store (e.g., a set of (task_id, labeler_id) pairs) to enforce no-repeat assignments.
  • Fairness metrics such as equal task distribution, exposure parity, or skill-based matching, and how to measure them.
  • Incremental algorithm design: process only new tasks, reuse previous assignments, and avoid full recomputation.
  • Handling of edge cases: labeler unavailability, task priority, and rebalancing when fairness drifts.
  • Scalability considerations: sharding by task or labeler, caching, and asynchronous processing.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.