← Attentive Interview Insights

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

Senior
Apr 2026

Summary

System design round at Attentive for a software engineering role. The prompt was a catalog service with a lot of moving parts, ingestion pipelines, schema design, admin overrides, the whole thing. Decent challenge if you like backend architecture problems.

Questions Asked (1)

Q1

Design a catalog service that ingests product data from multiple partner sites in different formats and on different schedules, stores it, and exposes it via an API. Admins should be able to override any partner-supplied attribute, and those overrides need to survive re-ingestion.

System DesignData ModelingAPI & Integrations
Author's notes

This one sprawled fast.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: data volume, partner formats, ingestion frequency, API consumers, and override semantics. Then design a layered architecture: ingestion adapters, canonical data model with override layer, storage, and API. Emphasize how overrides are stored separately and merged at read time to survive re-ingestion.

Pro tip: Mention that overrides should be stored in a separate table keyed by product ID and attribute name, with a flag indicating manual override, so re-ingestion never overwrites them. Also discuss idempotency and conflict resolution for concurrent updates.

1. Clarify Requirements and Constraints

Ask about data volume, partner formats (JSON, XML, CSV), ingestion schedules (real-time, batch), API usage patterns, and override rules (per attribute, per product).

2. Design Ingestion Pipeline

Propose adapters per partner format, a scheduler or queue for different cadences, and a normalization step to map to a canonical schema. Ensure idempotent writes.

3. Define Canonical Data Model and Override Storage

Create a canonical product schema. Store partner data in one table and overrides in a separate table with product ID, attribute name, value, and timestamp. Merge at read time.

4. Design Storage and API Layer

Choose a database (e.g., PostgreSQL for structured data, or a document store for flexibility). Expose a REST or GraphQL API that returns merged data, with admin endpoints to set overrides.

5. Address Scalability, Consistency, and Monitoring

Discuss partitioning, caching, eventual consistency, and monitoring ingestion failures. Ensure overrides are durable and auditable.

Key Points to Mention

  • Separate override table to persist manual changes across re-ingestion
  • Adapter pattern for handling multiple partner formats
  • Canonical data model for normalization
  • Idempotent ingestion to avoid duplicates
  • Read-time merge of partner data and overrides
  • API design with admin endpoints for overrides

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