Builder — Node Reference
Back to Guides
This page documents every node available in the React Flow builder. Screenshots are placeholders —
add images in /static/builder-docs/screenshots/ and update the src attributes below
when ready.
Trigger Node
Type: triggerNode • Handles: source (bottom)
Defines when the workflow runs. Choose schedule or event triggers. Typical fields:
- Schedule: cron-like or interval selection
Payload schema (collapsed)
{
"type": "trigger",
"config": { "schedule": "0 9 * * 1-5" }
}
Screenshot placeholder: `/static/builder-docs/screenshots/trigger.png`
Scanner Node
Type: scannerNode • Handles: target (top), source (bottom)
Scans the market using Finviz-like filters. Use this node to produce a list of tickers that match criteria.
- Sector — select sector(s)
- Market Cap — min/max selection
- Price — price range
- Average Volume
- PE Ratio, EPS Growth, Performance
- Signal — prebuilt filters (gapper, pullback)
Payload schema (collapsed)
{
"type": "scanner",
"config": { "sector": "Technology", "price": {"min": 5, "max": 200}, "signal": "Gappers" }
}
Screenshot placeholder: `/static/builder-docs/screenshots/scanner.png`
Logic / Filter Node
Type: logicNode (Filter) • Handles: target (top), source (bottom)
Applies indicator-based logic to incoming ticker lists. Three filter types available:
Technical Indicator Filter
Traditional technical analysis indicators:
- Indicator (e.g., SMA, EMA, RSI)
- Period — lookback period for calculation
- Condition (greater/less/equals)
- Value — threshold value
VCP Score Filter
Volatility Contraction Pattern analysis for breakout setups:
- Minimum VCP Score — 0-7 scale (7 = perfect, 6 = dream, 5 = elite)
- Publish VCP Score — pass score data to downstream nodes
VCP Score Guide:
- 7 = Perfect Monster Setup
- 6 = Minervini Dream Setup
- 5 = Elite VCP Pattern
- 4+ = Consider Trading
- <4 = Not Ready
Inside Day Pattern Filter
Identifies stocks showing inside day patterns (consolidation setups):
- Ticker Symbol — single ticker to check
What is an Inside Day?
An inside day occurs when today's trading range is completely contained within yesterday's range:
- Today's High < Yesterday's High
- Today's Low > Yesterday's Low
This pattern indicates consolidation and often precedes breakout moves. The filter returns detailed pattern data including high/low values for both days.
Payload schema (collapsed)
{
"type": "filter",
"filterType": "technical|vcp|insideDay",
"config": {
"indicator": "EMA",
"period": 20,
"condition": ">",
"value": 50
}
}
{
"type": "filter",
"filterType": "vcp",
"config": { "min_score": 6, "publish_score": true }
}
{
"type": "filter",
"filterType": "insideDay",
"config": { "ticker": "COIN" }
}
Screenshot placeholder: `/static/builder-docs/screenshots/filter.png`
Condition Node
Type: conditionNode • Handles: target (top), source (bottom)
Evaluate arbitrary conditions, including values from upstream Market Sentiment nodes. Common fields:
- Metric — choose a metric or reference upstream node
- Evaluator — >, <, =
- Threshold
- Action — go/stop routing
Payload schema (collapsed)
{
"type": "condition",
"config": { "metric": "advancing_pct", "op": ">", "threshold": 60 }
}
Screenshot placeholder: `/static/builder-docs/screenshots/condition.png`
Market Sentiment Node
Type: marketSentimentNode • Handles: target (top), source (bottom)
Collects breadth and market-level metrics used by Condition nodes or downstream logic.
- Multi-select breadth metrics: advancing_pct, declining_pct, new_high_pct, etc.
Payload schema (collapsed)
{
"type": "market_sentiment",
"config": { "metrics": ["advancing_pct","new_high_pct"] }
}
Screenshot placeholder: `/static/builder-docs/screenshots/sentiment.png`
Market Breadth Node
Type: marketBreadthNode • Handles: target (top), source (bottom)
Collects advanced breadth indicators and market health metrics for trend analysis and timing decisions.
Breadth Indicators Available
- Nasdaq 5-Day MA Percentage — % of Nasdaq stocks above 5-day moving average
- Nasdaq 20-Day MA Percentage — % of Nasdaq stocks above 20-day moving average
- McClellan Oscillator — breadth momentum indicator for NYSE
- McClellan Summation Index — cumulative breadth trend indicator
Interpretation Guide
5/20 DMA Percentages:
- >80% = Overbought, potential pullback risk
- <20% = Oversold, potential bounce opportunity
- Crossing above/below 50% = Trend change signals
McClellan Oscillator:
- Positive = Bullish breadth momentum
- Negative = Bearish breadth momentum
- Extreme readings (+100/-100) = Overbought/Oversold
McClellan Summation Index:
- Above zero = Bullish breadth trend
- Below zero = Bearish breadth trend
- Direction changes = Major trend shifts
Use these metrics in Condition nodes to filter trades based on market health or to time entries/exits.
Payload schema (collapsed)
{
"type": "market_breadth",
"config": {
"indicators": ["nasdaq_5dma_pct", "nasdaq_20dma_pct", "mcclellan_oscillator"],
"update_frequency": "daily"
}
}
Screenshot placeholder: `/static/builder-docs/screenshots/breadth.png`
Import Prebuilt List Node
Type: importPrebuiltListNode • Handles: target (top), source (bottom)
Loads a curated list of tickers such as prebuilt pullbacks or gapper lists.
Payload schema (collapsed)
{
"type": "import_list",
"config": { "list_type": "20_EMA_pullback" }
}
Screenshot placeholder: `/static/builder-docs/screenshots/import_list.png`
Generate Trading Levels Node
Type: generateTradingLevelsNode • Handles: target (top), source (bottom)
Produces support/resistance/ema levels for tickers; useful for charting or alerts.
Payload schema (collapsed)
{
"type": "generate_levels",
"config": { "level_type": "support_resistance", "params": {} }
}
Screenshot placeholder: `/static/builder-docs/screenshots/levels.png`
Action Node
Type: actionNode • Handles: target (top), source (bottom)
Performs an action when a ticker passes upstream logic. Actions include alerts, publish to dashboard, or
trade orders.
- Action Type — alert or trade
- Alert fields: message, email recipients
- Trade fields: order type (market/limit), size
Payload schema (collapsed)
{
"type": "action",
"config": { "action_type": "alert", "message": "Ticker matched" }
}
Screenshot placeholder: `/static/builder-docs/screenshots/action.png`
Publish To Dashboard Node
Type: publishToDashboardNode • Handles: target (top), source (bottom)
Sends results to the dashboard as widgets. Configure title and display type.
Payload schema (collapsed)
{
"type": "publish_dashboard",
"config": { "widgetTitle": "New Matches", "displayType": "table" }
}
Screenshot placeholder: `/static/builder-docs/screenshots/publish.png`
Strategy Screen Node
Type: strategyScreenNode • Handles: target (top), source (bottom)
Runs one of 12 built-in pattern strategies and returns matching stock candidates with scores. Each strategy uses a specialised screening algorithm from the signal pipeline.
- Strategy — dropdown with 13 options:
holy_grail, turtle_breakout, vcp_patterns, san_ku,
ttm_squeeze, reversal_2b, mean_reversion, bottom_picker,
waterfall_decline, inside_day, strength_list, vix_reversal,
weinstein_stage2
Payload schema (collapsed)
{
"step": "source",
"type": "strategy_screen",
"params": { "strategy_name": "holy_grail" }
}
Screenshot placeholder: /static/builder-docs/screenshots/strategy_screen.png
Market Context Node
Type: marketContextNode • Handles: target (top), source (bottom)
Returns a comprehensive market diagnosis with no configuration required. Includes VIX levels, market breadth, ADX trend strength, McClellan Oscillator/Summation Index, and current hot sectors. Feed the output into a Condition node to gate downstream actions on market regime.
Payload schema (collapsed)
{
"step": "source",
"type": "market_context",
"params": {}
}
Screenshot placeholder: /static/builder-docs/screenshots/market_context.png
Data Source Node
Type: dataSourceNode • Handles: target (top), source (bottom)
Flexible data retrieval node with 6 source types. The configuration fields change dynamically based on the selected source.
Source Types
- ETF Rankings (
etf_rankings) — relative-strength ETF rankings. Params: limit, category (all/equity/sector/bond/commodity), direction (best/worst)
- Sub-Industries (
sub_industries) — top-performing sub-industry groups. Params: limit, sort_by (performance/volume/market_cap)
- Hot Sectors (
hot_sectors) — sector rotation heat map. No extra params.
- Twitter Recommendations (
twitter_recommendations) — social-media stock picks. Params: sentiment (bullish/bearish/all), min_confidence (0-100)
- VIX Signal (
vix_signal) — current VIX analysis and levels. No extra params.
- Inside Day Patterns (
inside_day_patterns) — stocks showing inside-day consolidation. No extra params.
Payload schema — ETF Rankings example (collapsed)
{
"step": "source",
"type": "etf_rankings",
"params": { "limit": 20, "category": "all", "direction": "best" }
}
Payload schema — Twitter Recommendations example (collapsed)
{
"step": "source",
"type": "twitter_recommendations",
"params": { "sentiment": "bullish", "min_confidence": 70 }
}
Screenshot placeholder: /static/builder-docs/screenshots/data_source.png
Watchlist Filter Node
Type: watchlistFilterNode • Handles: target (top), source (bottom)
Filters an upstream ticker list against a user-defined watchlist. Two modes control how aggressively the filter acts:
- Strength —
strict (only keep watchlist tickers) or prioritize (boost watchlist tickers by +2.0 score, keep all)
- Tickers — comma-separated list of symbols (e.g.
AAPL, NVDA, MSFT)
Payload schema (collapsed)
{
"step": "logic",
"type": "watchlist_filter",
"params": {
"strength": "prioritize",
"tickers": ["AAPL", "NVDA"]
}
}
Screenshot placeholder: /static/builder-docs/screenshots/watchlist_filter.png
Connections and Validation
The builder enforces allowed connections between node types. The complete connection rules (14 node types):
- Trigger → Scanner, Import List, Market Sentiment, Market Breadth, Strategy Screen, Market Context, Data Source
- Scanner → Filter/Logic, Action, Generate Levels, Market Sentiment, Market Breadth, Publish, Watchlist Filter
- Import List → Filter/Logic, Action, Generate Levels, Market Sentiment, Market Breadth, Publish, Watchlist Filter
- Strategy Screen → Filter/Logic, Action, Generate Levels, Condition, Publish, Watchlist Filter
- Market Context → Condition, Action, Publish
- Data Source → Condition, Filter/Logic, Action, Publish, Watchlist Filter
- Market Sentiment / Market Breadth → Filter/Logic, Action, Condition, Publish
- Generate Trading Levels → Filter/Logic, Action, Condition, Publish
- Logic / Filter → Action, Publish, Generate Levels, Watchlist Filter
- Condition → Action, Publish, Condition (chained), Scanner
- Watchlist Filter → Action, Publish, Generate Levels
- Action → Publish
Graph Validation
The backend validates workflow graphs before saving or executing. Use POST /api/workflows/validate with {"nodes": [...], "edges": [...]} to check a graph.
Validation checks include:
- Cycle detection — DFS-based check prevents infinite loops
- Disconnected nodes — every node must be reachable from the trigger
- Unknown node types — rejects unrecognised
type values
- Required fields — e.g. Scanner must have at least one filter, Filter needs indicator + condition
- Trade action rejection —
action_type: trade is blocked (broker integration pending)
- Trigger schedule — warns if trigger has no schedule configured
The validate endpoint returns {"valid": true/false, "errors": [...], "warnings": [...], "execution_steps_count": N}.
Example Workflows
VCP Breakout Scanner
Scanner → VCP Filter → Action
- Scan Technology sector stocks
- Filter for VCP score ≥ 6 (Dream setups)
- Send alerts for qualified breakouts
Market Timing Filter
Market Breadth → Condition → Scanner → Filter
- Check Nasdaq 20-day MA percentage
- Only scan if > 50% (bullish bias)
- Apply technical filters to results
Inside Day Pattern Alert
Trigger → Inside Day Filter → Action
- Run daily at market close
- Check specific watchlist tickers
- Alert when inside day patterns form
Strategy Screener Pipeline
Trigger → Strategy Screen (holy_grail) → Watchlist Filter → Publish to Dashboard
- Schedule daily pre-market scan
- Run Holy Grail strategy to find setups
- Filter results to only your watchlist tickers
- Publish matches to the dashboard
Market Context Monitor
Trigger → Market Context → Condition (VIX check) → Action (Email Alert)
- Run on a schedule (e.g. hourly during market hours)
- Fetch comprehensive market diagnosis
- Check if VIX exceeds a threshold
- Email an alert when volatility spikes
ETF Rotation Scanner
Trigger → Data Source (etf_rankings) → Publish to Dashboard
- Schedule weekly ETF ranking refresh
- Fetch top 20 relative-strength ETFs
- Publish the ranked list to your dashboard
Developer Notes
The UI node types map to execution steps in the backend compiler and engine (see
routers/workflow_router.py and lib/workflow_engine.py).
When you're ready to add the real screenshots, add PNG files to
/static/builder-docs/screenshots/ named as referenced above (e.g., scanner.png), or
update the src attributes in this file to match your filenames.