Produce plan.json. It simultaneously serves as scoping, report form constraints, and an execution map, used to guide sub_reports/*.md and the final report.md generation; it is not a preset of research conclusions.
Behavioral boundaries
Do:
- From
request.md, identify the research objectives, boundaries, audience, purpose, time/geography, and assumptions. - When needed, first do report format discovery, then design an evidence-based report form.
- Design a lightweight report form: final draft chapters, structural basis, required tables/figures/comparison items, and writing constraints.
- Break key questions into executable research dimensions.
- Make each dimension independently deliverable as a sub-report.
- Clearly specify what each dimension must answer, what methods to use, and what materials to produce.
- Specify a search strategy and sufficiency criteria for each dimension.
- Lay out a reasonable execution order and real dependencies.
Don't:
- Do not write research conclusions.
- Do not directly copy final draft chapters as research dimensions.
- Do not create a separate
briefing.md、blueprint.jsonorsynthesis.md。 - Do not do a literature review or factual elaboration.
- Do not create unnecessary parallel/dependency complexity.
Input
{report_dir}/request.md
Planning process
- Lock the objective: from
request.md, extract the judgment the final report must serve. - Define the scope: clearly state the object, time, geography, audience/purpose, exclusions, and execution assumptions.
- Determine whether format discovery is needed: if the user has already clearly given the report structure, or the report type is very standard and the constraints are obvious, proceed directly to the next step; otherwise, first do a lightweight format discovery.
- Discover the report format: when necessary, read
sn-report-format-discovery, identify the report type, credible structural sources, required chapters, mandatory elements, and style constraints, then compress them intoplan.json.report_shape。 - Set the report form: provide final draft chapter suggestions, structural basis, required elements, suitable tables/figures, and writing constraints.
- Extract questions: divide key questions into basic facts, mechanisms/causes, comparisons, impacts, risks, trends, or recommendation-type questions.
- Design dimensions: merge or split dimensions according to the criteria of "can be researched independently, can answer questions, and can contribute to the final draft."
- Define tasks: for each dimension, clearly write
key_questions、method、search_strategy、expected_outputanddepends_on。 - Define search sufficiency: state which source types need to be covered, at least how many rounds of retrieval, and which key questions must be cross-confirmed.
- Order execution: first do definition, fact, background, and scope/caliber dimensions, then do comparison, explanation, impact, and judgment dimensions.
- Write completion criteria: clearly specify under what conditions one can move from dimension-by-dimension research to final draft writing.
Report format discovery
The planning stage does not require separately studying the format every time, but in the following situations a format discovery should be proactively done:
- The user only said "do a research report" and did not give a chapter structure.
- The report type strongly depends on domain conventions, such as policy, legal, regulatory, academic/medical review, due diligence, technology selection.
- The target reader or use scenario significantly affects the structure, such as external reporting, investment decision support, internal selection, regulatory communication.
- You are not sure whether the final draft should prioritize conclusions, timelines, comparison matrices, risk lists, or methodology descriptions.
It can be directly inferred from request.md genre, domain, audience, region can be inferred from request.md; if this information is insufficient to robustly determine the structure, then read sn-report-format-discovery. genre、domain、audience、region; if this information is insufficient to robustly determine the structure, then read sn-report-format-discovery。
When discovering the format, only 4 things need to be answered:
- Which category of report this report is closest to.
- Which sections this type of report usually must have.
- Which non-section elements must appear in the final draft, such as comparison tables, timelines, risk matrices, methodology descriptions.
- What the basis is for these structural judgments; if no highly credible basis is found, what the fallback logic is.
The results of format discovery should be compressed into plan.json.report_shape, used to constrain subsequent dimension design; do not write a separate format file unless the caller explicitly requires it.
Dimension design guidelines
A good dimension should simultaneously satisfy:
- Can independently produce
sub_reports/{id}.md。 - Has 2-5 specific
key_questions。 - Clear boundaries with other dimensions, overlap is explainable.
- Has a clear contribution to report.md.
report.mdHas a clear contribution. - Has clear search entry points and stopping conditions.
- Does not presuppose conclusions, only defines what is to be found out.
Ordinary research should be controlled at 3-5 dimensions; complex research should have at most 8 dimensions. When there are too many dimensions, prioritize merging similar issues.
Output
Write to {report_dir}/plan.json : {report_dir}/plan.json:
{
"research_goal": "一句话目标",
"scope": {
"objects": ["研究对象"],
"time_range": "时间范围",
"region": "地域范围",
"audience_or_use": "目标读者或用途",
"exclusions": ["明确不做什么"],
"assumptions": ["执行假设"]
},
"report_shape": {
"format_basis": [
{
"type": "standard_guideline | official_template | real_exemplar | domain_convention | fallback",
"name": "结构依据名称",
"credibility_reason": "为什么可信",
"what_extracted": "从中抽取了哪些结构约束"
}
],
"sections": ["终稿建议章节"],
"mandatory_elements": ["必须产出的表格、图、清单或比较项"],
"style": "写作口径和语气约束"
},
"completion_criteria": ["完成标准"],
"change_notes": [],
"dimensions": [
{
"id": "d1",
"name": "维度名称",
"description": "研究范围和边界",
"key_questions": ["必须回答的问题"],
"method": "检索、比较、案例分析、数据梳理、时序还原等",
"search_strategy": {
"source_types": ["应覆盖的来源类型"],
"seed_queries": ["起始检索词或检索方向"],
"freshness_requirement": "是否需要最新信息及时间范围",
"sufficiency": ["判断搜索足够的条件"]
},
"expected_output": "该维度子报告应提供给终稿写作的材料",
"depends_on": [],
"status": "pending"
}
],
"execution_order": ["d1", "d2"]
}
Field requirements
research_goal: One sentence explaining what judgment the entire research should serve.scope: Must cover object, time, region, audience/use, exclusions, and current assumptions; explicitly state unknown items.report_shape.format_basis: Explain where the basis for the report structure comes from. Ifsn-report-format-discoverywas called, retain at least 1 basis; if not called, still state whether it is a "user-specified structure" or "general domain convention."report_shape.sections: It is a final draft structure recommendation, not a research dimension.report_shape.mandatory_elements: List the comparison tables, timelines, risk lists, indicator matrices, flowcharts, etc. that the final draft must support.report_shape.style: Explain the report tone, expressions of certainty, and how uncertainty is handled.completion_criteria: List the conditions that must be met before entering final draft writing.change_notes: Initially an empty array; during research, if dimensions or execution order are adjusted, append the reasons here, and do not write a separate log file.id: Use stable short IDs, such asd1、d2。description: Explain the research scope and what is not included.key_questions: Write as answerable questions, not as titles.method: Explain how this dimension is suitable to be researched.search_strategy.source_types: List the source types to be covered, such as official documents, regulatory announcements, academic papers, industry reports, company disclosures, product documentation, news reports, community discussions, etc.search_strategy.seed_queries: Provide 3-6 starting search directions, rather than only writing one keyword.search_strategy.freshness_requirement: Explain whether the latest information must be checked; when involving markets, policies, products, companies, prices, law, or people, the latest verification must be required.search_strategy.sufficiency: State the stopping conditions clearly, such as "each key question has at least material support," "core facts come from two independent sources," "stop when there is no incremental new information," etc.expected_output: Explain which of the following the sub-report should contribute: facts, comparisons, frameworks, basis for judgment, risk list, or scenario analysis.depends_on: Write only real dependencies; if there are no dependencies, use an empty array.execution_order: Must cover all dimension IDs, and dependencies must appear before the items that depend on them.
Examples of completion criteria
- All
key_questionsare covered by at least one dimension. report_shapehave a clear structural basis, rather than listing chapters off the top of one's head.report_shape.mandatory_elementsall have corresponding dimensions providing material.- Each dimension can form an independent sub-report.
- Each dimension defines a search strategy and stopping conditions.
- Key uncertainties are handled by dedicated dimensions, or clearly marked in the relevant dimensions.
Common failures
- Treating report chapters as research dimensions.
- Each dimension has only a title, with no answerable questions.
- Extensive overlap between dimensions.
- No search entry points are defined for the dimensions, leading to shallow searching during execution.
- The execution order ignores dependency relationships.
- The report structure has no basis, and chapters are forced based only on experience.
- Ignoring elements essential to the final draft.
- Writing conclusions in advance in the plan.