1. Who we are (data controller)
SportsRally B.V. (“SportsRally”, “we”, “us”) operates the SportsRally platform — a marketplace connecting athletes, freelance coaches, and sports-facility owners for badminton and padel in the Netherlands.
We are the data controller for personal data processed through matchbase.nl and our mobile apps. For questions about this policy or your data, contact privacy@matchbase.nl.
2. Scope
This policy applies when you:
- create or use a SportsRally account (athlete, coach, or facility owner/staff);
- book or offer coaching sessions, court time, or open games;
- pay or receive payouts through our platform;
- upload performance feedback (voice notes, text, or video clips) for AI analysis;
- register a device for push notifications or adjust notification preferences; or
- visit our website or contact support.
3. Personal data we store
SportsRally is built as separate backend services (identity, booking, payments, catalog, matchmaking, AI, notifications). The table below reflects fields persisted in our databases and object storage as implemented today:
| Category | What we store | Where |
|---|---|---|
| Account | Email, password hash, display name, locale, account status, created/deleted timestamps, assigned roles (athlete, coach, facility_owner, facility_staff, platform_admin) | Identity service |
| Athlete profile | Bio, sports, interests, avatar URL, home location (latitude, longitude, label), cached skill/rating snapshots | Identity service |
| Coach profile | Bio, sports, hourly rate, cancellation policy, coaching location, Stripe Connect account ID, listing status | Identity + catalog services |
| Sessions | Refresh tokens and session metadata (issued/expiry/revoked times) | Identity service |
| Bookings | Session times, sport, status, price, participants, coach/court/facility references, booking event history | Booking service |
| Session dossiers | Planned focus/drills, executed summary, athlete reflection, and coach private notes linked to a booking | Booking service |
| Facilities & listings | Venue name, address, coordinates, courts, coach public listing (display name, bio, photo, rates), facility staff memberships, reviews you write (including your display name and comment) | Catalog service |
| Matchmaking | Sport ratings (ELO-style), open-game participation, match results | Matchmaking service |
| Payments | Payment intent references, ledger entries (amounts and booking UUIDs), invoices, payout records, Stripe Connect onboarding state. Card numbers are not stored by SportsRally — Stripe handles payment methods. | Payments service + Stripe |
| Performance & AI | Feedback upload metadata (kind, MIME type, size, booking link), raw files in cloud storage, AI job status, spider-chart JSON, text summaries, improvement-plan focus areas and notes | AI service + cloud storage |
| Notifications | Push device tokens (FCM), per-channel preferences (push / email / SMS) and quiet hours. We do not store a history of delivered messages. | Notify service |
| Technical | Access and refresh tokens in your browser, a signed-in cookie flag, server access logs via Google Cloud Logging | Client + infrastructure |
Location: if you allow browser geolocation or search for a place, coordinates may be sent to OpenStreetMap Nominatim to resolve a human-readable label before you save them to your profile. We do not continuously track your device in the background.
Phone number — optional mobile on your profile, shared only with fellow players in open games you host or join when you opt in. We do not collect marketing-consent flags through the app, and we do not run third-party analytics or advertising trackers.
4. Why we process your data (lawful bases)
| Purpose | Lawful basis |
|---|---|
| Account creation, authentication, profile management | Contract |
| Bookings, session dossiers, open games, reviews, ratings | Contract |
| Payments, escrow, and coach/facility payouts via Stripe Connect | Contract and Legal obligation (financial records) |
| Transactional email, push, and SMS notifications | Contract |
| AI analysis of uploaded coach feedback into Performance DNA spider charts | Contract — you initiate uploads linked to a session |
| Location-based coach and facility search | Contract |
| Platform security and abuse prevention | Legitimate interest |
We do not currently send promotional or marketing email campaigns. All email today is transactional (account, booking, and payment related).
5. AI and automated processing
SportsRally turns coach feedback into structured performance insights (“Performance DNA”) using Google Vertex AI (Gemini). This is how the pipeline works in production code:
Uploads
- Supported kinds: voice (up to 15 MB), video_clip (up to 40 MB), and text (up to 20 KB), each linked to a booking.
- Files are uploaded directly to an encrypted Google Cloud Storage bucket in europe-west4 (Eemshaven, NL) via a signed URL, then committed for processing.
Analysis
- Our AI worker receives the storage URI, MIME type, sport, and the athlete's internal user UUID — not your email or display name.
- Vertex AI (Gemini, default model family configured per environment) analyses the media and returns a spider chart: sport-specific skill axes scored 0–10 with confidence levels, plus a short summary (max 400 characters).
- Results are saved as skill assessments and may appear on session detail, coach views, and your Performance page. Coaches can also maintain an improvement plan (focus areas and notes) for athletes.
What we do not do
- We do not use your uploads to train public AI models. Google Cloud enterprise terms prohibit using customer content for model training.
- We do not make solely automated decisions with legal or similarly significant effects (bookings are not approved or rejected based on AI scores).
- AI outputs are advisory coaching insights, not medical or professional certification.
Retention
- Raw feedback files in cloud storage are automatically deleted after 90 days (bucket lifecycle rule in our infrastructure).
- Derived spider charts, summaries, and improvement-plan rows remain in our database while your account is active.
7. Data location & security
- Primary databases, file buckets, Cloud Run services, and Vertex AI are deployed in europe-west4 (Eemshaven, NL) (Netherlands / EU).
- Booking expiry timers use Google Cloud Tasks in europe-west1 (Belgium) because Cloud Tasks is unavailable in europe-west4. Task payloads contain booking IDs only — no personal data.
- Traffic is encrypted in transit (TLS). Data at rest uses Google-managed encryption.
- We do not currently integrate a third-party error-tracking service (e.g. Sentry). Operational logs go to Google Cloud Logging with standard application fields.
8. How long we keep data
| Data type | Retention (current implementation) |
|---|---|
| Account & profile | While your account is active; see §10 for deletion |
| AI raw uploads (cloud storage) | Automatic deletion after 90 days |
| AI assessments & improvement plans | While account is active; hard-deleted when RTBF worker completes |
| Bookings, dossiers, reviews, ratings | While active; anonymised or deleted per service rules when RTBF worker completes |
| Payment invoices & payouts | Anonymised (user ID sentinel) when RTBF completes; ledger rows kept without PII |
| Refresh tokens / device tokens | Until expiry, revocation, or account deletion processing |
| Cloud Logging | Per Google Cloud retention settings for the environment |
9. Your GDPR rights
If you are in the EEA (including the Netherlands), you have the right to:
- Access — the Download my data button in Profile → Privacy & data returns a JSON export with:
version,exported_at,user(account, roles, profiles, sessions), and cross-service slices where available —booking,catalog,matchmaking,payments,notify,ai. - Rectification — update your profile in-app or contact us.
- Erasure — use Delete my account in profile settings (see §10).
- Restriction, portability, objection — contact us; we respond within one month.
- Complaint — contact the Autoriteit Persoonsgegevens.
10. Account deletion (right to erasure)
Immediately when you confirm deletion
- Your account is marked
deletedand your email is replaced with a non-contactable placeholder. - All active sessions are revoked — you cannot sign in or refresh tokens.
- An erasure request is stored with a 30-day grace period before downstream purge runs.
- You receive an erasure reference ID in the app.
After the grace period (automated worker)
A scheduled worker processes due erasure requests (typically within 30 days, retried every ~15 minutes in production). For each request it:
- Calls each service's internal purge endpoint — booking, catalog, matchmaking, payments, notify, ai;
- Hard-deletes pure personal data (AI uploads/assessments, session dossiers, device tokens, coach listings, reviews you authored, etc.);
- Anonymises financial/booking records that must be kept (booking rows, invoices, payouts — your user ID is replaced with an anonymised sentinel);
- Removes IAM roles and athlete/coach profile rows;
- Marks the erasure request
completed_atonly when every service slice succeeds (failed slices are retried on the next sweep).
Raw AI files in cloud storage also expire on a 90-day lifecycle rule independently of account deletion.
Questions or urgent follow-up: email privacy@matchbase.nl with your erasure reference ID.
12. Children
SportsRally is not directed at children under 16. We do not knowingly collect data from anyone under 16. Contact us if you believe a child has registered and we will delete the account.
13. Changes
We update this page when our implementation changes. The “Last updated” date at the top reflects the most recent review. Material changes may also be communicated by email where appropriate.
14. Contact
Data controller: SportsRally B.V., Netherlands
Privacy: privacy@matchbase.nl
Support: support@matchbase.nl