Skill: Investigation Autopilot
What This Skill Does
Generates one complete investigation (25 panels + basic metadata) for a single user/project combination. This is the production pipeline — one invocation produces one investigation.
- User profile from
data/users.csv (row for this user)
- Project brief from
data/projects.csv (row for this project)
- Viewer template — selected by the user's
viewer_style field (see Template Router below)
- Cross-reference data — titles and authors of related investigations (from cross_links_to_users column)
Template Router
Select template based on the user's viewer_style column in users.csv:
| viewer_style | Template File | Users |
|---|
| blog | templates/viewer-intelligence-blog.md | 07, 13 |
| magazine | templates/viewer-magazine.md | 04, 06, 10, 14, 16, 26 |
| dossier | templates/viewer-dossier.md | 01, 03, 08, 12, 23 |
| first-person | templates/viewer-first-person.md | 02, 11, 17, 20, 22 |
| comic-text | templates/viewer-comic-text.md | 18, 19, 21, 24, 25 |
| quantitative | templates/viewer-quantitative.md | 05, 09, 15, 27, 29 |
| scenario-brief | templates/viewer-scenario-brief.md | 28 |
CRITICAL: Read the correct template for this user. Each template has different panel structures, writing rules, and quality gates. Do NOT use blog template structure for a dossier user.
Pipeline (6 Steps)
Step 1: Research & Web Search
- Read the user's voice description, expertise
- Read the project's title, description, key_entities, causal_focus
- Read the viewer template (matched by viewer_style)
- Web search for current data: The Iran war is a live event (Operation Epic Fury, Day 21 as of March 20, 2026). Search for real current data on:
- The specific topic of this investigation
- Named entities from key_entities column
- Current prices, statistics, developments
- Plan the 25 panels following the SPECIFIC template's structure (not generic)
- Plan cross-references (which other investigations to cite by author name)
Step 2: Write Panels 1-8 (Opening + Foundation)
Follow the template's specific structure. Examples:
- blog: Scene opener → question → map → system explanation → disruption
- magazine: Cover block → thesis → counterargument → historical context
- dossier: Header block → executive summary → background → key actors table
- first-person: Immersive scene → author's purpose → first encounter → system via conversation
- comic-text: Title card → big number frame → character cards → mechanism frames
- quantitative: Abstract → motivation → literature → methodology
- scenario-brief: Brief header → strategic question → landscape → key variables
Quality check after Step 2:
- Does this match the template's structure? (NOT generic blog structure)
- Is the voice matching the user's voice_description?
- Are entities named precisely (full name + acronym)?
- For current events: are numbers from 2026, not outdated?
Step 3: Write Panels 9-16 (Investigation Core)
Follow the template's core section:
- blog: Evidence → causal chains → cross-domain connections → BRICS thread (organic)
- magazine: Current crisis → analysis → pull quotes → structural pattern
- dossier: Findings with confidence ratings → data annex → entity mapping → causal chains
- first-person: Evidence as discovery → voices (direct quotes) → causal journey → cross-reference
- comic-text: Finding frames → connection web → evidence frames
- quantitative: Main finding → secondary findings → comparison → robustness checks
- scenario-brief: Scenario A → B → C → D → wild card
Quality check after Step 3:
- Are causal links explicit? (not "related to" — "caused", "enabled", "weakened")
- Are chains multi-step? (minimum 4 links in a sequence)
- Do cross-references name other authors specifically?
- Is the BRICS/de-dollarization thread organic where it fits? (NOT forced into every investigation)
Step 4: Write Panels 17-25 (Implications + Close)
Follow the template's closing structure:
- blog: Scenarios → who's affected → structural pattern → synthesis → what to watch → connections
- magazine: Short/medium/long term → who wins/loses → restate thesis → what to watch → connections
- dossier: Forecast (30/90/365 day) → recommendations by audience → sources & methodology
- first-person: What I saw vs data → structural insight → unanswered question → return to opening → last image
- comic-text: Two futures frames → winner/loser comparison → verdict → watch for → network
- quantitative: Implications by audience → limitations → extensions → conclusion → appendix
- scenario-brief: Comparison table → robust strategies → indicator dashboard → summary judgment
Quality check after Step 4:
- Does the close match the template's specific structure?
- Are scenarios specific with triggers and probabilities?
- Does the final panel create pathway to other investigations?
Generate metadata.json with basic project fields only. Knowledge extraction (entities, causal links, chains, systems, themes) happens on the GatorSquare platform after upload — the studio does NOT extract knowledge.
{
"project_id": "investigation-slug",
"title": "Full title",
"subtitle": "One-line hook or tagline",
"summary": "2-3 sentence overview of the investigation and its core finding",
"description": "Full paragraph description for SEO and detail page",
"author": "User display name",
"author_id": "user_id",
"author_role": "Professional role",
"author_location": "City",
"viewer_style": "dossier|magazine|first-person|quantitative|blog|comic-text|scenario-brief",
"investigation_date": "2026-03-XX",
"panel_count": 25,
"estimated_word_count": 6000,
"tags": ["tag1", "tag2", "...10-20 granular keywords"],
"topic_categories": ["Economics", "Security"]
}
Two classification layers:
tags — granular keywords (10-20 per investigation). Used for filtering and search.
topic_categories — broad umbrella categories (2-4 per investigation). Used for Topics filter panel.
topic_categories is NOT a fixed list. The AI agent decides what categories fit. Be consistent across investigations (if "Economics" in one, not "Economic Systems" in another). New categories appear automatically on the platform.
Step 6: Package Output
CRITICAL: investigation.json must use Studio viewer format. The viewer reads moments not panels, and text not narration. Getting this wrong = blank viewer.
database/{user_id}/{project_number}/
investigation.json <- Studio viewer data (format below)
metadata.json <- Basic project metadata
README.md <- Human-readable summary
investigation.json format (MUST match Studio viewer/index.html):
{
"project_id": "project-1",
"title": "Investigation Title",
"subtitle": "One-line hook",
"author": "Author Name",
"layout": "narrator",
"default_style": "text-only",
"characters": {"NARRATOR": {"name": "Narrator"}},
"moments": [
{
"panel_id": "panel-01",
"speaker": "NARRATOR",
"text": "Full panel text content here...",
"image": "",
"title": "Panel Title",
"word_count": 250,
"metadata": {
"stage": "foundation",
"mood": "tension",
"dimension": "economic"
}
}
],
"presentation": {
"layout": "narrator",
"show_speaker_badge": false,
"text_position": "full-width",
"transition": "cut",
"typewriter_speed": 25,
"viewer_style": "dossier"
},
"cost_summary": { "panels": 25, "total": 0 }
}
Per-moment metadata: Each moment carries lightweight metadata from the writing process:
stage — which narrative stage this panel belongs to (e.g. "foundation", "investigation", "implications")
mood — the intended emotional beat (e.g. "tension", "revelation", "authority")
dimension — the primary analytical dimension (e.g. "economic", "geopolitical", "social")
Field mapping — use the RIGHT names (wrong names = blank viewer):
moments NOT panels — viewer reads DATA.moments
text NOT narration — viewer reads moment.text
project_id NOT comic_id — must match folder name (e.g. "project-1")
panel_id: "panel-01" NOT panel_number: 1
speaker: always "NARRATOR" for text-only
image: empty string "" for text-only mode
Voice Calibration
Before writing, internalize the user's voice by reading their voice_description from users.csv. The voice must be:
- Consistent across all 25 panels
- Distinct from other users (Dr. Whitfield doesn't sound like Raj Mehta)
- Matched to the TEMPLATE — a dossier voice is different from a first-person voice even for the same user
Voice test: If you covered the author name AND the template formatting, could someone familiar with the profiles guess who wrote it?
Web Search Requirements
MANDATORY: Every investigation must use web search to ground content in real March 2026 data:
- Current oil prices, gold prices, market data
- Specific developments in the Iran conflict
- Country-specific economic data (forex reserves, trade balances)
- Recent policy decisions, sanctions updates
- Named company data (earnings, stock prices, order books)
Do NOT rely solely on training data. The Iran war is fictional but the economic data, historical context, and institutional information must be REAL and CURRENT.
Common Failure Modes (Avoid These)
- Wrong template: Using blog narrative arc for a dossier user → Read the template FIRST
- Generic opener: "In today's complex geopolitical landscape..." → Follow template's opening structure
- Vague causal language: "is related to", "impacts" → Use: caused, triggered, enabled, weakened
- Forced BRICS: Tacking on de-dollarization everywhere → Only include where organic to the topic
- Missing cross-references: Writing in isolation → Name other authors and their topics
- Flat voice: Every investigation sounds the same → Each user has specific voice + template combination
- Stale data: Using 2024 numbers for 2026 events → Web search for current data
- Template mismatch: Magazine sidebar callouts in a first-person immersive piece → Respect the template