Planning in the Era of LLMs โ€” Part 6 of 7

From English to Plans: The NL-to-PDDL Frontier

NL2Plan, agentic PDDL generation, and the orchestrator bottleneck โ€” when the conductor can't keep up with the orchestra.

๐Ÿ“š Planning in the Era of LLMs โ€” Part 6 of 7

Post 5 showed that when PDDL is given, the combination of LLMs and formal planners achieves remarkable results โ€” 82% accuracy versus 12% for LLMs alone. But it left a critical question unanswered: who writes the PDDL?

For the RoboSort warehouse, we wrote PDDL by hand in Post 2. That took expertise. We defined robot-at, holding, supports, place-on-piece โ€” every predicate, every action, every precondition. A planning expert could do this for a standard warehouse. But what about the user who simply says:

"I have a robot in a warehouse with three shelves. It can carry one item. Some pieces need support underneath. Help it build a tower."

No types. No predicates. No action schemas. Just English. This is Paradigm 2 โ€” the system must create the formal model from scratch, validate it, solve it, and return a verified plan. It's the most ambitious goal in the LLM-planning research landscape, and it's where the field's most exciting work is happening right now.

The NL-to-Plan Pipeline

Converting English to a verified plan requires five stages. Each one is hard. Getting all five right, in sequence, is extraordinarily hard.

The NL-to-Plan Pipeline

Stage 1
English
Description
โ†’
Stage 2
Extract Types,
Predicates, Actions
โ†’
Stage 3
Generate
PDDL
โ†’
Stage 4
Validate &
Fix PDDL
โ†’
Stage 5
Solve &
Return Plan

Five stages from English to verified plan. Each stage can fail independently. The pipeline's overall accuracy is the product of per-stage accuracies โ€” if each stage is 90% reliable, the pipeline is only 59% end-to-end.

Let's trace the pipeline for our RoboSort warehouse:

Awaiting orders...Gripper: empty | Tower: 0/5 pieces
Shelf A
Shelf B
Shelf C
L1
L2
Beam
Roof
Flag
Build Zone
RoboSort

The English description below corresponds to this exact configuration ยท the NL-to-PDDL pipeline has to recover all of it from plain text

  1. English Description: "A robot in a warehouse with three shelves (A, B, C) and a build zone. Shelf A has two legs, Shelf B has a beam, Shelf C has a roof and a flag. The robot starts at home and can carry one piece. Legs support beam, beam supports roof, roof supports flag. Build the tower."
  2. Extract Types, Predicates, Actions: The LLM must infer that there are locations (shelves, build zone, home), pieces (L1, L2, beam, roof, flag), and predicates like robot-at, piece-at, holding, supports, placed. It must also infer the action schemas: move, pick, place-on-platform, place-on-piece โ€” each with correct preconditions and effects.
  3. Generate PDDL: The LLM writes syntactically valid PDDL domain and problem files โ€” the same code we wrote by hand in Post 2.
  4. Validate & Fix: A PDDL parser checks syntax. A validator checks semantic consistency. If errors are found, the LLM gets feedback and fixes them.
  5. Solve & Return: A classical planner (Fast Downward, etc.) solves the validated PDDL and returns the plan.
Stage 2 made concrete ยท what the LLM has to extract from the English
Input: English
"A robot in a warehouse with three shelves (A, B, C) and a build zone. Shelf A has two legs, Shelf B has a beam, Shelf C has a roof and a flag. The robot starts at home and can carry one piece. Legs support beam, beam supports roof, roof supports flag. Build the tower."
locations: Shelf A/B/C, build zone, home
pieces: 2 legs, beam, roof, flag
robot: at home, one-at-a-time gripper
constraints: support chain, gripper capacity
goal: tower assembled in build zone
Output: PDDL (excerpt)
(:objects 
  robot - robot
  shelf-a shelf-b shelf-c home build-zone - location
  L1 L2 beam roof flag - piece)

(:init 
  (robot-at robot home) (gripper-empty)
  (piece-at L1 shelf-a) (piece-at L2 shelf-a)
  (piece-at beam shelf-b)
  (piece-at roof shelf-c) (piece-at flag shelf-c)
  (supports L1 beam) (supports L2 beam)
  (supports beam roof) (supports roof flag))

(:goal 
  (and (placed L1) (placed L2) (placed beam)
       (placed roof) (placed flag)))
Each color above traces back to a phrase in the English on the left. The LLM has to do this color-matching itself โ€” from grammar and world knowledge alone.

The extraction is not naming, it's structuring. "Can carry one piece" doesn't mention gripper-empty, but the predicate is what the planner needs. "Legs support beam" must become four facts: supports(L1, beam), supports(L2, beam), and the chain into roof and flag. Every missed predicate becomes a missed precondition; every missed precondition becomes a broken plan.

