In this post12 sections
  1. The prompt, as one candidate reported it
  2. Clarify: which drivers, and better at what
  3. Stakeholders: drivers, passengers and whoever owns the data
  4. Data: what the columns can and cannot tell you
  5. A first version small enough to ship
  6. Risks and failure modes to name out loud
  7. The next step, and how to close the round
  8. What carries over to any prompt
  9. Practice it on a prompt you haven’t seen
  10. Questions people ask
  11. Keep reading
  12. More from the blog

You’ve read that the wants you to clarify, scope and ship a small first version. Here is what that sounds like on a prompt one candidate reported from Palantir: a sample of London taxi trips, and a request to suggest ideas to improve drivers’ lives. Source 1Palantir Learning & Decomposition Interview (Blind)PublisherBlindSource typecandidate report on Blind Below, we work it end to end with our six-step method, with the words to say out loud at each step. For the round as a whole, read our decomposition interview guide.

The answer in one minute:

  • Clarify: is id a trip or a driver, and which drivers (street-hail or booked)?
  • Metric: paid minutes per hour on shift, with passenger pickups elsewhere as the guardrail.
  • v0: a where-to-head-next page, built nightly from pickups by area and time band.
  • Risk: herding, so show a spread of areas, not one winner.
  • Monday: ask the data owner for a driver ID, so you can measure empty time.

The prompt, as one candidate reported it

The prompt

  • The data: one candidate reported 8,000 records of London taxi trips with 8 columns, which they named as id, fare, start location, end location, start time, end time and distance. Source 1Palantir Learning & Decomposition Interview (Blind)PublisherBlindSource typecandidate report on Blind
  • The ask: suggest an idea, draw the system’s components, come up with APIs, and write code if needed.
  • The limit: something that could be developed and deployed in a week.

The same candidate reported on Blind, in an undated update to an October 2022 post about their Palantir new-grad interview, that they were rejected. Source 1Palantir Learning & Decomposition Interview (Blind)PublisherBlindSource typecandidate report on Blind So this is one candidate’s account of the prompt, from someone who did not pass, and what follows is our method applied to it, not Palantir’s answer key. No one publishes how this round is scored; what the decomposition round tests sets out what employers do say.

The taxi poster was not the only candidate handed data. A second Palantir new-grad candidate, interviewing for the role, wrote on Blind in August 2022, “They give a sample data set and ask how can you use this data to do something.” Source 1Palantir Learning & Decomposition Interview (Blind)PublisherBlindSource typecandidate report on BlindSource 2Update: interview experience - Palantir new grad FDSE interview (Blind)PublisherBlindSource typecandidate report on Blind

Clarify: which drivers, and better at what

“Improve drivers’ lives” could mean more money per hour, fewer empty miles, shorter shifts or safer nights, and each leads to a different product. Palantir tells onsite candidates to talk through how they plan to approach analytical and technical problems, and to ask questions if necessary. Source 3Palantir Careers | Getting HiredPublisherPalantirSource typecompany hiring page In our method, you ask only the questions whose answers would change what you build, then commit.

The questions that pass that test here:

  • What is the eighth column? The poster named seven. If it is a driver ID or a vehicle ID, you can measure empty time, and the whole design changes.
  • Which drivers? A street-hail cab chooses where to cruise and wait. A driver who takes booked jobs mostly goes where the booking sends them. A “where to wait” tool helps the first and barely touches the second.
  • Is id a trip or a driver? A driver ID lets you see the gaps between one driver’s trips, which is their empty time. A trip ID does not.
  • Whose data is this? A fleet operator, a driver app, a city dataset? The owner decides who you can ship to in a week and what you may show them.
  • What are the locations, over what period? Coordinates or named zones, one week or a year: each changes how you group them.

Say it like this:

“Before I pick an idea, a few questions that change what I’d build. You said eight columns; I see seven names. What’s the eighth? Are these street-hail cabs or booked trips? Is id a trip or a driver? And when you say improve their lives, do you mean money per hour, or something like shorter shifts?”

If the interviewer answers, “What do you think?”, don’t ask again. Commit, out loud, with labeled assumptions:

“I’ll assume street-hail cabs, id is a trip ID, the eighth column is something like a vehicle type, not a driver ID, locations are named zones, and the rows span a few weeks. I’ll define better as more paid time per hour on shift. Those are on the board as assumptions; correct any of them.”

