Inspect, copy, and download a complete working artifact generated by Slashman AI Workflow Builder. Below is the resolved Grill-Me specification, the static pre-flight DAG verification table, and the complete JSON workflow blueprint ready to run or import.
[Trigger: Topic Brief]
│
▼
[Node 1: researcher] ──(sources_json: >=5 verified URLs)──► [Node 2: outliner]
│ │
│ (outline_md: 6 H2 sections)
│ ▼
└──────────────(ground_truth_notes)─────────────► [Node 3: technical_writer]
│
(draft_md + code + table)
▼
[Node 4: fact_validator]
│
(PASS: 0 unsupported claims)
▼
[Node 5: cms_packager + Gate]
| Pre-Flight Check | Status | What the Validator Verified Before Execution |
|---|---|---|
| Cycle Detection (DAG) | PASS | Topological sort `[researcher, outliner, technical_writer, fact_validator, cms_packager]` has 0 cycles. |
| Reachability & Islands | PASS | All 5 nodes reachable from trigger; 0 orphan outputs. |
| Schema Contract Match | PASS | Upstream `sources_json` array schema matches `fact_validator` input contract. |
| Tool Boundary Allow-List | PASS | Only `researcher` has `web_fetch`; `technical_writer` has 0 network tools. |
slashman-workflow-builder-sample.json
{
"$schema": "https://slashmantools.us/schemas/workflow-v1.json",
"workflow_id": "research-draft-edit-publish-sample",
"version": "1.2.0",
"name": "Verified Technical Content & Research Pipeline",
"grill_me_spec": {
"goal": "Produce a fact-checked 1,500-word technical guide with runnable code and zero unsupported claims.",
"inputs": ["topic", "target_query", "canonical_internal_links"],
"outputs": ["hugo_markdown_bundle", "verification_report_json"],
"constraints": ["No external network calls after researcher step", "Max cost $0.18 per run"],
"success_criteria": ["All numeric claims traced to researcher URLs", "Title <= 60 chars", "Meta <= 155 chars"],
"edge_cases": ["If < 3 primary sources found, abort before writer step and alert human"]
},
"nodes": [
{
"id": "researcher",
"agent_model": "claude-opus-or-local-qwen-72b",
"allowed_tools": ["web_search", "fetch_url"],
"input_contract": { "topic": "string", "target_query": "string" },
"output_contract": {
"sources": "array[{url: string, title: string, key_metrics: array[string]}]"
},
"pre_flight_rule": "len(sources) >= 5"
},
{
"id": "outliner",
"depends_on": ["researcher"],
"agent_model": "local-qwen-32b-instruct",
"allowed_tools": [],
"input_contract": { "sources": "from:researcher.sources", "target_query": "string" },
"output_contract": { "h1": "string", "h2_sections": "array[string]", "table_spec": "string" },
"pre_flight_rule": "5 <= len(h2_sections) <= 8"
},
{
"id": "technical_writer",
"depends_on": ["outliner", "researcher"],
"agent_model": "claude-sonnet-or-local-qwen-72b",
"allowed_tools": [],
"input_contract": { "outline": "from:outliner", "sources": "from:researcher.sources" },
"output_contract": { "draft_markdown": "string", "word_count": "integer" },
"pre_flight_rule": "word_count >= 1400"
},
{
"id": "fact_validator",
"depends_on": ["technical_writer", "researcher"],
"agent_model": "local-qwen-32b-instruct",
"allowed_tools": [],
"input_contract": { "draft_markdown": "from:technical_writer.draft_markdown", "sources": "from:researcher.sources" },
"output_contract": { "verified_markdown": "string", "unsupported_claims": "array[string]", "passed": "boolean" },
"pre_flight_rule": "passed == true and len(unsupported_claims) == 0"
},
{
"id": "cms_packager",
"depends_on": ["fact_validator"],
"agent_model": "local-qwen-7b-instruct",
"allowed_tools": ["write_draft_bundle"],
"input_contract": { "verified_markdown": "from:fact_validator.verified_markdown" },
"output_contract": { "seo_title": "string", "meta_description": "string", "faq_schema": "array[{q,a}]" },
"pre_flight_rule": "len(seo_title) <= 60 and len(meta_description) <= 155"
}
],
"human_approval_gate": {
"after_node": "cms_packager",
"channel": "pull_request_review",
"timeout_hours": 24
}
}