Each stage is a point of failure. The LLM might miss a predicate (stage 2), generate syntactically invalid PDDL (stage 3), or produce semantically correct PDDL that doesn't match the user's intent (stages 2โ€“3). This is why the field converged on multi-agent systems โ€” specialized agents for each stage, coordinated by an orchestrator.

NL2Plan: The Multi-Agent Approach

NL2Plan (Gestrin et al., 2025) is the most systematic framework for this problem. Instead of asking a single LLM to do everything, it decomposes the pipeline into specialized agents, each responsible for one stage.

NL2Plan: Specialized Agents

๐Ÿ”
Type Extractor

Identifies object types from the description: location, piece, robot

๐Ÿ“‹
Predicate Extractor

Derives predicates: robot-at, holding, placed, supports, gripper-empty

โš™๏ธ
Action Extractor

Defines actions with preconditions and effects: move, pick, place

โœ“
PDDL Validator

Parses, validates syntax and semantics, reports errors

๐ŸŽผ Orchestrator โ€” coordinates agents, routes feedback, decides when to retry or advance

NL2Plan uses specialized agents for each extraction task. The orchestrator coordinates the pipeline โ€” and, as we'll see, is the weakest link.

The key innovation is the decomposition. Instead of one massive prompt ("convert this English to PDDL"), NL2Plan breaks the task into focused queries: "What types of objects exist in this description?" then "Given these types, what predicates describe their relationships?" then "Given these types and predicates, what actions can the robot perform?" Each agent can use few-shot examples and targeted prompts for its specific subtask.

RoboSort Through NL2Plan

Here's how NL2Plan processes our warehouse description, transforming natural language into the same PDDL we wrote by hand in Post 2:

Natural Language Input

"A robot called RoboSort works in a warehouse. There are three shelves (A, B, C) and a build zone. The robot starts at home."

"Shelf A has two leg pieces (L1 and L2). Shelf B has a beam. Shelf C has a roof and a flag."

"The robot can move between locations, pick up one piece at a time, and place pieces in the build zone."

"Support rules: Legs support the beam. The beam supports the roof. The roof supports the flag. A piece can only be placed on something that supports it and is already placed."

"Goal: All five pieces assembled into a tower in the build zone."

โ†’
Generated PDDL
(define (domain robosort-tower)
  (:requirements :strips :typing)
  (:types location piece)
  (:predicates
    (robot-at ?l - location)
    (piece-at ?p - piece ?l - location)
    (holding ?p - piece)
    (gripper-empty)
    (supports ?lower ?upper - piece)
    (on-platform ?p - piece)
    (placed ?p - piece))

  (:action move
    :parameters (?from ?to - location)
    :precondition (robot-at ?from)
    :effect (and (robot-at ?to)
                 (not (robot-at ?from))))

  (:action pick
    :parameters (?p - piece ?l - location)
    :precondition (and (robot-at ?l)
                       (piece-at ?p ?l)
                       (gripper-empty))
    :effect (and (holding ?p)
                 (not (piece-at ?p ?l))
                 (not (gripper-empty))))
  ...
)

NL2Plan transforms natural language into the same PDDL domain we manually wrote in Post 2. The LLM correctly extracts types (location, piece), predicates (robot-at, supports, holding), and actions (move, pick, place) โ€” including the critical support constraint.

Key Insight

NL2Plan achieves 100% accuracy on several standard domains โ€” the generated PDDL is functionally identical to expert-written PDDL. The breakthrough is decomposition: by splitting the hard problem ("English โ†’ PDDL") into focused subproblems ("English โ†’ types," "types โ†’ predicates," etc.), each step becomes tractable for current LLMs.

The Orchestrator Bottleneck

NL2Plan achieves impressive results on standard domains. But it has an Achilles' heel: the orchestrator. The orchestrator is the conductor of the multi-agent pipeline โ€” it decides when to call each agent, how to route feedback, when a PDDL file is "good enough" to pass to the solver, and when to give up and restart.

Here's the problem: the orchestrator is also an LLM. And the orchestration task is itself a planning problem โ€” one that requires sequencing agents, tracking state (which agents have run, what errors remain), and backtracking when a strategy fails. Sound familiar?

The Recursive Problem

The orchestrator must plan the PDDL generation pipeline. But planning is exactly what LLMs are bad at (Post 4). The system designed to solve the planning bottleneck has a planning bottleneck of its own. The conductor can't keep up with the orchestra.

