Beheerpaneel
Hier stel je FootyMind in
Elk blok hieronder legt in gewone taal uit wát het doet en waaróm het er is. Klik op een titel om een blok open of dicht te klappen.
✅ Klopt alles?
Eén antwoord in plaats van vier dashboards. Controleert de broncode, de live app én de BTTS-motor. Een controle die niet kán draaien telt nooit als "goed" — dan staat hier "onbekend", niet groen.
Laden…
—
—
—
—
—
Wil je het bewijs buiten deze app? De testsuite draait bij elke wijziging op GitHub — een groen vinkje daar betekent dat alle wachters en losse tests slagen, ongeacht wat iemand hier beweert.
☕ App wakker houden (Keep-alive)
Zet aan om de app wakker te houden (bezoekers wachten nooit op een koude start), of uit zodat de app mag slapen als je weg bent — dat spaart Render-uren.
—
🔓 Toegangsmodus
Bepaal of bezoekers moeten inloggen of dat de app open is voor iedereen.
🤖 AI-model
Kies welk AI-model alle analyses en voorspellingen maakt (Claude, Gemini, Grok of GPT). De instelling wordt direct actief. Externe modellen vereisen hun eigen API-sleutel in de omgevingsvariabelen.
💵 Wat kost elk model?
Het tarief is de prijs per 1 miljoen tokens (invoer = jouw prompt, uitvoer = het antwoord). Het uitgegeven bedrag is gemeten: bij elke AI-aanroep wordt het echte tokenverbruik van de aanbieder vastgelegd en tegen het tarief afgerekend. Bedragen in dollar — zo factureren alle aanbieders.
🏆 Welk model presteert het best?
Op basis van afgeronde BTTS-voorspellingen (Brier-score, lager = scherper). Een model is betrouwbaar te vergelijken vanaf 100 voorspellingen. De volledige ranglijst (met filters, Over 2.5 en CSV-export) staat op de Stats-pagina.
👥 Gebruikers
Accounts beheren: aanmaken, wachtwoord resetten, blokkeren of verwijderen.
| Gebruiker | Rol | Status | Acties |
|---|
📈 Verloop — nauwkeurigheid per dag
7-daags voortschrijdend trefpercentage per wedstrijddag (zelfde filters als het Accuraatheid-dashboard: alleen gesettelde bron='live'-picks). Dagen met te weinig picks in het venster (<10) tonen geen lijnpunt. Beweeg over de grafiek voor de details per dag.
| Datum | BTTS n | BTTS dag | BTTS 7d | O2.5 n | O2.5 dag | O2.5 7d |
|---|
🗄️ Cache Beheer
TTL per endpoint-type — data wordt automatisch ververst na afloop.
🔔 Push-meldingen
Ontvang automatisch een melding op je telefoon bij engine-fouten, DB-problemen of lage API-quota. Installeer de gratis ntfy-app en voer hieronder je topic in.
1. Download ntfy in de App Store of Google Play
2. Open de app → "+" → voer jouw topic in (bijv. footymind-abc123)
3. Voer hetzelfde topic in bovenstaand veld en klik "Opslaan & testen"
4. Je ontvangt direct een testmelding als het werkt ✅
🔎 Competitie-ID opzoeken
Zoek het exacte api-football league-id op (via de officiële API) vóór je een competitie toevoegt — zo hoeven id's niet gegokt te worden. Typ bijv. deild of Iceland.
🏆 Competities beheren
Voeg zelf competities toe of verberg ingebouwde. Zoek het exacte api-football-id eerst op met "🔎 Competitie-ID opzoeken" hierboven. Eigen competities krijgen geen fijn afgestemd BTTS-anker (neutrale standaard ~52%).
Nieuwe competitie toevoegen
Laden…
📊 Systeemstatus
Kerncijfers van de app in één oogopslag.
📶 Bandbreedte
Hoeveel data de app zelf ophaalt bij API-Football en de database. Dit is de post waar de hosting op afrekent.
Laden...
🛡️ Engine Bewaking
Automatische sanity-checks op de BTTS-motor — hoort altijd groen te zijn.
Laden...
🖥️ App Monitor
Live status van alle componenten — wordt elke 60 seconden automatisch ververst.
Recente meldingen
🔍 App Scanner
Controleert in één keer de héle app: broncode (dubbele routes, onbeschermde endpoints, foutafhandeling), de live werking (database, schema, config, settlement) én de BTTS-motor — die wordt live doorgerekend met de volledige directionele sanity-suite (7 checks) plus de Engine-bewaking. De scan verandert zelf niets en raakt de motor niet aan — veilige reparaties doe je per bevinding met de knop 🔧 Repareer.
—
🚨 Kritiek
—
⚠️ Waarschuwing
—
ℹ️ Info
📡 API Rate Limit
API-Football Pro — bijgewerkt na elke live API-call.
📈 Cache Statistieken
Hits en misses sinds de laatste herstart — hoe hoger de hit rate, hoe minder API-calls.
⚙️ Settlement — Resultaten Verwerken
Haal einduitslag op voor alle afgelopen voorspellingen. Runs automatisch elke nacht om 03:00 UTC — klik hier om direct te verwerken.
Totaal in DB
—
Wachtend op uitslag
—
Gesetteld ✓
—
🛫 Runway thermostaat
Hoe ver de thermostaat nog van armen is, en wat de teller heeft teruggezet.
Laden...
🌡️ Thermostaat v2 — BTTS Kalibratie
Eindkans (Poisson-basis + Claude-correctie) vs. werkelijk BTTS-resultaat. Alleen wedstrijden met bekende uitkomst en final_btts_pct in de DB.
Staat de knop uit, dan gebruikt de app de ruwe motoruitkomst zonder kalibratie-correctie. Standaard uit sinds de audit van 03-08-2026: de −7pp die op 02-08 werd geleerd kwam uit één speeldag, en het onderliggende patroon haalde geen significantie (Spearman ρ = −0,11 bij n=66). Zet hem pas aan als er ≥50 gesettelde duels over ≥5 speeldagen staan.
| Bucket | n | Gem. eindkans | Kale Poisson | Claude adj. | Werkelijk BTTS | Δ |
|---|
Kale Poisson en Claude adj. alleen bij poisson_complete=True (n zie kolom Kale Poisson).
🤐 Dekking — waar zwijgt de app?
Niet elke wedstrijd verdient een advies. Kan de rekenmotor niet draaien (te weinig locatiedata), dan gokt het AI-model de kans — en dat scoorde in de meting slechter dan een muntworp. Hieronder staan je eigen cijfers. Sinds v2.8.182 staat de schakelaar standaard AAN, dus wedstrijden met te dunne data krijgen bewust geen advies — met de knop hieronder zet je dat zelf aan of uit.
Staat de knop aan, dan slaat de app wedstrijden met te dunne data helemaal over: geen gok, geen AI-kosten, en ze verwateren je trefpercentage niet meer. Staat hij uit, dan krijgt élke wedstrijd een advies — ook de duels waar het model de kans moet gokken. Wijzigingen gelden vanaf de volgende voorspelling.
Tip: de zwakste competities uit je eigen meting staan hierboven — klik een id aan om 'm toe te voegen.
📐 League-baselines — geteld of geschat?
Elke competitie heeft een baseline: hoe vaak scoren beide ploegen hier normaal gesproken? Die 166 percentages waren met de hand geschat — en minstens één zat aantoonbaar fout (league 284 stond als "Bolivia, hoogte-effect" terwijl het de Roemeense Liga II is). Hier worden ze geteld uit de echte uitslagen van dit seizoen. Een meting telt pas mee vanaf 40 gespeelde duels en krimpt naar de handmatige schatting als anker — zo kan één gek seizoen de motor niet meesleuren.
| Competitie | Duels | Geteld | Geschat | Verschil | In motor |
|---|
Kolom Verschil = geteld − geschat, in procentpunt (BTTS). Rijen met te weinig duels staan onderaan en zijn gedimd: die tellen niet mee in de motor. In motor is het getal dat compute_poisson écht gebruikt — bij weinig duels ligt dat dicht bij de schatting, bij veel duels dicht bij de meting.
Staat er (seizoen …) achter een competitie, dan had het lopende seizoen te weinig gespeelde duels en is er over het vorige seizoen geteld. Dat geldt voor vrijwel alle Europese winter-competities zolang het seizoen net begonnen is.
🎯 λ-kalibratie — kloppen de verwachte doelpunten?
λ is de wortel van alles: BTTS, Over 2.5 én de zekere markten zijn sommen over de scorematrix die uit λthuis en λuit volgt. Staat λ 20% te hoog, dan is elke markt tegelijk scheef — en dat zie je in géén enkele andere meter. Hier telt de app simpelweg: hoeveel doelpunten waren er verwacht, en hoeveel vielen er? Thuis en uit apart, want een scheve kant verdwijnt in het totaal.
| Competitie | Duels | Verwacht | Werkelijk | Afwijking |
|---|
Uitgesplitst naar het league-anker
Een groep onder 30 duels is indicatief — een richting, geen bewijs. Rijen van vóór v2.8.217 dragen geen vastlegging en staan als onbekend; die worden nooit stilzwijgend bij geschat opgeteld.
| Anker | Duels | Verwacht | Werkelijk | Afwijking | p-waarde |
|---|
💰 Rendement — levert het geld op?
Trefpercentage zegt niets over winst: 55% raak is verlies zodra de gemiddelde odds onder 1,82 liggen. Hier worden de gesettelde value bets afgerekend tegen de odds waartegen ze zijn afgegeven — vlakke inzet van 1 eenheid per pick, één weddenschap per wedstrijd en markt.
Per markt
Per AI-model
| Model | Weddenschappen | Raak | Gem. odds | Nodig | Rendement |
|---|
🧪 Bewijs verzamelen — hoe ver zijn we?
Een oordeel over de motor heeft genoeg gesettelde duels nodig. Bij 19 picks liep de betrouwbaarheidsband van −0,55 tot +0,54: elk cijfer daarbinnen is ruis. Hier zie je hoe ver de reeks staat en welk land het verst naast zit — met een toets erbij, zodat een land met twee duels niet als bevinding leest.
Per land — wie zit het verst naast?
| Land | n | Voorspeld | Werkelijk | Afwijking | Brier | p | Oordeel |
|---|
🏅 TOP-picks — houdt het teken zijn belofte?
Het TOP-teken op de wedstrijdkaart belooft dat die groep vaker raak is. Hier staat of dat zo blijft.
Laden...
📐 Discriminatie — staat de volgorde goed?
Het accuraatheid-blok meet of je kansen op het juiste niveau zitten. Dit blok meet iets anders: of de volgorde klopt — gebeurt wat jij hoog inschat ook vaker dan wat je laag inschat? Een kalibratie-offset kan alleen het niveau repareren, nooit de volgorde. En bij elk cijfer staat hoe zeker het is: zonder die context is een verschil op één speeldag niet van toeval te onderscheiden.
Staat de knop uit, dan krijgt Over 2.5 het label indicatief: hij verschijnt niet meer als "BESTE"-tip op de voorpagina en is niet aan een combi toe te voegen. De kans zelf wordt gewoon berekend, opgeslagen en gemeten — anders zou uitzetten precies de meting stoppen die moet bewijzen of uitzetten terecht is. Nagemeten op 16-08 (336 gesettelde duels): Over 2.5 is niet slechter dan "altijd de basisrate roepen" maar beter (−0,0073, binnen de ruis), met AUC 0,596 tegen 0,577 voor BTTS. Het zwakke cijfer kwam van één speeldag. Zet hem dus pas uit als een meting over ≥3 speeldagen een beslissend negatief verschil laat zien.
Staat de knop aan, dan krijgt een BTTS-pick vanaf 58% die zonder bookmaker-odds tot stand kwam een twijfel-vlag: hij verschijnt niet in "Meest Kansrijk". De kans zelf verandert niet en wordt gewoon opgeslagen, dus settling, accuraatheid en thermostaat blijven meten — zo is later te valideren of de eis terecht is.
📊 Accuraatheid — echte voorspel-prestaties
Alleen echte voorspellingen (bron='live'). Zet een Vanaf-datum om je test-/afstelperiode buiten je definitieve track record te houden. De Brier-score meet hoe goed je kansen kloppen (0 = perfect, lager = scherper). Beoordeel hem nooit op zichzelf: de tegel Baseline ernaast is de Brier van "altijd dezelfde kans roepen, gelijk aan de basisrate". Sta je daarboven, dan voegt het model niets toe. Let op: die baseline is 0,25 alléén als de basisrate precies 50% is — en het is nooit het trefpercentage.
Trefpercentage per markt
🏆 Prestatie per AI-model — welk model voorspelt BTTS het best?
| Model | n | Trefpct. | Brier | Kalibratie-gat |
|---|
Let op: bij weinig voorspellingen per model (kleine n) is dit nog indicatief — het wordt betrouwbaarder naarmate je meer scant.
Verloop per week — gaat het afstellen de goede kant op?
| Week | n | Trefpct. | Brier | Kalibratie-gat |
|---|
Kalibratie-curve — zeg je 70%, gebeurt het dan ~70%?
| Kans-bucket | n | Gem. voorspeld | Werkelijk BTTS | 95%-band | Δ |
|---|
Alle gesettelde BTTS-voorspellingen — welke wedstrijden zitten in de meting?
| Datum | Wedstrijd | Model | Voorspeld | Uitslag | Raak? |
|---|
🗺️ Land/competitie-koppeling
Read-only diagnose: spoort voorspel-rijen op waar het opgeslagen league_id en de opgeslagen competitie-naam niet bij elkaar passen (land-mislabel — bv. een Boliviaans duel dat onder Belarus is opgeslagen). Verandert niets en raakt de motor niet aan.
—
Voorspel-rijen
—
Unieke leagues
—
⚠️ Verdacht
🤖🔍 Auto-model-vergelijking (verdachte competities)
Voorspelt aankomende duels van de competities die jij verdenkt (de watchlist hieronder) op de modellen die jij per competitie kiest (standaard alleen Haiku 4.5 — het goedkoopste; zet Sonnet 5/Opus 4.8/Opus 5 per competitie aan als je écht wilt vergelijken), zodat je zwart-op-wit ziet of ze structureel fout voorspeld worden. Raakt de motor niet aan; stopt automatisch na de einddatum.
🎯 Verdachte competities — voeg toe wat je verdenkt van te vaak fout voorspellen. Kies per competitie zelf de modellen (tik ze aan/uit onder elke competitie):
Nieuwe competities starten op alleen Haiku 4.5 (goedkoopst). Meer modellen aanzetten = meer Claude-kosten (elk duel × het aantal aangevinkte modellen). Zet Sonnet 5/Opus 4.8/Opus 5 alleen aan waar je écht wilt vergelijken.