A Blind user with a Palantir tag, who said they had worked there, wrote in March 2025 that a bad decomposition performance means not asking questions, making large assumptions without clarifying, misunderstanding the problem before jumping in, giving impractical solutions and not expanding on the original v0. Source 2Update: interview experience - Palantir new grad FDSE interview (Blind)PublisherBlindSource typecandidate report on BlindSource 4Palantir FDSE Interview (Blind)PublisherBlind (Teamblind)Source typecandidate report on Blind Labeled assumptions deal with the second item: you still make them, but where the interviewer can see and fix them. Our free lesson the open-ended round and the method on one page shows the whole sequence on one short case.

Stakeholders: drivers, passengers and whoever owns the data

A driver tool touches more people than drivers. Name each in a line:

  • Drivers. The users. A tool that sends them on a long empty drive to a “hot” zone makes their day worse.
  • Passengers. If every cab chases the same zones, waits grow elsewhere, and their pickup and drop-off points can reveal where they live, so drivers see only aggregates.
  • The data owner. Whoever supplied the rows says yes to access, and to what a driver may see.

Then pick one number, and give it a guardrail:

“Success is paid minutes per hour on shift, for drivers who use this against drivers who don’t. The guardrail is passenger pickups in the zones we steer drivers away from, so drivers don’t gain by leaving other areas without cabs.”

Now notice the problem: if id is a trip ID, these rows cannot measure that metric at all. Say so out loud; it becomes your next step.

Data: what the columns can and cannot tell you

Read the columns aloud before you design anything. One poster who had sat a Palantir interview wrote on Blind, in July 2022, that “clarifying the question and data schema/source is super important.” Source 2Update: interview experience - Palantir new grad FDSE interview (Blind)PublisherBlindSource typecandidate report on BlindSource 4Palantir FDSE Interview (Blind)PublisherBlind (Teamblind)Source typecandidate report on Blind Here is what that looks like on this data.

ColumnTells youCannot tell you
fareMoney per tripTips, fees, running costs
start location and timeWhere and when pickups happenedWhere people waited and got no cab
end location and timeWhere a driver ends up emptyWhere they went next
distanceFare per mile, trip speedThe empty miles before the pickup
idOne row per tripWho drove, unless it is a driver ID

This read-the-columns pass is the core of our lesson on dataset-first prompts.

Three blind spots matter most:

  • Empty time. A driver’s hard hours are the ones between fares. The rows record only paid time.
  • Unmet demand. A pickup shows where a cab and a passenger met, not where passengers stood in the rain. The data is a map of where drivers already went.
  • Supply. A busy zone full of waiting cabs can be worse than a quiet zone with none, and the rows show neither.

Then check the rows for traps in your first minutes:

  • zero-distance or zero-minute trips, which may be tests or cancellations;
  • trips that cross midnight, so you band by start time;
  • airport fares, which are large enough to drag any average, so use sums or medians and say which;
  • the clock: whether the times are local, and what happens at a clock change.

Next, one number that sets the design. One candidate reported 8,000 records. Source 1Palantir Learning & Decomposition Interview (Blind)PublisherBlindSource typecandidate report on Blind Spread thin, that is almost nothing:

50 zones x 168 hours = 8,400
8,000 / 8,400 = under 1
10 areas x 5 bands = 50
8,000 / 50 = about 160

So v0 groups coarsely: a handful of areas and time bands, not every street and hour. Say it as a decision: “At fine grain there’s less than one trip per cell, so I’ll group into a few areas and time bands, and show how many trips back each number.”

If code is asked for, the core step is clean, band and aggregate. This runs on a small made-up sample with the reported columns:

import pandas as pd

t = pd.read_csv("trips.csv",
    parse_dates=["start_time", "end_time"])
secs = (t.end_time - t.start_time)
t["mins"] = secs.dt.total_seconds() / 60
ok = (t.mins > 0) & (t.distance > 0)
t = t[ok & (t.fare > 0)].copy()
t["band"] = pd.cut(
    t.start_time.dt.hour,
    [0, 7, 10, 17, 21, 24], right=False,
    labels=["night", "am", "day",
            "pm", "late"])
g = t.groupby(["start_location", "band"],
              observed=True)
cells = g.agg(trips=("id", "count"),
              fare=("fare", "sum"),
              mins=("mins", "sum"))
cells["per_min"] = (
    cells.fare / cells.mins).round(2)
top = cells.sort_values("per_min",
                         ascending=False)
print(top[["trips", "per_min"]])

On our sample it prints:

                     trips  per_min
