Legal
Privacy Policy
Overview
MatchPredictor ("we", "us") publishes daily football predictions and betslip tools at matchpredictor.dev. This policy explains what information we collect, why we collect it, and the choices you have.
We do not operate user accounts, sell personal data, or store email addresses. We do not persist IP addresses or precise location data in our analytics database.
Information we collect
First-party analytics
When you accept cookies, we store pseudonymous usage data in our PostgreSQL database to understand how the site is used and improve the product. This includes:
- Opaque visitor and session identifiers (random GUIDs in cookies)
- Pages visited (landing path and last path)
- HTTP referrer and browser user agent (trimmed to 512 characters)
- Whitelisted interaction events such as page views, cart adds, booking attempts, and AI chat request counts
Event metadata is limited — for example, AI chat events record prompt length only, not message text. Automated bots and crawlers are excluded from tracking.
First-party analytics can be disabled by the site operator via the
ENABLE_USER_TRACKING environment variable. When disabled, no new analytics rows are written.
Browser storage
- localStorage —
cookieConsent: remembers your cookie banner choice - localStorage —
mp_cart: stores your betslip selections on your device until you clear them
AI Chat
The password-protected AI Chat feature sends your message text and recent conversation history (up to 12 turns, 1,000 characters per message) to third-party language model providers — primarily OpenAI, with Google Gemini as a fallback. Some requests may also use OpenAI web search, which forwards query context to OpenAI's search infrastructure.
Conversations are cached in Redis (or in-memory cache when Redis is unavailable) for up to 12 hours, then expire automatically. Chat messages are not stored in our PostgreSQL database.
SportyBet booking
When you book games, our server sends match selection data (teams, league, market, prediction, kickoff time) to SportyBet to generate a booking code. We do not send your name, email, or account credentials.
Cookies we use
| Name | Purpose | Duration | Essential? |
|---|---|---|---|
MP_ANALYTICS_CONSENT |
Records your analytics and advertising consent choice | 365 days | No |
MP_VISITOR_ID |
Pseudonymous visitor identifier for first-party analytics | 180 days | No |
MP_VISITOR_SESSION |
Session identifier for first-party analytics | 12 hours | No |
MP_AI_AUTH / MP_AI_CHAT_SESSION |
AI Chat authentication (password-gated feature) | 12 hours | Yes (for that feature) |
MP_ADMIN_UI |
Operator dashboard access after HTTP Basic Auth | 12 hours | Yes (for operators) |
.AspNetCore.Antiforgery.* |
CSRF protection on form submissions | Session | Yes |
Third-party cookies may also be set by Google Analytics and Google AdSense when you accept cookies. See Google's policies for details on those cookies.
Third-party services
- Google Analytics 4 (measurement ID
G-ET4NE2RTGC) — site usage analytics - Google AdSense (publisher ID
ca-pub-2894269106561971) — display advertising - OpenAI / Google Gemini — AI Chat responses
- SportyBet — betslip booking codes
- SportSRC (
api.sportsrc.org) — optional live stream embeds; your browser connects directly to their servers - Cloudflare CDN — Font Awesome icon stylesheet
- Google Fonts — Inter typeface
Each third party processes data under its own privacy policy. We recommend reviewing: Google Privacy Policy, OpenAI Privacy Policy.
Cookie consent and your choices
When you first visit, a banner asks for your consent. Until you click Accept, we do not set first-party analytics cookies, Google Analytics storage remains denied via Google Consent Mode v2, and Google AdSense personalisation storage remains denied.
If you click Decline, those restrictions remain in place. You can clear
localStorage and cookies in your browser settings to see the banner again.
You can also opt out of personalised Google ads at adssettings.google.com and install the Google Analytics Opt-out Browser Add-on.
Data retention
- First-party analytics rows in PostgreSQL are retained until manually purged by operators
- AI Chat session cache entries expire after 12 hours of inactivity
- Betslip selections in
localStorageremain until you clear them
Security
We use HTTPS, HttpOnly cookies for sensitive session tokens, CSRF protection on forms, and rate limiting on API endpoints. No system is perfectly secure; use the site at your own discretion.
Responsible gambling
MatchPredictor is intended for users aged 18 and over only. Predictions are statistical estimates, not guarantees. Past performance does not predict future results.
Only stake money you can afford to lose. If gambling is affecting you or someone you know, seek help from a recognised support organisation in your country.
We are not a bookmaker. SportyBet booking codes link to a third-party betting platform governed by its own terms and licensing.
Changes to this policy
We may update this page as the product evolves. The effective date at the top will change when we do. Continued use of the site after changes constitutes acceptance of the updated policy.
Contact
Questions about this policy: hello@matchpredictor.dev