{
 "schemaNote": "BSV builder opportunity feed v0.1. Real signals only; no revenue projections.",
 "generatedAt": "2026-10-03T23:47:33Z",
 "signals": {
  "publicRequests": {
   "source": "https://botshelfvampire.com/.netlify/functions/demand-request?op=public",
   "note": "Live: open public requests and their stated budgets, read from the request store."
  },
  "opportunitySignals": {
   "source": "https://botshelfvampire.com/.netlify/functions/demand-request?op=signals",
   "schema": "https://botshelfvampire.com/schemas/opportunity-signal-v0.1.json",
   "note": "Live: REQUEST / FULFILLED_REQUEST signals aggregated from approved public requests. Other signal types are not produced because they are not collected."
  },
  "noResultSearches": {
   "collected": false,
   "note": "Not logged on this site."
  },
  "pageViews": {
   "collected": false,
   "note": "Not logged on this site."
  },
  "generatorGaps": {
   "source": "trader-toolkit/generator/render.mjs and trader-toolkit/recipes in the BSV repository",
   "note": "Block types the BSV generator does not render yet, counted from its own TODO lines at build time. Facts about the generator, not demand.",
   "targets": 22,
   "recipes": 14,
   "recipesWithGaps": 7,
   "gaps": [
    {
     "blockType": "visual.table",
     "recipes": [
      "mtf-confirmation-panel",
      "opening-range-dashboard",
      "session-statistics-panel",
      "volatility-regime-map"
     ],
     "recipeCount": 4,
     "targetsWithoutIt": 16,
     "targetsWithIt": 6,
     "targetsRenderingIt": [
      "jforex",
      "amibroker",
      "thinkscript",
      "backtrader",
      "backtesting-py",
      "nautilus"
     ]
    },
    {
     "blockType": "structure.pivot",
     "recipes": [
      "divergence-scanner",
      "liquidity-sweep-alert"
     ],
     "recipeCount": 2,
     "targetsWithoutIt": 18,
     "targetsWithIt": 4,
     "targetsRenderingIt": [
      "tradovate",
      "backtrader",
      "backtesting-py",
      "nautilus"
     ]
    },
    {
     "blockType": "structure.range",
     "recipes": [
      "opening-range-dashboard",
      "session-statistics-panel"
     ],
     "recipeCount": 2,
     "targetsWithoutIt": 19,
     "targetsWithIt": 3,
     "targetsRenderingIt": [
      "backtrader",
      "backtesting-py",
      "nautilus"
     ]
    },
    {
     "blockType": "visual.zone",
     "recipes": [
      "liquidity-sweep-alert",
      "opening-range-dashboard"
     ],
     "recipeCount": 2,
     "targetsWithoutIt": 19,
     "targetsWithIt": 3,
     "targetsRenderingIt": [
      "backtrader",
      "backtesting-py",
      "nautilus"
     ]
    },
    {
     "blockType": "alert.webhook",
     "recipes": [
      "webhook-alert-router"
     ],
     "recipeCount": 1,
     "targetsWithoutIt": 19,
     "targetsWithIt": 3,
     "targetsRenderingIt": [
      "backtrader",
      "backtesting-py",
      "nautilus"
     ]
    },
    {
     "blockType": "data.higher_timeframe",
     "recipes": [
      "mtf-confirmation-panel"
     ],
     "recipeCount": 1,
     "targetsWithoutIt": 12,
     "targetsWithIt": 10,
     "targetsRenderingIt": [
      "pine-v6",
      "mql5",
      "ctrader",
      "mql4",
      "ninjatrader",
      "amibroker",
      "thinkscript",
      "backtrader",
      "backtesting-py",
      "nautilus"
     ]
    },
    {
     "blockType": "scanner.symbol_set",
     "recipes": [
      "divergence-scanner"
     ],
     "recipeCount": 1,
     "targetsWithoutIt": 22,
     "targetsWithIt": 0,
     "targetsRenderingIt": []
    },
    {
     "blockType": "signal.breakout",
     "recipes": [
      "opening-range-dashboard"
     ],
     "recipeCount": 1,
     "targetsWithoutIt": 19,
     "targetsWithIt": 3,
     "targetsRenderingIt": [
      "backtrader",
      "backtesting-py",
      "nautilus"
     ]
    },
    {
     "blockType": "signal.divergence",
     "recipes": [
      "divergence-scanner"
     ],
     "recipeCount": 1,
     "targetsWithoutIt": 18,
     "targetsWithIt": 4,
     "targetsRenderingIt": [
      "tradovate",
      "backtrader",
      "backtesting-py",
      "nautilus"
     ]
    },
    {
     "blockType": "signal.liquidity_sweep",
     "recipes": [
      "liquidity-sweep-alert"
     ],
     "recipeCount": 1,
     "targetsWithoutIt": 18,
     "targetsWithIt": 4,
     "targetsRenderingIt": [
      "tradovate",
      "backtrader",
      "backtesting-py",
      "nautilus"
     ]
    }
   ]
  },
  "catalogueGaps": {
   "source": "https://botshelfvampire.com/trading/catalog.json",
   "note": "Facts about the catalogue, not demand. Porting third-party source must follow its license.",
   "gaps": [
    {
     "id": "tradingview-only",
     "label": "TradingView (Pine) only: no MT4 or MT5 version in the catalogue",
     "label_ja": "TradingView（Pine）のみ: カタログにMT4・MT5版がない",
     "count": 34,
     "byKind": {
      "Indicator": 31,
      "Strategy": 3
     },
     "entries": [
      {
       "id": "bachini-crossover",
       "name": "Moving Average Cross",
       "kind": "Strategy",
       "license": "MIT",
       "url": "items/bachini-crossover.html"
      },
      {
       "id": "everget-arnaud-legoux-moving-average",
       "name": "Arnaud Legoux Moving Average",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-arnaud-legoux-moving-average.html"
      },
      {
       "id": "bachini-breakout-sniper",
       "name": "Breakout Sniper",
       "kind": "Strategy",
       "license": "MIT",
       "url": "items/bachini-breakout-sniper.html"
      },
      {
       "id": "bachini-price-channels",
       "name": "Price Channels",
       "kind": "Strategy",
       "license": "MIT",
       "url": "items/bachini-price-channels.html"
      },
      {
       "id": "everget-acceleration-bands",
       "name": "Acceleration Bands",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-acceleration-bands.html"
      },
      {
       "id": "everget-accelerator-oscillator",
       "name": "Accelerator Oscillator",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-accelerator-oscillator.html"
      },
      {
       "id": "everget-adaptive-laguerre-filter",
       "name": "Adaptive Laguerre Filter",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-adaptive-laguerre-filter.html"
      },
      {
       "id": "everget-adaptive-rsi-moving-average",
       "name": "Adaptive RSI Moving Average",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-adaptive-rsi-moving-average.html"
      },
      {
       "id": "everget-ahrens-moving-average",
       "name": "Ahrens Moving Average",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-ahrens-moving-average.html"
      },
      {
       "id": "everget-alpha-decreasing-exponential-moving-average",
       "name": "Alpha-Decreasing EMA",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-alpha-decreasing-exponential-moving-average.html"
      },
      {
       "id": "everget-awesome-oscillator",
       "name": "Awesome Oscillator",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-awesome-oscillator.html"
      },
      {
       "id": "everget-butterworth-filter",
       "name": "Butterworth Filter",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-butterworth-filter.html"
      },
      {
       "id": "everget-center-of-gravity-oscillator",
       "name": "Center of Gravity Oscillator",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-center-of-gravity-oscillator.html"
      },
      {
       "id": "everget-coppock-curve",
       "name": "Coppock Curve",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-coppock-curve.html"
      },
      {
       "id": "everget-derivative-oscillator",
       "name": "Derivative Oscillator",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-derivative-oscillator.html"
      },
      {
       "id": "everget-disparity-index",
       "name": "Disparity Index",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-disparity-index.html"
      },
      {
       "id": "everget-distance-weighted-moving-average",
       "name": "Distance Weighted Moving Average",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-distance-weighted-moving-average.html"
      },
      {
       "id": "everget-dorsey-inertia",
       "name": "Dorsey Inertia",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-dorsey-inertia.html"
      },
      {
       "id": "everget-double-exponential-moving-average",
       "name": "Double Exponential Moving Average",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-double-exponential-moving-average.html"
      },
      {
       "id": "everget-double-weighted-moving-average",
       "name": "Double Weighted Moving Average",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-double-weighted-moving-average.html"
      },
      {
       "id": "everget-ehlers-cyber-cycle",
       "name": "Ehlers Cyber Cycle",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-ehlers-cyber-cycle.html"
      },
      {
       "id": "everget-ehlers-super-smoother-filter",
       "name": "Ehlers Super Smoother",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-ehlers-super-smoother-filter.html"
      },
      {
       "id": "everget-elastic-volume-weighted-moving-average",
       "name": "Elastic Volume Weighted Moving Average",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-elastic-volume-weighted-moving-average.html"
      },
      {
       "id": "bachini-fear-greed",
       "name": "Fear and Greed — Price/Volume Model",
       "kind": "Indicator",
       "license": "MIT",
       "url": "items/bachini-fear-greed.html"
      },
      {
       "id": "everget-forecast-oscillator",
       "name": "Forecast Oscillator",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-forecast-oscillator.html"
      },
      {
       "id": "bachini-gaussian-regression",
       "name": "Gaussian Process Regression",
       "kind": "Indicator",
       "license": "MIT",
       "url": "items/bachini-gaussian-regression.html"
      },
      {
       "id": "everget-interquartile-range-bands",
       "name": "Interquartile Range Bands",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-interquartile-range-bands.html"
      },
      {
       "id": "everget-kirshenbaum-bands",
       "name": "Kirshenbaum Bands",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-kirshenbaum-bands.html"
      },
      {
       "id": "everget-mean-absolute-deviation-bands",
       "name": "Mean Absolute Deviation Bands",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-mean-absolute-deviation-bands.html"
      },
      {
       "id": "everget-moving-average-channel",
       "name": "Moving Average Channel",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-moving-average-channel.html"
      },
      {
       "id": "everget-range-candles",
       "name": "Range Candles — OHLC Renderer",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-range-candles.html"
      },
      {
       "id": "bachini-sma",
       "name": "Simple Moving Average",
       "kind": "Indicator",
       "license": "MIT",
       "url": "items/bachini-sma.html"
      },
      {
       "id": "everget-stoller-average-range-channels",
       "name": "STARC Bands — Original Source",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-stoller-average-range-channels.html"
      },
      {
       "id": "everget-vortex-bands",
       "name": "Vortex Bands",
       "kind": "Indicator",
       "license": "GPL-3.0-only",
       "url": "items/everget-vortex-bands.html"
      }
     ]
    },
    {
     "id": "mt-no-pine",
     "label": "MT4/MT5 only: no TradingView (Pine) version in the catalogue",
     "label_ja": "MT4・MT5のみ: カタログにTradingView（Pine）版がない",
     "count": 41,
     "byKind": {
      "Expert Advisor": 10,
      "Indicator": 21,
      "Script": 1,
      "Template": 1,
      "Trade manager": 8
     },
     "entries": [
      {
       "id": "earnforex-positionsizer",
       "name": "Position Sizer",
       "kind": "Trade manager",
       "license": "Apache-2.0",
       "url": "items/earnforex-positionsizer.html"
      },
      {
       "id": "earnforex-marketprofile",
       "name": "Market Profile",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-marketprofile.html"
      },
      {
       "id": "earnforex-atr-trailing-stop",
       "name": "ATR Trailing Stop",
       "kind": "Trade manager",
       "license": "Apache-2.0",
       "url": "items/earnforex-atr-trailing-stop.html"
      },
      {
       "id": "earnforex-spike-trader",
       "name": "Spike Trader",
       "kind": "Expert Advisor",
       "license": "Apache-2.0",
       "url": "items/earnforex-spike-trader.html"
      },
      {
       "id": "earnforex-account-protector",
       "name": "Account Protector",
       "kind": "Trade manager",
       "license": "Apache-2.0",
       "url": "items/earnforex-account-protector.html"
      },
      {
       "id": "earnforex-adjustable-ma",
       "name": "Adjustable MA",
       "kind": "Expert Advisor",
       "license": "Apache-2.0",
       "url": "items/earnforex-adjustable-ma.html"
      },
      {
       "id": "earnforex-amazing",
       "name": "Amazing",
       "kind": "Expert Advisor",
       "license": "Apache-2.0",
       "url": "items/earnforex-amazing.html"
      },
      {
       "id": "earnforex-binario",
       "name": "Binario",
       "kind": "Expert Advisor",
       "license": "Apache-2.0",
       "url": "items/earnforex-binario.html"
      },
      {
       "id": "earnforex-bollinger-squeeze-advanced",
       "name": "Bollinger Squeeze Advanced",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-bollinger-squeeze-advanced.html"
      },
      {
       "id": "earnforex-box-breakout-alert",
       "name": "Box Breakout Alert",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-box-breakout-alert.html"
      },
      {
       "id": "earnforex-breakeven-line",
       "name": "Breakeven Line",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-breakeven-line.html"
      },
      {
       "id": "earnforex-candle-timer-and-spread-indicator",
       "name": "Candle Timer & Spread",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-candle-timer-and-spread-indicator.html"
      },
      {
       "id": "earnforex-candle-wicks-length-display",
       "name": "Candle Wicks Length Display",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-candle-wicks-length-display.html"
      },
      {
       "id": "earnforex-chart-pattern-helper",
       "name": "Chart Pattern Helper",
       "kind": "Expert Advisor",
       "license": "Apache-2.0",
       "url": "items/earnforex-chart-pattern-helper.html"
      },
      {
       "id": "earnforex-close-all-orders",
       "name": "Close All Orders / Positions",
       "kind": "Script",
       "license": "Apache-2.0",
       "url": "items/earnforex-close-all-orders.html"
      },
      {
       "id": "earnforex-cumulative-volume-delta",
       "name": "Cumulative Volume Delta",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-cumulative-volume-delta.html"
      },
      {
       "id": "earnforex-currency-strength-lines",
       "name": "Currency Strength Lines",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-currency-strength-lines.html"
      },
      {
       "id": "earnforex-donchian-ultimate",
       "name": "Donchian Ultimate",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-donchian-ultimate.html"
      },
      {
       "id": "earnforex-fractals-trailing-stop",
       "name": "Fractals Trailing Stop",
       "kind": "Trade manager",
       "license": "Apache-2.0",
       "url": "items/earnforex-fractals-trailing-stop.html"
      },
      {
       "id": "earnforex-heiken-ashi-naive",
       "name": "Heiken Ashi Naive",
       "kind": "Expert Advisor",
       "license": "Apache-2.0",
       "url": "items/earnforex-heiken-ashi-naive.html"
      },
      {
       "id": "earnforex-moving-average-crossover-alert",
       "name": "MA Crossover Alert",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-moving-average-crossover-alert.html"
      },
      {
       "id": "earnforex-ma-trailing-stop",
       "name": "MA Trailing Stop",
       "kind": "Trade manager",
       "license": "Apache-2.0",
       "url": "items/earnforex-ma-trailing-stop.html"
      },
      {
       "id": "earnforex-mt5-expert-advisor-template",
       "name": "MT5 Expert Advisor Template",
       "kind": "Template",
       "license": "Apache-2.0",
       "url": "items/earnforex-mt5-expert-advisor-template.html"
      },
      {
       "id": "earnforex-news-trader",
       "name": "News Trader",
       "kind": "Expert Advisor",
       "license": "Apache-2.0",
       "url": "items/earnforex-news-trader.html"
      },
      {
       "id": "earnforex-persistentanti",
       "name": "PersistentAnti",
       "kind": "Expert Advisor",
       "license": "Apache-2.0",
       "url": "items/earnforex-persistentanti.html"
      },
      {
       "id": "earnforex-pinbar-detector",
       "name": "Pinbar Detector",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-pinbar-detector.html"
      },
      {
       "id": "earnforex-psar-trailing-stop",
       "name": "PSAR Trailing Stop",
       "kind": "Trade manager",
       "license": "Apache-2.0",
       "url": "items/earnforex-psar-trailing-stop.html"
      },
      {
       "id": "earnforex-qqe",
       "name": "QQE",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-qqe.html"
      },
      {
       "id": "earnforex-riskcalculator",
       "name": "Risk Calculator",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-riskcalculator.html"
      },
      {
       "id": "earnforex-roundlevels",
       "name": "Round Levels",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-roundlevels.html"
      },
      {
       "id": "earnforex-rsi-ea",
       "name": "RSI EA",
       "kind": "Expert Advisor",
       "license": "Apache-2.0",
       "url": "items/earnforex-rsi-ea.html"
      },
      {
       "id": "earnforex-rsi-with-alert",
       "name": "RSI with Alert",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-rsi-with-alert.html"
      },
      {
       "id": "earnforex-supertrend-multi-timeframe",
       "name": "Supertrend Multi-Timeframe",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-supertrend-multi-timeframe.html"
      },
      {
       "id": "earnforex-supertrend-trailing-stop",
       "name": "Supertrend Trailing Stop",
       "kind": "Trade manager",
       "license": "Apache-2.0",
       "url": "items/earnforex-supertrend-trailing-stop.html"
      },
      {
       "id": "earnforex-support-and-resistance",
       "name": "Support & Resistance",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-support-and-resistance.html"
      },
      {
       "id": "earnforex-timed-order",
       "name": "Timed Order",
       "kind": "Expert Advisor",
       "license": "Apache-2.0",
       "url": "items/earnforex-timed-order.html"
      },
      {
       "id": "earnforex-traders-dynamic-index",
       "name": "Traders Dynamic Index",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-traders-dynamic-index.html"
      },
      {
       "id": "earnforex-trading-session-time",
       "name": "Trading Session Time",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-trading-session-time.html"
      },
      {
       "id": "earnforex-trailing-stop-on-profit",
       "name": "Trailing Stop on Profit",
       "kind": "Trade manager",
       "license": "Apache-2.0",
       "url": "items/earnforex-trailing-stop-on-profit.html"
      },
      {
       "id": "earnforex-volume-profile",
       "name": "Volume Profile",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-volume-profile.html"
      },
      {
       "id": "earnforex-wrb-hidden-gap",
       "name": "WRB Hidden Gap",
       "kind": "Indicator",
       "license": "Apache-2.0",
       "url": "items/earnforex-wrb-hidden-gap.html"
      }
     ]
    },
    {
     "id": "mt5-no-mt4",
     "label": "MT5 only: no MT4 version in the catalogue",
     "label_ja": "MT5のみ: カタログにMT4版がない",
     "count": 2,
     "byKind": {
      "Expert Advisor": 1,
      "Template": 1
     },
     "entries": [
      {
       "id": "earnforex-mt5-expert-advisor-template",
       "name": "MT5 Expert Advisor Template",
       "kind": "Template",
       "license": "Apache-2.0",
       "url": "items/earnforex-mt5-expert-advisor-template.html"
      },
      {
       "id": "earnforex-rsi-ea",
       "name": "RSI EA",
       "kind": "Expert Advisor",
       "license": "Apache-2.0",
       "url": "items/earnforex-rsi-ea.html"
      }
     ]
    }
   ]
  }
 }
}
