Graph Examples¶
Complete examples of research graphs for common use cases.
Basic Research¶
Simple web research with synthesis.
name: basic_research
description: Basic web research with AI synthesis
inputs:
- name: query
type: string
required: true
- name: max_urls
type: int
default: 30
stages:
- name: discover
sequential:
- op: search
params:
query: "{{ query }}"
max_results: "{{ max_urls }}"
output: urls
- name: fetch
parallel_foreach:
input: urls
concurrency: 10
operations:
- op: fetch
output: page
- name: process
sequential:
- op: to_text_batch
input: pages
output: texts
- op: chunk
input: texts
params:
size: 500
output: chunks
- name: filter
sequential:
- op: semantic_filter
input: chunks
params:
query: "{{ query }}"
threshold: 0.5
output: relevant
- name: synthesize
sequential:
- op: integrate
input: relevant
params:
query: "{{ query }}"
output: synthesis
outputs:
- urls
- synthesis
Deep Dive with Entities¶
Research with entity extraction and network analysis.
name: entity_research
description: Deep research with entity extraction
inputs:
- name: query
type: string
required: true
- name: entity_focus
type: string
default: "person"
stages:
- name: discover
sequential:
- op: search
params:
query: "{{ query }}"
max_results: 50
output: urls
- name: acquire
parallel_foreach:
input: urls
concurrency: 15
operations:
- op: fetch
params:
geo: "us"
output: page
- name: transform
sequential:
- op: to_text_batch
input: pages
output: texts
- op: merge
input: texts
output: combined_text
- name: extract
parallel:
- op: entities
input: combined_text
params:
types: [person, organization, location]
output: entities
- op: topics
input: combined_text
output: topics
- name: filter_entities
sequential:
- op: filter_entities
input: entities
params:
types: ["{{ entity_focus }}"]
min_confidence: 0.7
output: focused_entities
- name: synthesize
sequential:
- op: integrate
input: texts
params:
query: "{{ query }}"
output: synthesis
- op: to_report
input:
synthesis: synthesis
entities: focused_entities
topics: topics
params:
template: entity_report
output: report
outputs:
- entities
- topics
- synthesis
- report
Historical Analysis¶
Track changes over time using archives.
name: temporal_analysis
description: Historical content analysis
inputs:
- name: url
type: string
required: true
- name: start_date
type: string
default: "2020-01-01"
- name: end_date
type: string
default: "2024-01-01"
stages:
- name: discover
sequential:
- op: archive_discover
params:
url: "{{ url }}"
from_date: "{{ start_date }}"
to_date: "{{ end_date }}"
output: snapshots
- name: fetch
parallel_foreach:
input: snapshots
concurrency: 5
operations:
- op: fetch_archive
params:
date: "{{ item.timestamp }}"
output: content
- name: analyze
parallel_foreach:
input: contents
operations:
- op: to_text
output: text
- op: entities
input: text
output: entities
- name: compare
sequential:
- op: diff
input: [texts[0], texts[-1]]
output: changes
- op: integrate
input: texts
params:
query: "How has this content evolved?"
output: evolution_summary
outputs:
- snapshots
- changes
- evolution_summary
Multi-Source Comparison¶
Compare coverage across sources.
name: source_comparison
description: Compare how sources cover a topic
inputs:
- name: topic
type: string
required: true
- name: sources
type: url[]
required: true
stages:
- name: fetch
parallel_foreach:
input: sources
operations:
- op: fetch
params:
url: "{{ item }}"
output: page
- op: to_text
input: page
output: text
- name: analyze
parallel_foreach:
input: texts
operations:
- op: entities
output: entities
- op: sentiment
output: sentiment
- op: summarize
output: summary
- name: compare
sequential:
- op: compare
input: texts
params:
aspects: ["coverage", "tone", "facts", "perspective"]
output: comparison
outputs:
- summaries
- sentiments
- comparison
Dark Web Research¶
Research using Tor network.
name: onion_research
description: Dark web content research
inputs:
- name: onion_urls
type: url[]
required: true
stages:
- name: fetch
parallel_foreach:
input: onion_urls
concurrency: 3
operations:
- op: tor_fetch
params:
url: "{{ item }}"
mode: "sticky"
output: page
- name: screenshot
parallel_foreach:
input: onion_urls
concurrency: 2
operations:
- op: tor_screenshot
params:
url: "{{ item }}"
timeout: 90000
output: image
- name: process
sequential:
- op: to_text_batch
input: pages
output: texts
- op: entities
input: texts
params:
types: [person, organization, product]
output: entities
- name: analyze
sequential:
- op: integrate
input: texts
params:
query: "What services or products are offered?"
output: analysis
outputs:
- texts
- entities
- images
- analysis
Iterative Crawling¶
Crawl with link following.
name: iterative_crawl
description: Crawl with link discovery
inputs:
- name: seed_url
type: string
required: true
- name: max_depth
type: int
default: 3
stages:
- name: crawl
loop:
condition: "state.depth < params.max_depth AND NOT is_empty(state.pending)"
max_iterations: 100
state_init:
depth: 0
pending: ["{{ seed_url }}"]
visited: []
all_content: []
operations:
- op: fetch_batch
input: state.pending
output: pages
- op: to_text_batch
input: pages
output: texts
- op: extract_links
input: pages
output: links
- op: filter_urls
input: links
params:
exclude: state.visited
same_domain: true
output: new_links
state_update:
depth: "state.depth + 1"
visited: "state.visited + state.pending"
pending: "new_links[:50]"
all_content: "state.all_content + texts"
- name: synthesize
sequential:
- op: chunk
input: state.all_content
output: chunks
- op: integrate
input: chunks
params:
query: "Summarize all content found"
output: synthesis
outputs:
- state.visited
- synthesis
Video Research¶
Research from YouTube content.
name: video_research
description: Extract insights from video transcripts
inputs:
- name: query
type: string
required: true
- name: max_videos
type: int
default: 10
stages:
- name: discover
sequential:
- op: youtube_search
params:
query: "{{ query }}"
max_results: "{{ max_videos }}"
output: video_urls
- name: transcribe
parallel_foreach:
input: video_urls
operations:
- op: fetch_transcript
output: transcript
- name: process
sequential:
- op: merge
input: transcripts
output: combined
- op: chunk
input: combined
output: chunks
- name: analyze
parallel:
- op: entities
input: combined
params:
types: [person, topic, quote]
output: entities
- op: topics
input: combined
output: topics
- name: synthesize
sequential:
- op: integrate
input: chunks
params:
query: "{{ query }}"
output: synthesis
outputs:
- video_urls
- entities
- topics
- synthesis
Combined VPN + Tor¶
Geographic and anonymous research.
name: comprehensive_intel
description: Combined VPN and Tor research
inputs:
- name: clearnet_url
type: string
required: true
- name: onion_url
type: string
required: true
- name: regions
type: string[]
default: ["us:ca", "uk", "de"]
stages:
- name: clearnet_regional
parallel_foreach:
input: regions
operations:
- op: fetch
params:
url: "{{ clearnet_url }}"
geo: "{{ item }}"
output: page
- name: darkweb
parallel:
- op: tor_fetch
params:
url: "{{ onion_url }}"
output: onion_page
- op: tor_screenshot
params:
url: "{{ onion_url }}"
output: onion_screenshot
- name: compare_regional
sequential:
- op: to_text_batch
input: regional_pages
output: regional_texts
- op: compare
input: regional_texts
params:
aspects: ["content", "pricing", "availability"]
output: regional_comparison
- name: synthesize
sequential:
- op: to_text
input: onion_page
output: onion_text
- op: integrate
input: [regional_texts, onion_text]
params:
query: "Compare clearnet and darkweb presence"
output: synthesis
outputs:
- regional_comparison
- onion_screenshot
- synthesis