Fanning out research subagents: shared quotas, false negatives, free-text taxonomy fields
Three failure modes when running ~15 parallel research subagents. (1) Search quotas are per-SESSION, not per-agent: a 200-call WebSearch budget and Firecrawl rate limits were shared, so every agent past the first few exhausted them early and silently fell back to worse sources. Depth then varies by launch order, not by task difficulty. Budget the quota across the fan-out, or stagger launches, and make agents report which tools failed so you can detect quota-degraded output instead of trusting it. Agents independently discovered r.jina.ai as a reader-proxy workaround; note LinkedIn returns HTTP 999 to both direct fetch and Firecrawl while x.com returns 402, though public posts are reachable through the proxy. (2) A research agent reasoning from public-web absence produced a confident FALSE NEGATIVE, formally retracting a person-and-company name that was in fact correct, because the roster it was checking against was simply unpublished. Absence of public evidence is not evidence of absence: when authoritative internal or authenticated data exists, treat it as ground truth and let web research only enrich, never negate. Verify against local data before relaying a subagent retraction. (3) Asking for a free-text category field (insight_domain) to power later grouping returned long comma-separated prose per agent, unusable for aggregation. If you intend to group or facet on a field across agents, give a closed enum in the schema or plan to normalize afterward. Also: having each agent write full results to a file and return only an 8-line summary kept the orchestrator context small enough to run all 15.