Subtasks
Subtasks break a task down into specific, executable actions. Each subtask maps to a single tool call with defined inputs and expected outputs.
6 min•By Priygop Team•Updated 2026
Task to Subtasks
Task to Subtasks
# Expanding a task into subtasks
from typing import List, Dict, Any
def decompose_research_task(competitors: list) -> list:
"""
Generate subtasks for researching each competitor.
Each competitor requires 3 subtasks: search, extract, validate.
"""
subtasks = []
for i, competitor in enumerate(competitors):
base_id = f"T2.{i+1}"
subtasks.append({
"id": f"{base_id}a",
"action": "web_search",
"args": {"query": f"{competitor} pricing and features 2024"},
"description": f"Search for {competitor} product information",
"depends_on": []
})
subtasks.append({
"id": f"{base_id}b",
"action": "extract_data",
"args": {"source": f"{base_id}a.result", # uses result of previous subtask
"fields": ["price", "features", "target_market"]},
"description": f"Extract structured data for {competitor}",
"depends_on": [f"{base_id}a"]
})
subtasks.append({
"id": f"{base_id}c",
"action": "validate_data",
"args": {"data": f"{base_id}b.result",
"required_fields": ["price", "features"]},
"description": f"Validate extracted data for {competitor}",
"depends_on": [f"{base_id}b"]
})
return subtasks
competitors = ["Asana", "Trello", "Monday.com"]
subtasks = decompose_research_task(competitors)
print(f"Generated {len(subtasks)} subtasks for {len(competitors)} competitors")
for st in subtasks:
print(f" {st['id']}: {st['description']}")