showcase · tier 4 · research
Deep research brief
A fast model writes the plan, an agent works the web inside hard budgets, a thinking model writes the brief.
The whole file
4 tasks · 4 waves · the plan falls out of the bindings, nothing is scheduled by hand.
t4-deep-research-brief.nika.yamlsource
nika: v1workflow: id: deep-research-brief description: "plan → budgeted research agent → thinking synthesis → brief on disk"model: ollama/qwen3.5:4b # local default · per-task overrides below pick stronger modelsvars: topic: type: string required: true description: "What to research"tasks: plan: infer: model: anthropic/claude-haiku-4-5 # planning is a fast-model job prompt: "Break '${{ vars.topic }}' into 4 sharp research queries · no overlap." schema: type: object required: [queries] properties: queries: type: array items: { type: string } investigate: with: plan_queries: ${{ tasks.plan.output.queries }} agent: system: | You are a rigorous researcher. Work the queries one by one · fetch sources · keep verbatim quotes · note what each source actually supports. Call nika:done when the plan is exhausted. prompt: "Research plan · ${{ with.plan_queries }}" tools: - "nika:fetch" # the web - "nika:write" # scratch notes - "nika:done" # the loop-completion sentinel max_turns: 25 max_tokens_total: 150000 schema: type: object required: [findings, sources] properties: findings: type: array items: { type: string } sources: type: array items: { type: string } brief: with: investigate_findings: ${{ tasks.investigate.output.findings }} investigate_sources: ${{ tasks.investigate.output.sources }} infer: prompt: | Findings · ${{ with.investigate_findings }} Sources · ${{ with.investigate_sources }} Write the executive brief · what's true · what's contested · what it means · what to do. Two pages max. thinking: enabled: true budget_tokens: 8000 save: with: brief: ${{ tasks.brief.output }} invoke: tool: "nika:write" args: path: "./research/${{ vars.topic }}.md" content: "${{ with.brief }}" create_dirs: trueoutputs: brief: ${{ tasks.brief.output }} sources: value: ${{ tasks.investigate.output.sources }} description: "Every source the agent actually used"nika inspect · engine 0.105.0 · vendored graph, never re-derived
4 declared edges · 4 waves · the plan falls out of the bindings