In practice, this manifests as three failure modes:

  1. Premature advancement: The orchestrator declares the PDDL "done" when it still has subtle errors โ€” a missing predicate, an action with an incomplete effect list. The planner then fails or produces an incorrect plan.
  2. Infinite revision loops: The validator reports an error, the fixer introduces a new error while fixing the first, the validator catches the new error, and the cycle repeats. The orchestrator doesn't recognize the loop.
  3. Missing abstractions: The user's description implies a concept the LLM doesn't extract. For RoboSort, the phrase "pieces need support underneath" implies a supports predicate, a placed predicate, and a precondition on the place action. If the extractor misses any of these, the resulting PDDL allows invalid tower constructions โ€” and the orchestrator may not catch it because the PDDL is syntactically valid.

Orchestrator Failure on RoboSort

Let's see what happens when NL2Plan processes a subtly ambiguous RoboSort description:

User Description

"Build a tower from five parts. Two legs go on the bottom, a beam goes on the legs, a roof on the beam, and a flag on top. The robot carries one part at a time."

โœ“ What NL2Plan Extracts Correctly
  • Types: location, piece
  • Actions: move, pick, place
  • Objects: L1, L2, beam, roof, flag
  • Gripper-empty constraint
โœ— What It Misses
  • No supports predicate (user said "on the legs" โ€” not formally stated)
  • No placed predicate โ€” can't check if support exists
  • Place action has no support precondition
โš  Result: Syntactically Valid, Semantically Wrong PDDL

The generated PDDL parses correctly and the planner finds a "solution" โ€” but it places the roof before the beam because nothing in the formal model prevents it. The orchestrator declares success. The plan is wrong.

The orchestrator passes syntactically valid PDDL to the solver โ€” but the PDDL is missing the support constraint. The resulting plan is "valid" according to the broken model but physically impossible. This is the subtlest and most dangerous failure mode.

Agentic PDDL: A Different Approach

In parallel with NL2Plan, La Malfa et al. (2025) introduced Agentic PDDL, which takes a different approach to the orchestration problem. Instead of a fixed pipeline, it uses a conversational loop: an LLM generates PDDL, a formal tool validates it, and the LLM iteratively refines โ€” but with a critical addition: the user stays in the loop.

When the system encounters ambiguity โ€” "do the legs need to both be placed before the beam, or can one leg suffice?" โ€” it asks the user. This solves the missing-abstraction problem by making implicit constraints explicit through dialogue.

For RoboSort, this might look like:

SYSTEM

I've extracted four actions: move, pick, place-on-platform, and place-on-piece. For place-on-piece, I need to clarify: you said "a beam goes on the legs." Does the beam require both legs to be placed first, or just one?

USER

Both legs must be placed before the beam.

SYSTEM

Understood. Adding preconditions: (supports L1 beam), (supports L2 beam), and requiring both (placed L1) and (placed L2) before the beam can be placed. Updated PDDL validates correctly. Solving...

Agentic PDDL keeps the user in the loop. When the system detects ambiguity in support constraints, it asks โ€” rather than guessing. This catches the exact failure mode NL2Plan misses.

Key Insight

The orchestration problem is fundamentally a communication problem, not just a planning problem. Natural language is ambiguous. Formal models require precision. The gap between the two is where errors hide. Agentic PDDL bridges this gap through dialogue โ€” asking users to resolve ambiguities rather than guessing. This human-in-the-loop approach trades automation for accuracy.

This NL-to-PDDL challenge mirrors a classic software engineering problem: converting requirements documents into formal specifications. Product managers write "the system should handle payments" โ€” but the formal spec needs to know: which payment providers? What happens on failure? Retry or refund? In what currency? The same ambiguity gap that plagues NL-to-PDDL plagues requirements engineering.

The planning community's insight โ€” specialized agents with formal validation and human-in-the-loop clarification โ€” may prove valuable far beyond PDDL generation.

Seeing the Full Pipeline: English to Plan

Let's watch the complete NL-to-Plan pipeline process our RoboSort warehouse description โ€” from English input to verified plan output. Each stage shows what happens under the hood.

Interactive โ€” click "โ–ถ Run Pipeline" to watch English become a verified plan, stage by stage
1
Parse Natural Language
Waiting...
2
Extract Types & Predicates
Waiting...
3
Generate PDDL Domain & Problem
Waiting...
4
Validate & Fix
Waiting...
5
Solve & Return Plan
Waiting...

The Landscape: Where Paradigm 2 Stands

Paradigm 2 results are mixed but improving rapidly. Here's the current picture:

Paradigm 2 Results: NL-to-Plan Accuracy

End-to-end accuracy on planning domains (English in, valid plan out)

Standard domains
(Blocksworld, Logistics)
~100%
Medium domains
(Satellite, Rovers)
~65%
Novel domains
(unseen in training)
~35%
Ambiguous descriptions
(implicit constraints)
~15%

NL-to-Plan accuracy varies dramatically by domain familiarity. Standard domains the LLM has seen in training (like Blocksworld) achieve near-perfect results. Novel domains with ambiguous constraints remain hard. Data patterns from Gestrin et al. (2025), La Malfa et al. (2025).

