Applied AI product · sports decision systems · Alloway LLC
Primary: AI Advantage Sports — live ML predictions, Kelly sizing, Stripe entitlements
Secondary: SOLVENT — self-funding agent with a full earn → fulfil → spend loop (NVIDIA × Stripe hackathon)
Most “AI betting” work dies in a notebook. Users don’t need another model dump — they need a decision surface: a probability they can trust enough to act on, a stake sized to bankroll risk, and a product that still works when someone looks at entitlements, odds, and line movement under real traffic.
The adjacent failure mode for agents is the opposite: systems that can spend (APIs, cards, tools) without an economic loop — no pricing, no margin gate, no ledger. That’s a demo of capability, not a business.
AI Advantage closes the product gap. SOLVENT (sidebar below) closes the agent-economics gap.
nba-ratings (Python) → ratings, win-prob, calibration primitives (PyPI: nba-edge)
kelly-js (TypeScript) → Kelly sizing, odds math, bankroll stats
sports-betting-ml → training / value-bet Streamlit demo (synthetic metrics)
ai-advantage → live product @ aiadvantagesports.com
Modeling libraries stay reusable and testable. The product repo owns UX, auth, billing, and the decision UI — not a mono-repo soup.
| Layer | Role |
|---|---|
| Predict | Model-driven picks across NBA / NFL / MLB workflows |
| Size | Kelly-based stake recommendations from edge + bankroll |
| Time | Live odds and line-movement views |
| Risk | Portfolio exposure by team / game / sport with stake haircut |
| Monetize | Stripe Checkout + Customer Portal; server-truth entitlements (/api/entitlements/me) — localStorage is cache only |
Frontend: React · TypeScript · Vite · Tailwind · shadcn/ui. Netlify Functions wrap shared handlers for checkout, newsletter capture, and the execution ledger so preview and production stay functional.
Design constraint I care about: paid access is not client-spoofable. Checkout failures do not fall back to orphan Payment Links in production.
“Good” is not a single accuracy number on a slide.
For a decision product, good means:
- Calibration over hype — probabilities that behave like probabilities (ratings / win-prob work lives in
nba-ratings; training demos must not be mistaken for live market ROI). - Actionability — edge + bankroll → stake, with correlated exposure visible before the user overcommits.
- Operational truth — billing, entitlements, and webhooks match reality; funnel events (
checkout_started→checkout_paid→ retention signals) are inspectable. - Honest demos — the Streamlit training repo labels synthetic holdout metrics as synthetic. I do not cite them as production performance.
For an economic agent (SOLVENT), good means:
- Jobs that fail the margin floor never reach Stripe.
- Spend is screened (allowlist, caps, reserve, no-negative-ROI) before money moves.
- Earn → fulfil → spend is booked on a ledger with an audit trail — including offline stubs so the loop is demonstrable without keys.
Eval tooling I ship separately (juryrig) is the same instinct: make judgment and bias inspectable instead of assumed.
What shipped
- A live commercial surface at aiadvantagesports.com: predictions, Kelly sizing, live odds, portfolio risk views, Stripe Pro (trial + portal), newsletter capture into Substack.
- An open product repo for portfolio transparency (MIT), with modeling factored into adjacent libraries rather than locked inside the UI.
- Clear separation between demo / synthetic training metrics (
sports-betting-ml) and product behavior under real Stripe and entitlements.
What I’m not claiming
- No fabricated hit rates, ROI, or Sharpe from live books.
- Training-demo accuracy / backtest figures in
sports-betting-mlare synthetic — they illustrate the evaluation workflow, not market edge. - SOLVENT demo dollar figures (~revenue / spend on a simulated batch) are illustrative of the loop, not production revenue.
What this shows an employer
I can take applied ML from libraries → decision math → a deployed product with real billing and server-side access control — and I can talk about evaluation without inflating numbers.
| Live product | aiadvantagesports.com |
| Product repo | ianalloway/ai-advantage |
| Ratings / win-prob | nba-ratings (nba-edge on PyPI) |
| Kelly / odds (TS) | kelly-js |
| Training demo | sports-betting-ml |
| Portfolio | ianalloway.xyz |
solvent-agent — NVIDIA × Stripe × Nous Research hackathon
Problem. Agents that can spend money without pricing, margin gates, or a balance sheet.
Design. Inbound job → margin gate (decline if below floor) → Stripe earn (Payment Links / Checkout) → Nemotron fulfil → NemoClaw-style guardrails → Stripe Issuing (or simulated) spend → P&L booked on SQLite treasury. Offline-first stubs; live keys unlock real inference and test-mode payments.
What “good” means. Structural profitability (unit cost before quote), policy-screened spend, ledger IDs (cs_…, pi_…) before fulfilment, demo that runs without API keys.
Result. A complete business loop you can run locally in ~30s; treasury dashboard and finance report (runway, forecast) for inspectability. Demo P&L numbers are simulated — the artifact is the loop and controls, not a revenue claim.
Client pays → Agent earns → Agent fulfils → Agent pays vendors → P&L booked
Ian Alloway — applied AI / eval / agent systems · ianalloway.xyz