尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Prediction market discovery platform — translates betting odds into intuitive probabilities
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Probability, not betting. The world's honest guess about what happens next.
Bain Luck aggregates prediction markets, sportsbook lines, and statistical models into one blended probability per question. You always see a probability like "60%", never a price like "-150" or "+3000". It started with sports and now covers politics, economics, entertainment, tech, geopolitics, and weather.
At the 2026 Australian Open, Carlos Alcaraz beat Alexander Zverev in a five-set tennis semifinal. So why did his odds run from 98% up two sets to 14%, the brink of elimination, before he won?查看完整 README ↗Probability, not betting. The world's honest guess about what happens next.
Bain Luck aggregates prediction markets, sportsbook lines, and statistical models into one blended probability per question. You always see a probability like "60%", never a price like "-150" or "+3000". It started with sports and now covers politics, economics, entertainment, tech, geopolitics, and weather.
Live Site · Discover Feed · Calibration · API Docs
At the 2026 Australian Open, Carlos Alcaraz beat Alexander Zverev in a five-set tennis semifinal. So why did his odds run from 98% up two sets to 14%, the brink of elimination, before he won?
That swing (an adductor injury, a near-collapse, a fifth-set comeback) is the story of the match, and it's invisible in the final score. Bain Luck gives every question one honest number and shows you how that number moved.
It isn't just sports. The same probability lines tracked who would stand in Taylor Swift's wedding party ahead of her July 2026 wedding, how many rate cuts the Fed delivers this year, and which movie tops Netflix this week. If the world is guessing about it, there's a number, and the way the number moves is the story.
aggregation.py. When sources disagree, that's a data problem to fix, not a feature to display.curl -s https://api.bainluck.com/api/calibration | jq .total_outcomes for the current count. Each outcome is graded against a registered settlement authority. It's the scoreboard we hold ourselves to.cd backend && pytest --collect-only -q | tail -1 is the current onebetting 3.0, espn 1.5, models 1.0, markets 0.8) are hand-set priors with no recorded empirical basis — that is the current truth, not the goal. docs/aggregation-weighting-methodology.md specifies how they get replaced by weights earned from measured per-category skill; that harness is staged, not shipped, and promoting it is gated on beating the hand-set weights out-of-time.total_outcomes, total_markets, total_winners on GET /api/calibration), and a number copied into a README is a number that stops matching the meter.| Component | Technology | Hosting |
|---|---|---|
| Backend API | FastAPI (Python 3.11+) | Heroku |
| Database | PostgreSQL | Heroku Postgres |
| Task Queue | Celery + Redis | Heroku Redis |
| Frontend | Next.js 14 (React) | Vercel |
| iOS/macOS | SwiftUI (shared codebase) | TestFlight |
| watchOS | SwiftUI (app ships; complication unwired) | Direct install |
Data Sources: The Odds API, Kalshi, Polymarket, ESPN, DataGolf, MLB Stats API
This repo is developed by one person orchestrating multiple AI agent lanes running in parallel: a backend lane, a frontend/iOS lane, a read-only production verification lane, and a fenced adversarial audit lane, all coordinated through file-based work queues, with automated sentinels watching production and filing issues. Product judgment stays human. Taste, ranking, and calibration calls are made by the maintainer and recorded as standing rulings in docs/PRODUCT-BRAIN.md. The GitHub Issues board is the single source of priority.
bainluck/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI entry point
│ │ ├── models/ # SQLAlchemy models
│ │ ├── routes/ # API endpoints
│ │ ├── services/ # External API clients
│ │ ├── tasks/ # Celery tasks (incl. sentinels)
│ │ └── utils/ # Pure logic
│ ├── alembic/ # Database migrations
│ └── tests/ # Backend test suite
├── frontend/
│ ├── app/ # Next.js app router
│ ├── components/ # React components
│ └── lib/ # API client, types
├── ios/Bain Luck/ # iOS + macOS + watchOS (SwiftUI)
├── scripts/ # Operational scripts
└── docs/ # Documentation
| Doc | Purpose |
|---|---|
| Architecture | System design, aggregation, resilience |
| Weighting Methodology | How today's hand-set source weights become fitted-skill weights (staged, not live) |
| Product Brain | Standing product rulings and the reasoning behind them |
| Feature Reference | Detailed feature documentation |
| Design System | Colors, typography, components |
| Completed Features | Shipped features log |
| Gotchas | Known pitfalls and workarounds |
| GitHub Issues | The single source of priority |
The API is documented at api.bainluck.com/docs (Swagger UI).
Key endpoints:
GET /api/events lists events with probabilitiesGET /api/events/{id} returns event detail with full historyGET /api/feed serves the Discover feed (events + futures)GET /api/events/typeahead powers search suggestionsGET /api/calibration returns calibration data by category