Model cohorts
2
tradeable_v2 + tradeable_mid_large
Universe sweeps
4×/day
plus a 30-min stale refresh in market hours
Paper books
5 active
4 equity + BTC Trend · public standings route, 2026-09-29
Live books
0
paper only

Five repositories

One shared PostgreSQL database, five separately deployed repositories.

RepositoryStackRoleDeploy
vibebullish-backend Go / Gin Action Generation Engine, Auto-Pilot V2 paper books, catalyst scanner, server-driven UI feeds, WebSocket hub Railway, auto on push to main
vibebullish-data-pipeline Python LightGBM training, on-demand predict_one and gated batch scoring, news and SEC forward loops, the dq-daily data-quality gate Railway, auto on push to main
vibebullish-web Next.js 16 Stock feed, ticker details, search, Auto-Pilot, Scoreboard, Lab, SDUI renderer Vercel, manual CLI deploy
vibebullish-ios SwiftUI / XcodeGen Native client that renders the same server-driven feeds App Store
vibebullish-data-pipeline-dashboard Static HTML Ops console: LLM usage and system health Vercel, auto on merge to main

This docs site also ships by manual Vercel CLI deploy. Details: Deployment.

How services connect

1 · Market data
Polygon (Massive)
Real-time stocks WebSocket (minute aggregates + trades) and REST
Finnhub
Analyst data and company news
SEC filings
8-K and Form 4 text via the Massive filings API, read by the pipeline
Nasdaq Trader halts RSS
Trading-halt events
2 · Backend scanner + feature substrate
Scanner
Runs continuously with market-aware scheduling and queues tickers for the engine
ticker_features_daily
Per-(ticker, date) ML feature cache the pipeline reads for training and inference
3 · Pipeline inference
predict_one
Per ticker, on demand. Every call passes one concurrency limit and a circuit breaker.
score_batch
Requested by the backend at 16:45 ET, only after the dq-daily gate is ready
4 · Action Generation Engine
Predict → score → map
Ensemble prediction, then MapVerdict. Display-only risk and quality scores are stamped afterwards. No LLM in this path.
Five trigger modes
scheduled_batch, scanner_signal, on_demand, catalyst_event, price_gap_refresh
action_decisions
The engine's only output table
5 · Consumers
Feeds
Server-driven UI on web and iOS, with feed_update WebSocket events
Paper books
Auto-Pilot V2 enters and exits paper positions from decision rows
Tripwires + push
Price-target tripwires and notifications
Ops dashboard
LLM usage and system health

Step by step: How It Works. Sources in depth: Data Sources.

Key tables

TableWriterPurpose
action_decisionsbackendTyped decision rows per ticker and horizon
ticker_features_dailybothPer-(ticker, date) ML feature cache
daily_barsbothDaily OHLCV bars
ticker_fundamentalsbothLatest fundamentals per ticker
books / book_positions / book_daily_equitybackendPaper book ledger, positions and daily equity snapshots
llm_catalyst_emissionsbackendLLM-labelled catalysts; input to the risk and quality scores and the catalysts section
news_articlespipelinePolygon and Finnhub articles, labelled in the pipeline
lgbm_test_predictionspipelineOut-of-sample test predictions from training runs
action_resolutionsbackendGraded outcomes of past decisions

Server-driven UI and the feed plugin system

Server-driven UI

SDUI
  • The backend returns a ServerDrivenFeedResponse: a list of typed ServerDrivenComponent specs.
  • Web and iOS map each component type to a native view.
  • The web renderer’s COMPONENT_MAP holds 42 component types; unknown types show a diagnostic placeholder in development and render nothing in production.

Feed plugins

Go backend
  • Each feed implements FeedTypePlugin: GetSupportedTypes, GenerateFeed, GetPriority.
  • The aggregator routes a request by feed type; a new feed is one plugin plus RegisterPlugin.
  • Public feed plugins: action, autopilot, crypto, search.
  • Auth is Firebase middleware.

State as of 2026-09-29

What runs today

dated observation
  • Verdicts are pure quant. The per-decision LLM reviewer was removed on 2026-06-14. No production path calls Opus since 2026-09-14.
  • LLM roles: labeler, narrator, risk flagger. Model names are vendor aliases.
  • The V1 signal loop was removed on 2026-09-15.
  • Two production cohorts: tradeable_v2 and tradeable_mid_large.
  • Crypto is parked: a data-only market refresh, no verdicts, no LLM calls.
  • No live orders. A live book needs §19 graduation, a second non-overlapping window of ≥90 trading days, execution-readiness and shadow-live qualification, and signed owner approval.
  • Engineering shadow books run beside the measured books and are excluded from §19.

Public paper roster

GET /api/autopilot/standings
BookLabelStatus
57Pure Quantactive
58Insideractive
59Analyst Consensusactive
60Pure Quant · Trailingactive
42BTC Trendactive
53–56Previous epoch of the same four strategiesretired 2026-09-16

Next: How It Works · Action Engine · Auto-Pilot (books, §19 criteria) · Data Sources · Deployment

Verified against vibebullish-docs@0a4edb1, vibebullish-backend@07c641de, vibebullish-data-pipeline@ee230ea, vibebullish-web@ce8ec92 on 2026-09-29. Runtime observations are dated inline; a source sha does not vouch for deployed configuration or database contents.