start_location band
Heathrow       am        2     1.10
Soho           late      3     0.62
Kings X        am        2     0.59

The filter dropped a zero-minute, zero-fare row; mention it. Then say the thing that earns the round: Heathrow in the morning looks best per paid minute, and it is the most misleading row on the page. The data cannot see the queue a driver sits in before an airport fare, so paid rate flatters it. The post on decomposition interviews that come with a dataset goes deeper on reading columns for their trap.

A first version small enough to ship

Palantir’s page on open-ended questions says to articulate the alternatives and trade-offs, arrive at a concrete approach, and “deliver a functioning idea first, then expand it afterwards.” Source 5Palantir Careers | Navigating Open-Ended QuestionsPublisherPalantir TechnologiesSource typecompany hiring page Read the one-week limit as a chance to show that advice. Name the ideas you considered and why you turned them down, in one breath:

IdeaNeedsFits these rows?
Where to wait nextPickups by place and timeYes
Shift plannerDriver IDs and shift logsNo
Route adviceGPS tracesNo
Fare changesControl over faresNot the driver’s lever

“I considered a shift planner and route advice. Both need data we don’t have. Where to head next uses exactly these columns, so that’s v0.”

Now describe the walking skeleton: the thinnest version that runs end to end, for a real user making a real decision.

  • User: a street-hail driver who has just dropped someone off.
  • Decision: where to head for the next fare.
  • Real: pickups, paid minutes and fares by area and time band, from the trips.
  • Faked: anything live. It is a table rebuilt nightly, and the area boundaries are drawn by hand.
  • What it teaches: whether drivers who follow it wait less than drivers who don’t.

The components, drawn small enough to fit a phone or a whiteboard corner:

trips file (nightly drop)
  -> clean + aggregate job
  -> cells: area, band, trips,
            fare, paid_mins
  -> GET /next-areas
  -> one page on the driver's phone

One interface, with its fields:

GET /next-areas
  ?from=Soho
  &at=2026-03-06T22:55Z
-> { "band": "late",
  "areas": [{
    "area": "Camden",
    "pickups_per_hour": 3.1,
    "paid_per_min": 0.64,
    "trips_behind": 41 }],
  "wait_before_pickup": "unknown" }

Times are UTC; the job bands them in London time. trips_behind shows the evidence behind each number, and wait_before_pickup admits what the data cannot see.

“v0 is one page a driver opens after a drop-off: from here, at this time, a short list of nearby areas ranked by pickups per hour, with the paid rate and how many trips each number rests on. A nightly job builds the table and one endpoint serves it. It fits in a week because nothing is live.”

The Pro lesson The walking skeleton covers what you may fake in a first version and what you must never fake.

Risks and failure modes to name out loud

Name risks of different kinds, each with a signal you would see in the first weeks and a response:

  • Herding. Every driver gets the same top pick, the area floods and the pick stops being true. Signal: pickups per driver fall in recommended areas. Response: show a spread, not one winner.
  • Biased history. The rows show where cabs already went, so v0 may repeat today’s habits. Signal: the top picks are just the busiest areas in the rows. Response: say so, and let the trial decide.
  • Thin cells. Signal: a cell below the minimum trips_behind. Response: hide it, and show the count on every other cell.
  • Privacy. Pickups near homes, late at night. Signal: any cell whose pickups trace back to a handful of addresses. Response: widen the area or drop the cell; never show a single trip.
  • Stale patterns. Events, strikes and weather break a nightly table. Signal: suggestions and outcomes drift apart. Response: fall back to “unknown” on known event days.
  • Safety. A tool that nudges drivers to stay out longer or hurry is a harm, not a feature. Signal: users’ shifts get longer. Response: never rank by hours worked.

“The risk I’d watch first is herding: if every driver gets the same top pick, it stops being true. The signal is pickups per driver falling in the areas we recommend, and the fix is to show a spread.”

The next step, and how to close the round

Palantir’s guide explains the focus on open-ended problems by saying urgent real-world problems need solutions that work before there is time to make them perfect. Source 5Palantir Careers | Navigating Open-Ended QuestionsPublisherPalantir TechnologiesSource typecompany hiring page Working first is v0. Then expand: the Blind user who said they had worked at Palantir listed not expanding on the v0 as part of a bad performance. Source 2Update: interview experience - Palantir new grad FDSE interview (Blind)PublisherBlindSource typecandidate report on BlindSource 4Palantir FDSE Interview (Blind)PublisherBlind (Teamblind)Source typecandidate report on Blind

  • v1, the data. Ask the owner for a driver ID and shift start and end times. Now you can measure empty time, which is the metric you actually chose.
  • v1, the test. Give the page to some drivers and not others, and compare paid minutes per hour.
  • v2, live. Replace the nightly table with recent pickups, once the trial says the idea helps.

