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:

  • Strengthstrict (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):

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:

The validate endpoint returns {"valid": true/false, "errors": [...], "warnings": [...], "execution_steps_count": N}.

Example Workflows

VCP Breakout Scanner

Scanner → VCP Filter → Action

Market Timing Filter

Market Breadth → Condition → Scanner → Filter

Inside Day Pattern Alert

Trigger → Inside Day Filter → Action

Strategy Screener Pipeline

Trigger → Strategy Screen (holy_grail) → Watchlist Filter → Publish to Dashboard

Market Context Monitor

Trigger → Market Context → Condition (VIX check) → Action (Email Alert)

ETF Rotation Scanner

Trigger → Data Source (etf_rankings) → Publish to 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.

Help me understand this page