The pattern tells a familiar story. When the domain is well-known โ€” Blocksworld, logistics, standard problems from planning competitions โ€” the LLM effectively has the PDDL in its training data and can reproduce it. When the domain is novel, accuracy drops sharply. This is the same pattern-matching vs. reasoning distinction from Post 4's Mystery Blocksworld, now appearing at the model generation level.

Three open challenges define the frontier:

  1. Implicit constraints. The RoboSort support constraint ("legs support beam") is stated explicitly. But many real-world constraints are implicit: "the robot can't carry two items" implies a gripper-empty predicate and a precondition on pick. Extracting these from natural language requires world knowledge, not just text parsing.
  2. Compositional generalization. Can a system that has seen Blocksworld and logistics separately solve a problem that combines block-stacking and logistics? Current systems struggle because PDDL generation is treated as pattern matching, not compositional reasoning.
  3. The orchestrator gap. The conductor of the multi-agent pipeline is the least reliable component. It must plan the PDDL generation process, handle failures, and decide when to ask the user for clarification vs. when to guess. This meta-planning problem remains largely unsolved.
Key Insight

Paradigm 2 works well when the domain is familiar โ€” the LLM effectively "remembers" the PDDL. For truly novel domains, the NL-to-PDDL translation requires genuine reasoning about actions, effects, and constraints. This is the hardest open problem in the field: teaching systems to formalize new domains, not just retrieve familiar ones.

Paradigm 1 + Paradigm 2: The Full Picture

Let's step back and see how all six posts connect. The series has traced a clear arc from foundations to frontier:

Paradigm 1 โ€” PDDL is Given
  • Post 2: Formalize the problem in PDDL
  • Post 3: Solve with heuristic search
  • Post 4: LLMs alone fail (~12โ€“30%)
  • Post 5: LLMs + planners succeed (~82%)
Status: Strong results. Requires PDDL expertise.
Paradigm 2 โ€” Only Natural Language
  • Post 6: NL2Plan, Agentic PDDL
  • 100% on standard domains
  • ~35% on novel domains
  • Orchestrator is the bottleneck
Status: Promising but fragile. Orchestration is unsolved.

The two paradigms complement each other. Paradigm 1 is mature and reliable where PDDL exists. Paradigm 2 extends the reach to domains described only in English โ€” but the orchestrator bottleneck limits its reliability on novel problems.

The RoboSort warehouse has been our constant through all six posts. We watched it crash under a naive LLM plan (Post 1). We formalized it in PDDL (Post 2). We watched A* find the optimal path through its warehouse floor (Post 3). We watched GPT-4 fail and Mystery Blocksworld expose why (Post 4). We watched LLM-Modulo fix the plan in two iterations (Post 5). And now we've seen NL2Plan generate the PDDL from English (Post 6).

One question remains: can we build systems that learn to orchestrate better โ€” that adapt their coordination strategies, handle novel domains more reliably, and close the gap between familiar and unfamiliar? That's the subject of the final post.

What's Ahead

This post showed the promise and limits of Paradigm 2. NL2Plan and Agentic PDDL demonstrate that English-to-plan is possible โ€” achieving 100% on standard domains. But the orchestrator bottleneck means novel domains and ambiguous descriptions remain unreliable.

The final post asks the most forward-looking question in the series: can we build agentic AI systems for planning โ€” systems that learn from their own failures, adapt their orchestration strategies, and handle novel domains without human intervention? The research frontier is moving fast, and the answers are starting to take shape.

References

  1. Gestrin, M., Zuo, N., Stein, M., & Kambhampati, S. (2025). NL2Plan: Robust LLM-Driven Planning from Minimal Text. AAAI 2025.
  2. La Malfa, E., Mavroudis, E., & Wooldridge, M. (2025). Agentic PDDL: Conversational Generation of Planning Domains. ICAPS 2025.
  3. Katz, M., Kokel, H., & Muise, C. (2025). Planning in the Era of Language Models. NeurIPS 2025 Tutorial.
  4. Kambhampati, S., Valmeekam, V., & Stechly, K. (2024). LLM-Modulo: An LLM-Based Framework for Planning with Formal Verification. AAAI 2024.
  5. Liu, B., Jiang, Y., Zhang, X., et al. (2023). LLM+P: Empowering Large Language Models with Optimal Planning Proficiency. arXiv preprint.
  6. Xie, Z., Zhang, S., Zhu, Y., et al. (2024). TravelPlanner: A Benchmark for Real-World Planning with Language Agents. ICML 2024.
  7. Valmeekam, V., Marquez, M., & Kambhampati, S. (2023). PlanBench: An Extensible Benchmark for Evaluating Large Language Models on Planning. NeurIPS 2023.