When time is nearly out, close in four parts: the problem, the first version, the biggest risk and Monday.

“To close: drivers lose money in empty time, and these rows only see paid time. The first version is a where-to-head-next page, built nightly from pickups by area and time band. The biggest risk is herding, so we show a spread and watch pickups per driver. On Monday I’d ask the data owner whether id can become a driver ID, because that’s what lets us measure empty time.”

Together with the diagram, the endpoint and the snippet above, that covers every item in the reported ask: an idea, the components, an API and code, all small enough to ship in a week.

What carries over to any prompt

Moves to reuse on any decomposition prompt

  • Say the ask back, with every deliverable the prompt names.
  • Find the column that decides what you can measure, and ask about it first.
  • List what the data cannot see before you choose an idea.
  • Do one volume sum that sets the grain of your design.
  • Pick the idea that fits the data, and name the ones you turned down.
  • Name a harm to someone who is not your user.
  • Close with the question you would ask on Monday.

Two common mistakes, and the fix for each:

  • Promising “optimal” anything in a week. Promise a ranked list with its evidence count.
  • Treating this walkthrough as the answer key. Practice the moves, not this answer.

The same moves work on prompts with no data. In an interview First Round Review published in February 2026, Palantir’s former recruiting lead gave, as an example scenario, explaining insider trading to the candidate and asking them to design a solution, including what data they would need and what they would ask the customer. Source 6So You Want to Hire a Forward Deployed EngineerPublisherFirst Round ReviewSource typenews report Our post on the insider trading interview question works through that one.

Practice it on a prompt you haven’t seen

Take a free question in the same shape and run every step with a timer: build a feature from fitness-app event data comes with rows to read, improve city bus reliability is the taxi prompt’s closest cousin, and shorter checkout lines without more staff has no dataset at all. Each has a model answer to check yours against.

Then run the same six moves out loud, against someone who answers back. The building permits case at /try is free: sign in, scope a vague problem with a simulated customer who only reveals what you ask about, then read your scorecard. Count how many of the checklist moves you made without prompting.

GlossaryDecomposition roundAn open-ended interview in which you work out loud from a vague problem with several possible solutions to a concrete approach and a first working version.More on Decomposition roundGlossaryForward deployed software engineerPalantir’s title for its FDE role, called Delta internally; OpenAI and EY also post FDSE titles, each with its own duties.More on Forward deployed software engineerGlossaryForward deployed engineerA software engineer who builds and ships production systems inside a customer’s problem and environment, accountable to that customer’s outcome.More on Forward deployed engineer

Questions people ask

What decomposition questions have candidates reported from Palantir?

Palantir does not publish its prompts. One candidate interviewing for a Palantir new-grad role reported on Blind that their decomposition question asked for a first-cut solution to improve London taxi drivers’ lives from 8000 records of taxi data. Blind commenters described other open-ended prompts in early 2025: one said they got an app to log species on another planet, and another described a question similar to theirs about helping a cousin who delivers for Uber Eats choose orders.Source 1Palantir Learning & Decomposition Interview (Blind)PublisherBlindSource typecandidate report on BlindSource 7Palantir FDSE InterviewPublisherBlind (teamblind.com)Source typecandidate report on BlindSource 8Palantir FDSE Decomp/System Design InterviewPublisherBlind (teamblind.com)Source typecandidate report on Blind

What do candidates report about data in Palantir decomposition interviews?

Two Palantir new-grad candidates on Blind said the decomposition interview came with data: one wrote that they give a sample data set and ask how you can use it, and another said they were given London taxi data. Prepare for a prompt with a dataset and one without.Source 1Palantir Learning & Decomposition Interview (Blind)PublisherBlindSource typecandidate report on BlindSource 2Update: interview experience - Palantir new grad FDSE interview (Blind)PublisherBlindSource typecandidate report on Blind

What should I say first in a decomposition interview?

Our method starts by restating the goal and asking who the user is before proposing anything. Palantir’s published advice is to talk through how you plan to approach the problem and to ask questions if necessary.Source 3Palantir Careers | Getting HiredPublisherPalantirSource typecompany hiring page

Keep reading