feat(frontend): add Bet Pilot dashboard#5110
Open
Theospe wants to merge 1 commit into
Open
Conversation
381518b to
3510a51
Compare
3510a51 to
a8ce2db
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #5109
Disclaimer
I do not promote gambling or encourage anyone to bet. This came from an overlap between a personal side project and the Texera hackathon happening at the same time: the betting domain gave me messy, real-world data to clean, model, and explain, while Texera gave me a workflow system to organize the pipeline.
Motivation
This started as a very manual loop: I cleaned up Valorant betting data on my PC, pulled together screenshots and line movement, ran model output through local scripts, and then had to inspect the result outside the system that produced it. Texera was already good at expressing the workflow side of that process, but the final output still felt like a pile of files instead of something a person could actually review before placing or rejecting a bet.
This PR turns that pipeline into Bet Pilot, a Texera-backed prototype for taking raw sportsbook/VLR data, model projections, and LLM commentary and turning them into an explorable UI. The workflows do the extraction, OCR parsing, feature engineering, training, prediction, calibration, and diagnostics. Claude + Codex helped shape the frontend that reads those outputs and presents them as betting slips, scouting reports, and bankroll/model-health views.
The goal is not to make Texera a betting product. The goal is to show how Texera can be the workflow layer behind a domain-specific analyst app: raw data goes in, workflows transform it, and the UI exposes the result with enough context to audit the model.
Changes
This PR adds a new Bet Pilot dashboard under the user dashboard routes. The app is intentionally self-contained stand-in data for now, but the screens are wired around the actual workflow IDs imported in this environment:
1. Daily bets from parsed model output
The Today screen now reads like the captured Underdog-style winning slips:
The cards include the same betting-line language as the screenshots, with settled green result states and final actual-kill markers where the result is known.
2. Workflow-aware UI cards
Every major screen has a Show workflow control. Hovering it opens a compact DAG preview with operator/link counts, matching the workflow-preview screenshot, and clicking it opens the real Texera workflow in a new tab. This lets the reviewer move from “why does this screen say this?” directly to the workflow that produced it.
3. Right-side Bet Pilot navigation
The dashboard includes the right-side tab bar shown in the screenshots:
The bankroll badge now reflects the updated performance story at $574.
4. Lines input and OCR cleanup flow
The Lines Input screen accepts OCR-style sportsbook rows, including aliases like
HIGHERandLOWER, then normalizes them into structured pick candidates. This mirrors the PC cleanup workflow: screenshot/OCR output becomes parseable model input instead of hand-entered rows.5. Scouting report with auditable match links
The scouting report now uses recent Reduxx/Sentinels rows with real VLR links. Clicking a match in the recent-form table opens the associated VLR page, so the analyst can audit the exact match context behind the projection.
The report still shows the full model story: recent form, map probabilities, per-map kill projection, neural residual adjustment, edge score, and LLM commentary.
6. Bankroll curve that matches the settled slips
The bankroll view now climbs from $500.00 to $574.17 over the past 30 days, with visible spikes after the captured boosted wins and smaller pullbacks between them. The stats now show:
Demos / screenshots
The local app is running at
http://localhost:4200against the Docker stack.The screenshots below are sized with HTML
widthattributes so the PR stays readable. Tall mobile screenshots are paired side by side; wide desktop screenshots are centered at a consistent width.Today’s bets — captured winning slips
$30 entry · boosted to 3.49x · paid $105.20
$33 entry · 2.97x · paid $97.17
Workflow hover — DAG preview
Hovering Show workflow opens the compact operator/link preview before jumping into Texera.
Workflow click-through — Texera workflow opened
Clicking Show workflow opens the imported Texera workflow that produced the screen output.
Right-side navigation
The right-side tab bar keeps live bets, reports, and performance views one click apart.
Scouting report — linked match rows
Recent-form match rows are clickable and open the source VLR pages for auditability.
Bankroll
$574.17 total balance, +$74.17 net profit, and an upward 30-day curve with realistic pullbacks.
Imported workflows
The imported workflows connect the UI back to Texera: feature engineering, training, daily prediction, CLV, calibration, monitoring, and diagnostics.
Tests
All passing locally:
yarn nx test gui --watch=false --include=src/app/dashboard/component/user/bet-pilot/bet-pilot.service.spec.ts --include=src/app/dashboard/component/user/bet-pilot/screens/bp-lines-input.component.spec.ts yarn lint yarn build:ciNotes from verification:
Future improvements
Model note
I am not going to share the underlying model. This PR is a mockup of what the app looks like when I plug my private model in on my PC. The version shown here is running on my MacBook with stand-in frontend data shaped like the model output.
Generated-by: OpenAI Codex (GPT-5)