← Perplexity Interview Insights

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

SeniorPrefer not to say
Jun 2026

Summary

Perplexity system design round focused entirely on an AI-augmented to-do list app. The scope was massive and I definitely underestimated how deep they wanted to go on the LLM integration side specifically.

Questions Asked (4)

Q1

Design an AI-powered to-do list application that supports natural language task creation (e.g. 'remind me to call mom every Sunday at 6pm'), AI-suggested subtask decomposition, smart prioritization, scheduling, and reminders. Cover the data model, API surface, LLM integration, cross-device sync, and offline support.

System DesignAPI & IntegrationsData Modeling
Author's notes

This is a single question but it's basically six questions duct-taped together.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then walk through the high-level architecture covering data model, API, LLM integration, sync, and offline support. Emphasize trade-offs and how each component handles failures and edge cases, especially around natural language parsing and conflict resolution.

Pro tip: Treat the LLM as an unreliable service: design a fallback parser and cache LLM outputs to reduce cost and latency. Also, discuss how you'd evaluate and improve the LLM's accuracy over time using user corrections.

1. Clarify Requirements and Scale

Ask about expected user base, task volume, latency requirements, and offline usage patterns. Confirm whether the app is consumer or enterprise, and if there are compliance needs (e.g., GDPR).

2. Design Data Model and API

Define core entities (User, Task, Subtask, Reminder, Schedule) and their relationships. Sketch REST or GraphQL endpoints for CRUD operations, natural language input, and sync.

3. Integrate LLM for NLP and Suggestions

Explain how to parse natural language into structured tasks using an LLM (e.g., function calling), with fallback to rule-based parsing. Describe how to generate subtask suggestions and smart prioritization, including caching and rate limiting.

4. Handle Cross-Device Sync and Offline Support

Choose a sync strategy (e.g., CRDTs or operational transforms) and describe conflict resolution. Detail offline-first architecture with local storage, background sync, and queueing of LLM requests when offline.

5. Address Scalability, Reliability, and Trade-offs

Discuss scaling the backend (sharding, caching), LLM cost/latency mitigation, and monitoring. Highlight trade-offs between consistency and availability, and between LLM accuracy and fallback mechanisms.

Key Points to Mention

  • Data model: tasks with due dates, recurrence rules (RRULE), subtasks, priorities, and user context.
  • API design: endpoints for natural language input, task CRUD, sync, and LLM-powered suggestions.
  • LLM integration: using function calling for structured output, caching, fallback parsers, and user feedback loops.
  • Cross-device sync: conflict resolution strategies (e.g., last-write-wins, CRDTs) and real-time updates via WebSockets.
  • Offline support: local database (e.g., SQLite), background sync, and queueing LLM requests for later processing.
  • Scalability and reliability: rate limiting, caching, sharding, and monitoring LLM performance.

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

Q2

How would you design the data model to handle recurring tasks with flexible recurrence rules?

Data ModelingTechnical Trade-offs
Author's notes

Talked through storing recurrence as a rule object separate from the task instance, something like an RFC 5545 style pattern.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements: what types of recurrence rules are needed (daily, weekly, monthly, custom), how flexible they must be, and the expected scale. Then propose a data model that separates the recurrence rule definition from the task instances, using a structured format like RRULE or a custom DSL, and discuss trade-offs between storing precomputed instances versus generating them on the fly.

Pro tip: Mention the importance of handling edge cases like time zones, daylight saving time, and exceptions (e.g., skipped occurrences) early in the design, as these often cause bugs in production systems.

1. Clarify Requirements

Ask about the types of recurrence patterns needed, the scale of tasks, and whether real-time generation or precomputation is preferred. This ensures the design meets actual needs.

2. Choose a Recurrence Representation

Decide between using a standard like iCalendar RRULE, a cron expression, or a custom JSON schema. Discuss the trade-offs in expressiveness, complexity, and ease of querying.

3. Design the Core Tables

Propose tables for tasks, recurrence rules, and task instances (if precomputed). Include fields for rule parameters, start/end dates, and exception handling.

4. Address Edge Cases and Scalability

Explain how to handle time zones, DST, exceptions, and how the model scales with many tasks. Discuss indexing and query patterns.

5. Discuss Trade-offs and Alternatives

Compare precomputing instances vs. generating on the fly, and consider hybrid approaches. Mention how the choice affects performance, storage, and complexity.

