9ca29cfd6db43d8fadcab0ae5ea6606fefd8dae5
PolyWeather Pro
Production weather-intelligence stack for temperature settlement markets.
Official dashboard: polyweather-pro.vercel.app 中文说明: README_ZH.md
Public docs center: /docs/intro on the main site (bilingual product documentation, including intraday analysis, calibrated probability, model stack, TAF, settlement sources, history, and extension).
Product Screenshots
Global Dashboard
City Analysis (Ankara)
Product Status (2026-04-19)
- Subscription live:
Pro Monthly 5 USDC. - Points redemption live:
500 points = 1 USDC, max3 USDCoff. - Onchain checkout live: Polygon contract checkout (USDC / USDC.e).
- Auto-reconciliation live: event listener + periodic confirm loop.
- Ops dashboard live:
/opsfor memberships, leaderboard, manual point grants, and payment incident triage. - Lightweight observability live:
/healthz,/api/system/status,/metrics. - Runtime state, cache, and core offline training/backfill flows now use SQLite as the primary path; legacy JSON/JSONL files remain only for migration, export, and explicit fallback input.
- EMOS/CRPS calibrated probability is now the default primary probability engine (
emos_primary); setPOLYWEATHER_PROBABILITY_ENGINE=emos_shadoworlegacyto roll back. - Intraday analysis is now positioned as a professional meteorology read: headline, confidence, base/upside/downside paths, next observation point, evidence chain, failure modes, and confirmation rules.
- Intraday modal now blocks stale cached detail during refresh, so users do not briefly trade off old city/date data before full detail arrives.
- Calibrated model probability is now the primary probability panel.
LGBMis shown as a calibrated probability engine when available; model consensus and market prices are secondary references. - Non-Hong Kong airport cities now ingest
TAFand parseFM / TEMPO / BECMG / PROB30/40. - Temperature chart now overlays
TAF Timingmarkers near the expected peak window. - Trade cue now combines upper-air structure,
TAF, market crowding, andedge_percent. - Browser extension now uses
DEBfor multi-day forecast and stays positioned as a lightweight lead-in to the main site. - Official nearby-network layer now covers
MGM(Turkey),CMA/NMC(Mainland China),JMA AMeDAS(Japan),KMA(Korea),HKO(Hong Kong), andCWA(Taiwan). - Tokyo now ingests Haneda
JMA AMeDAS10-minute temperature as the official enhancement layer. - Dashboard prewarm is now supported through a dedicated worker / cron path, with runtime status exposed in
/api/system/statusand/ops. /opsnow exposes cache bucket counts, summary cache hit / miss rate, and prewarm runtime heartbeat.- Intraday commentary can optionally use
Groqas a bilingual rewrite layer, while rule-based commentary remains the fallback. - Vercel frontend guidance now includes cost controls for analytics, eager fetches, and edge-side scanner blocking.
License & Commercial Boundary
This repository is licensed under GNU AGPL-3.0 only from 2026-03-30 onward.
- Public in repo: weather aggregation, core analysis, dashboard, bot baseline, and standard payment flow.
- Not included in this repository: private production data, internal operating thresholds, commercial risk rules, pricing strategy details, and growth tooling.
- Trademark, brand, domain, production databases, and hosted-service operations are not granted by the code license.
See: AGPL-3.0 & Commercial Boundary
Core Capabilities
- Aggregates observations and forecasts for 52 monitored cities.
- Uses DEB (Dynamic Error Balancing) to blend multi-model highs.
- Generates settlement-oriented calibrated probability buckets (
mu+ bucket distribution), withLGBMmetadata surfaced when the calibrated engine is active. - Maps weather view to Polymarket quotes for mispricing scan.
- Reuses one analysis core across web dashboard and Telegram bot.
- Adds payment audit trails, replay tooling, and incident visibility in ops.
- Adds peak-window-oriented intraday analysis with meteorology headline, path buckets, evidence chain, invalidation rules, and confirmation rules.
- Adds airport-side
TAFtiming overlays and airport suppression/disruption interpretation for non-Hong Kong airport cities. - Adds official nearby-network enhancement layers for China, Japan, Korea, Hong Kong, Taiwan, and Turkey without replacing airport settlement anchors.
- Adds optional dashboard prewarm worker so hot cities can be refreshed before user clicks.
Reference Architecture
flowchart LR
U["Users (Web / Telegram)"] --> FE["Next.js Frontend (Vercel)"]
U --> BOT["Telegram Bot (VPS)"]
FE --> API["FastAPI /web/app.py"]
BOT --> API
API --> WX["Weather Collector"]
WX --> METAR["Aviation Weather (METAR)"]
WX --> TAF["Aviation Weather (TAF)"]
WX --> MGM["MGM (Turkey station network)"]
WX --> OM["Open-Meteo"]
WX --> JMA["JMA AMeDAS (Japan)"]
WX --> KMA["KMA (Korea)"]
WX --> HKO["HKO / CWA / NOAA / Official settlement sources"]
API --> ANA["DEB + Trend + Probability + Market Scan"]
ANA --> PAY["Payment State (Intent + Event + Confirm Loop)"]
ANA --> PM["Polymarket Read-only Layer"]
ANA --> LLM["Optional Groq Commentary Rewrite"]
API --> PREWARM["Dashboard Prewarm API / Worker"]
Monitored Cities (52)
- Europe / Middle East / Africa: Ankara, Istanbul, Moscow, London, Paris, Munich, Milan, Warsaw, Madrid, Tel Aviv, Amsterdam, Helsinki, Lagos, Cape Town, Jeddah
- APAC: Seoul, Busan, Hong Kong, Lau Fau Shan, Taipei, Shanghai, Beijing, Wuhan, Chengdu, Chongqing, Shenzhen, Guangzhou, Singapore, Tokyo, Kuala Lumpur, Jakarta, Manila, Wellington
- Americas: Toronto, New York, Los Angeles, San Francisco, Aurora, Austin, Houston, Chicago, Dallas, Miami, Atlanta, Seattle, Mexico City, Buenos Aires, Sao Paulo, Panama City
- South Asia: Lucknow, Karachi, Masroor Air Base
Quick Start
Backend + Bot (Docker)
docker compose up -d --build
Frontend (local)
cd frontend
npm ci
npm run dev
Recent Highlights
- Airport-linked contracts use the METAR / airport primary observing site as the settlement anchor. Wunderground pages are reference/history pages, not stations.
- Taipei and Shenzhen retain their explicitly configured station history pages for reconciliation, but the docs avoid describing Wunderground itself as a physical station.
- Hong Kong keeps
HKOofficial readings in dashboard and history, without falling back to airport METAR lines. - Intraday analysis now separates meteorology conclusion, evidence chain, invalidation rules, confirmation rules, calibrated probability, and market reference.
TAFis used as an airport-side confirmation layer, not as the main temperature model.LGBMcan power the calibrated probability panel; model vote counts remain an explanatory consensus line, not the final probability.- Browser extension remains a lightweight monitoring + basic-bias product, while the site holds the full analysis experience.
Runtime Data (Recommended on VPS)
Use external runtime storage to avoid SQLite/git conflicts:
POLYWEATHER_RUNTIME_DATA_DIR=/var/lib/polyweather
POLYWEATHER_DB_PATH=/var/lib/polyweather/polyweather.db
POLYWEATHER_STATE_STORAGE_MODE=sqlite
Ops Verification
Health / system status / metrics
curl http://127.0.0.1:8000/healthz
curl http://127.0.0.1:8000/api/system/status
curl http://127.0.0.1:8000/metrics
Dashboard prewarm worker
docker compose --profile workers up -d polyweather_prewarm
curl http://127.0.0.1:8000/api/system/status
Check:
prewarm.thread_aliveprewarm.runtime.cycle_countcache.analysis.hit_ratecache.open_meteo_forecast_entries
Frontend cache headers
./scripts/validate_frontend_cache.sh "https://polyweather-pro.vercel.app"
Payment auto-reconciliation logs
docker compose logs -f polyweather | egrep "payment event loop started|payment confirm loop started|payment auto-confirmed"
Payment runtime
curl http://127.0.0.1:8000/api/payments/runtime
Wallet activity logs
docker compose logs -f polyweather | egrep "polymarket wallet activity watcher started|wallet activity pushed"
Telegram Commands
| Command | Purpose |
|---|---|
/city <name> |
City real-time analysis |
/deb <name> |
DEB historical reconciliation |
/top |
User leaderboard |
/id |
Show current chat ID |
/diag |
Startup diagnostics |
/help |
Help and usage |
Documentation Index
- Chinese overview: README_ZH.md
- Chinese API guide: docs/API_ZH.md
- TAF signal guide (ZH): docs/TAF_SIGNAL_ZH.md
- Model stack & DEB (ZH): docs/MODEL_STACK_AND_DEB_ZH.md
- EMOS + LGBM system (ZH): docs/EMOS_LGBM_SYSTEM_ZH.md
- Commercialization: docs/COMMERCIALIZATION.md
- AGPL-3.0 policy: docs/OPEN_CORE_POLICY.md
- Supabase setup (ZH): docs/SUPABASE_SETUP_ZH.md
- Configuration & secrets (ZH): docs/CONFIGURATION_ZH.md
- LightGBM daily-high model (ZH): docs/LGBM_DAILY_HIGH_ZH.md
- Frontend deployment (ZH): docs/FRONTEND_DEPLOYMENT_ZH.md
- Tech debt (EN): docs/TECH_DEBT.md
- Tech debt (ZH): docs/TECH_DEBT_ZH.md
- Payment verification: docs/payments/POLYGONSCAN_VERIFY.md
- Payment audit: docs/payments/PAYMENT_AUDIT_ZH.md
- Payment V2 upgrade: docs/payments/PAYMENT_UPGRADE_V2_ZH.md
- Ops admin guide: docs/OPS_ADMIN_ZH.md
- Monitoring guide (ZH): docs/MONITORING_ZH.md
- Deep research report: docs/deep-research-report.md
- Frontend report: FRONTEND_REDESIGN_REPORT.md
- Release process: RELEASE.md
- Changelog: CHANGELOG.md
Version
- Version:
v1.5.4 - Last Updated:
2026-04-18
Languages
Python
56.8%
TypeScript
37%
CSS
4.1%
JavaScript
1%
PLpgSQL
0.4%
Other
0.6%