Key Points to Mention

  • Use of standard recurrence formats like iCalendar RRULE or cron expressions for interoperability and expressiveness.
  • Separation of recurrence rule definition from task instances to avoid data duplication and enable flexible querying.
  • Handling of time zones and daylight saving time to ensure correct scheduling across regions.
  • Support for exceptions and overrides (e.g., skipping a single occurrence or modifying one instance).
  • Trade-offs between precomputing task instances (faster reads, more storage) and generating on demand (less storage, more compute).
  • Indexing strategies for efficient querying of upcoming tasks based on recurrence rules.

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

Q3

How would you handle LLM integration for this product: specifically prompt design, latency, cost, and privacy concerns?

Technical Trade-offsSystem DesignProduct Sense & Ideation
Author's notes

This is where I fumbled.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the product's requirements and constraints, then systematically address each concern (prompt design, latency, cost, privacy) with specific strategies and trade-offs. Emphasize a user-centric approach that balances performance, cost, and privacy while maintaining answer quality.

Pro tip: Quantify trade-offs with concrete examples (e.g., 'Caching can reduce latency by 50% but may serve stale answers') and mention Perplexity's focus on real-time, accurate answers to show alignment with company values.

1. Clarify Requirements and Constraints

Ask about expected query volume, latency SLAs, budget constraints, and privacy regulations (e.g., GDPR). This ensures your answer is tailored to the product's needs.

2. Design Effective Prompts

Discuss prompt engineering techniques like few-shot learning, chain-of-thought, and system prompts to improve accuracy. Mention iterative testing and versioning to manage prompt changes.

3. Optimize for Latency

Propose strategies such as model distillation, quantization, caching frequent queries, and streaming responses. Consider using smaller models for simpler tasks and routing to larger models only when needed.

4. Manage Costs

Suggest cost-saving measures like caching, batching, using spot instances, and monitoring token usage. Discuss trade-offs between cost and quality, and consider fine-tuning smaller models for specific tasks.

5. Address Privacy and Security

Outline data anonymization, encryption in transit and at rest, and compliance with regulations. Mention options like on-premise deployment or using privacy-preserving techniques (e.g., federated learning) if applicable.

Key Points to Mention

  • Prompt design: few-shot examples, chain-of-thought, and prompt versioning for maintainability.
  • Latency: caching, model distillation, streaming, and edge deployment to reduce response time.
  • Cost: token usage monitoring, caching, batching, and choosing the right model size for the task.
  • Privacy: data anonymization, encryption, compliance (GDPR, CCPA), and user consent.
  • Trade-offs: balancing latency, cost, and quality; e.g., caching improves latency and cost but may reduce freshness.
  • Monitoring and evaluation: A/B testing, user feedback loops, and metrics to continuously improve.

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

Q4

How would you support offline functionality and cross-device sync for this application?

System DesignTechnical Trade-offs
Author's notes

Blanked a little here.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the application's data model and user expectations for offline and sync, then propose a client-side storage solution (e.g., IndexedDB) with a sync engine that handles conflicts via a strategy like last-write-wins or CRDTs. Discuss trade-offs between consistency, latency, and complexity, and outline how you'd test and monitor the system.

Pro tip: Emphasize that offline support is not just about caching but about designing for eventual consistency and graceful conflict resolution; mention that you'd start with a simple sync protocol and iterate based on user feedback and metrics.

1. Clarify Requirements and Constraints

Ask about the types of data, expected offline duration, number of devices, and consistency needs. This ensures the solution aligns with actual use cases.

2. Design Client-Side Storage and Sync Engine

Propose using IndexedDB or similar for local storage, and outline a sync engine that queues changes and syncs when online, with conflict resolution.

3. Choose a Conflict Resolution Strategy

Discuss options like last-write-wins, version vectors, or CRDTs, and justify your choice based on data types and user experience.

4. Address Backend and API Design

Explain how the server will handle sync requests, including endpoints for delta updates, authentication, and idempotency.

5. Plan for Testing, Monitoring, and Iteration

Describe how you'd test offline scenarios, monitor sync success rates, and iterate on the design based on real-world usage.

Key Points to Mention

  • Use of IndexedDB or similar client-side storage for offline data persistence
  • Sync engine design with change queues and background sync
  • Conflict resolution strategies (e.g., last-write-wins, CRDTs) and their trade-offs
  • Backend API design for efficient delta sync and idempotent operations
  • Handling network flakiness and retry logic with exponential backoff
  • Testing strategies including simulation of offline conditions and edge cases

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