Last updated: October 10, 2026
Important: This Privacy Policy explains how RaceTagger collects, uses, and protects your information when you use our race photography analysis service, including our website, desktop application, and related services.
RaceTagger ("we," "our," or "us") is a race photography analysis service operated by Federico Pasinetti, based in Italy. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our website at racetagger.cloud, our desktop application for Windows and macOS, and any related services (collectively, the "Service").
We are committed to protecting your privacy and complying with the General Data Protection Regulation (EU) 2016/679 (GDPR) and applicable Italian data protection laws (D.Lgs. 196/2003 as amended by D.Lgs. 101/2018).
Data Controller: Federico Pasinetti, operating as RaceTagger. Contact: privacy@racetagger.cloud
When you register for our Service, we collect:
When you purchase token packages, we collect billing information through our payment processor, Stripe, Inc. We do not store credit card numbers or full payment details on our servers. We retain:
Our core service processes your photographs for race number detection and participant identification. When you use our analysis features:
For selected professional championships and other sport categories where it is enabled, our Service includes a face recognition feature that identifies participants from facial features in photographs. Under GDPR Article 9, facial recognition data constitutes special category (biometric) data.
Race numbers are the primary identifier. Face recognition is used only as a supplementary method, on scenes where a race number is not visible or not legible (portraits, pit garage, podium). It is active only for sport categories where the feature is enabled, and only when the preset being used contains at least one reference photo; there is no separate switch to turn it off for an individual analysis — you control it by not adding reference photos to a preset, or by removing them.
Three distinct data flows exist, and they are treated differently:
(a) Photos you analyse. Face detection and matching run locally on your device using on-device ONNX models. The facial feature vectors computed from the photographs you analyse are kept only on your device, for the duration of the analysis, and are deleted when the analysis is complete. They are never transmitted to our servers.
(b) Reference photos you upload to a preset. When you add a reference photo of a known participant to one of your own presets, the photograph is stored on our servers (Supabase, EU region) until you delete it, so that the same preset can be reused across analyses and devices. The app can also add one for you: if face recognition is enabled for your account and you give a name to a face in the review gallery, and the name matches a participant in the preset in use, the app saves a crop of that face as a reference photo of that participant and tells you so with a notification. As of desktop app version 1.1.14, the facial feature vector computed from a newly uploaded or newly updated reference photo is no longer sent to or stored on our servers — it is computed and kept only in a local cache on your device. Reference photos uploaded before that version, and not modified since, may still have a legacy vector stored in our database; any such vector is deleted together with its database record when you delete the photo or the preset. You can delete the photograph (and any residual vector) at any time by removing it from the preset. For this flow, you are the data controller for the person depicted, and RaceTagger processes the reference photo — and, for as long as any legacy vector persists, that vector — as your processor: you must have a valid legal basis under Article 9(2) GDPR before uploading it. Ordinarily this is the explicit consent of the person photographed (Article 9(2)(a)). If instead you use the photo for journalistic or editorial purposes in the course of your work as a press photographer, you may be able to rely on the basis available under Article 85 GDPR and, in Italy, Article 137 of the Privacy Code (D.Lgs. 196/2003) — this depends on your jurisdiction and activity, and we do not verify it. If the event takes place in Illinois, Texas or Washington (USA), you must in addition hold the written consent of the person depicted. RaceTagger does not collect, verify or store any consent form or declaration on your behalf — you are responsible for keeping your own record of the basis you relied on. See our Data Processing Agreement for the details of this relationship.
Storage, access and deletion of reference photos (flow (b)). Each reference photo is saved as two files: the file exactly as you chose it, with whatever metadata it carries (for a photo from a camera, for example the camera model and serial number, the date taken and, if present, the GPS position), and a reduced copy of at most 1024 pixels on the long side, without that metadata, which your devices use to compute the facial feature vector locally. Both files are kept in our Storage (Supabase, EU region) under a path that contains random identifiers, but in a storage area that is not private: anyone who obtains the exact path to a file can read it directly, without signing in. Besides you, RaceTagger administrators can view the reference photos of any account and manage them in our management portal, for example to help set up or fix a preset. When you remove a photo you added from a preset in the app, the app deletes both of its files from Storage. When you instead remove a participant or a driver from a preset, delete a whole preset or delete your account, the database records (and any legacy vector) are deleted, but the photo files are not yet deleted from Storage automatically: email privacy@racetagger.cloud and we will delete them.
(c) Official presets maintained by RaceTagger. Official presets for professional championships (driver name, team, race number, livery, sponsors) do not include a reference photograph or a facial feature vector of the driver: RaceTagger does not maintain a database of drivers' faces. If a photographer wants face matching for a driver in an official preset, they add a reference photograph to their own copy of the preset under flow (b) above, on their own lawful basis. If you believe we still hold a reference photo or facial feature vector you did not upload yourself, write to privacy@racetagger.cloud and we will investigate and remove it.
Our desktop application collects the following technical data to improve performance and diagnose issues:
There is no switch in the desktop app for the application usage records described above; you can object to them (Section 6.6). As of desktop app version 1.1.13, automatic error reporting and analysis log upload can be turned off from Settings → Privacy & AI — each is on by default, and each is a separate toggle from the AI training consent described in Section 3.3. The analysis log switch is saved on your computer. The error reporting switch is not: it lasts until you close the app, it is back on the next time you start it, and a report that was already waiting to be sent when you turned it off is still sent.
Our website uses the following analytics and tracking technologies, subject to your consent:
Our website loads fonts (Inter, Roboto Mono, JetBrains Mono, Barlow Condensed) via Next.js' font system: they are downloaded once at build time and served from our own domain, not from Google's servers, so visiting our website does not connect your browser to Google Fonts regardless of your cookie choices.
The analytics and marketing technologies above are loaded only after you provide consent through our cookie banner. You can change your preferences at any time via the cookie settings on our website. See our Cookie Policy for full details, including how a change to this policy causes the consent banner to reappear.
If you give explicit marketing consent (an unchecked-by-default checkbox at signup, separate from accepting this Privacy Policy and the Terms of Service), we collect:
Marketing consent defaults to declined and is not retroactive: if you registered before this consent field existed, we treat you as not consenting to marketing until you actively opt in, even if you were previously receiving our newsletter. Your account is always synced to our email platform (Brevo) for service and transactional email regardless of marketing consent; you are only added to the marketing/newsletter list, and only receive newsletter broadcasts, if you have given marketing consent. You can withdraw consent at any time via the unsubscribe link in any marketing email, or by contacting us; an unsubscribe or complaint is also recorded in our suppression list and honored across future sends.
We process your personal data on the following legal bases:
| Processing Activity | Legal Basis | GDPR Article | Your Control |
|---|---|---|---|
| Account creation & authentication | Contract performance | Art. 6(1)(b) | Account deletion |
| Image analysis & race number detection | Contract performance | Art. 6(1)(b) | Per-execution |
| Payment processing & invoicing | Contract + Legal obligation | Art. 6(1)(b)(c) | N/A (required) |
| Face recognition — reference photos in your presets | Contract (RaceTagger as processor) + a valid Art. 9(2) basis obtained/relied upon by you: ordinarily explicit consent (Art. 9(2)(a)); for press photographers, the journalistic-purposes basis under Art. 85 GDPR and, in Italy, Art. 137 of the Privacy Code. You are the controller for this basis, not RaceTagger. | Art. 6(1)(b), Art. 9(2)(a) or Art. 85 GDPR / Art. 137 Privacy Code | Add/remove reference photos |
| AI model training with your images | Legitimate interest | Art. 6(1)(f) | Right to object (see Section 3.3) |
| Desktop app usage records (launches, Results-page actions) | Legitimate interest | Art. 6(1)(f) | No switch in the app; right to object (Section 6.6) |
| Error reporting & analysis logs | Legitimate interest | Art. 6(1)(f) | Settings toggles (desktop app 1.1.13+); the error reporting toggle is not saved between sessions (Section 2.5) |
| Event matching (weekly automated job, Section 2.3) | Legitimate interest | Art. 6(1)(f) | No switch in the app; right to object (Section 6.6) |
| Website analytics (GA4, Clarity) | Consent | Art. 6(1)(a) | Cookie banner |
| Advertising tracking (Meta Pixel & Conversions API) | Consent | Art. 6(1)(a) | Cookie banner |
| Marketing emails & newsletters | Consent | Art. 6(1)(a) | Opt-in checkbox (unchecked by default) + unsubscribe link |
| Tax compliance & financial records | Legal obligation | Art. 6(1)(c) | N/A (required) |
We use your data to provide, maintain, and improve the Service, including: analyzing your photographs using AI models, matching detected race numbers to participant databases, generating analysis results and visual tags, managing your token balance and purchase history, and delivering email notifications about your analysis results.
By default, we may use analysis data (such as the race numbers read and the corrections you make) and the downscaled copies of your photos that we store (Section 2.3) to train and improve our AI models for race number detection, scene classification, and related features, on the basis of our legitimate interest in improving the Service. A copy used for training is the file as stored, with the metadata it carries (Section 2.3); crops are not stored, so they are not used. Today, only images that an admin has reviewed and approved for a training dataset are used for training.
You may object at any time. In the desktop app, open Settings, find the "Privacy & AI" section and switch off "AI Training Contribution" (it is on by default). While it is off for your account, none of your photos is offered to our admins as training material or used in the datasets, exports and tests we use to train and evaluate our AI models, including photos uploaded before you switched it off: these tools check your current choice each time they use a photo. The stored copies of your uploads are also deleted sooner (Section 5). You can also object by email to privacy@racetagger.cloud, and we will switch it off for your account. Neither step undoes the training of models already built or removes copies already packaged into training-dataset archives; for those archives, see Section 5.
We monitor for abusive use of our Service, including device fingerprinting for rate limiting and fraud prevention. This processing is based on our legitimate interest in maintaining service integrity and protecting our users.
We do not sell, rent, or trade your personal data. We share data with the following categories of processors, each bound by data processing agreements:
| Provider | Purpose | Data Shared | Location |
|---|---|---|---|
| Supabase (PostgreSQL) | Database, Auth, Storage | Account data, analysis results, participant lists (presets), downscaled copies of photos, reference photos of participants for face recognition (Section 2.4), analysis logs, execution records (analyzed folder path, device details), usage records and error reports (Section 2.5), event matching records and calendar entries (Section 2.3) | EU (Frankfurt) |
| Google Cloud Vertex AI | AI image analysis (Gemini) — desktop app, website demo, our private API, entry-list PDF parsing, and column mapping of CSV start lists. This EU-only guarantee covers these photo, PDF and CSV pipelines specifically — see the next row for our calendar-research tooling, which is not a photo pipeline and is not EU-pinned | Downscaled copies of photos, image crops, prompts (which include the participant list of the preset in use: race number, name, co-driver, team and sponsor of each participant), entry-list PDF files you import, and the header row and first two data rows of a CSV start list the app does not recognize | EU only, never a global or non-EU endpoint. The "eu" multi-region for crop re-analysis, visual tagging, PDF parsing, and CSV column mapping, with europe-west4 as an automatic fallback only if "eu" itself is unavailable; europe-west1 for default photo analysis, the website demo, and our private API |
| Google Cloud Vertex AI (calendar research) | Internal tooling only — automated championship calendar sync (session-context-ai-sync) via Gemini with Google Search grounding, to keep event/session schedules current. Never touches a customer photo and is not a fallback for photo analysis | Public championship/event/session metadata only (names, rounds, dates, venues, official URLs) — used to build the search query and to write the resulting calendar back. No customer photos or personal data | Global Vertex endpoint (not EU-pinned) — Google Search grounding for this model is not confirmed to work on an EU-only Vertex location |
| Google AI Studio | Internal admin tooling only, all gated to admins — not used in any customer-facing analysis flow, and not a fallback from Vertex AI anywhere else in the product. Four callers: gemini-proxy (ad-hoc model testing), analyze-multimodal (multi-modal detection test lab), the business-analytics AI-insights summarizer, and sync-calendar-results (race-calendar research via Gemini with Google Search grounding) | Whatever an admin submits while testing a model (may include image or text content) for the first two; aggregated internal business metrics (no customer photos or personal data) for the third; only race-calendar metadata (championship name, event/session names, dates, venue, official results-source URL) for the fourth — no customer photos or personal data. Restricted to Gemini 2.5/3 models | US |
| OpenRouter, Inc. | Internal admin tooling only, gated to admins — candidate AI model screening (run-regression-benchmark, and the Management Portal's /api/benchmark-run route that triggers it) against our curated internal regression test set, to evaluate models outside the Gemini family before any production adoption decision. Never used in a customer-facing analysis flow, and never a fallback from Vertex AI | A regression test-set image (curated internal QA photos, not customer uploads) and the analysis prompt, routed to whichever third-party model the admin selects for the screening run | Varies by the model selected — OpenRouter forwards each request to that model's own hosting provider, so no single, fixed data residency applies |
| Stripe, Inc. | Payment processing, Tax | Billing info, transactions | US (SCCs) |
| Brevo (Sendinblue) | Email marketing & transactional | Email, preferences | EU (France) |
| Cloudflare (R2) | Image storage (galleries) | Gallery images | EU/US (Cloudflare Inc.) — DPF + SCCs |
| Vercel, Inc. | Website hosting | IP, request logs | US (SCCs) |
| GitHub, Inc. | Bug tracking for the desktop app: one issue in a private repository for each new kind of error report (Section 2.5) | Error type and message, stack trace, the step of the analysis, app version, operating system, processor and free memory, sport category or preset name, and an excerpt of the app's diagnostic log (which can contain file names and other identifiers) | US (GitHub, Inc.) — Data Privacy Framework |
| Google Fonts (Google LLC) | Delivery of the desktop app's font (JetBrains Mono) to the main window | Your IP address and the technical details every web request carries, such as your operating system; no account data | US (Google LLC) — Data Privacy Framework |
| Google Analytics | Website analytics | Anonymized usage data | US (SCCs) |
| Microsoft Clarity | UX analytics | Session recordings | US (SCCs) |
| Meta Platforms | Ad conversion tracking (Pixel + server-side Conversions API) | Sanitized events; SHA-256 hashed email/user ID for server-side events | US (SCCs) |
Where data is transferred outside the European Economic Area (EEA) — for example billing data to Stripe or an admin's test prompt to Google AI Studio, both as described in Section 4.1 — we rely on Standard Contractual Clauses (SCCs) approved by the European Commission, the Data Privacy Framework (DPF) where the recipient participates in it, or the data processor's adherence to an adequate level of protection as determined by the Commission. Most of your photographs and analysis data are not part of this: for the sport categories configured to use Google Cloud Vertex AI, your photos are processed exclusively in the EU (Section 4.1), so they are not transferred outside the EEA in the first place. You may request a copy of the applicable safeguards by contacting us.
We may disclose your data if required by law, regulation, legal process, or governmental request, or to protect the rights, property, or safety of RaceTagger, our users, or the public.
We retain your data for the following periods:
As a data subject, you have the following rights under GDPR. You may exercise these rights by contacting us at privacy@racetagger.cloud or through your account settings where applicable:
You have the right to obtain confirmation of whether we process your personal data and to receive a copy of that data. We will respond to your request within 30 days.
You may request correction of inaccurate personal data or completion of incomplete data. You can update your email and profile information directly in your account settings.
You may request deletion of your personal data. Upon receiving a valid erasure request, we will delete your account and associated data within 30 days, including the images and reference face photos you have uploaded to our Storage, except where retention is required by law (payment records, retained by our payment processor Stripe for tax compliance), or would break aggregate records shared with other users (your account identifier may remain in the affected-user list of a platform-wide error report, since removing it would corrupt the affected-user count for other, unrelated accounts). Deleted data may persist in routine backups for up to a further 7 days. Account deletion can be initiated through your account settings or by contacting us. When you delete your account yourself in your account settings, the files of your reference face photos are not yet deleted from our Storage automatically (Section 2.4): tell us at privacy@racetagger.cloud and we will delete them.
You may request that we restrict processing of your data in certain circumstances, such as while we verify the accuracy of contested data or assess whether our legitimate interests override your rights.
You have the right to receive your personal data in a structured, commonly used, machine-readable format (JSON). You can export your data through your account settings; the export includes your account and subscriber profile, token balance and transactions, purchases, executions and analysis results, uploaded image metadata (file names and storage paths, not the image files themselves), application launch history, the metadata and URLs of reference face photos in your own presets (not the facial feature vectors used for matching — contact us if you need those), and your recent error reports. Token transactions, purchases, executions, analysis results, and uploaded images are capped at your 1,000 most recent each, error reports at your 500 most recent, and application launches at your 100 most recent; if you have more than that, the export response says so and you can contact privacy@racetagger.cloud for a complete export. RaceTagger Assistant conversations are not included in the export, because no such data is stored yet — the feature is still in development (see Section 14).
You may object to processing based on legitimate interests (such as telemetry collection or AI training). We will cease processing unless we demonstrate compelling legitimate grounds. You may also object to direct marketing at any time, and we will comply without exception.
Where processing is based on consent (analytics cookies, marketing emails, advertising tracking), you may withdraw consent at any time. Withdrawal does not affect the lawfulness of processing carried out before withdrawal.
You have the right to lodge a complaint with the Italian Data Protection Authority (Garante per la Protezione dei Dati Personali) at www.garanteprivacy.it, or with the supervisory authority in your EU Member State of residence.
These cookies are strictly necessary for the operation of our website and cannot be disabled:
These cookies help us understand how visitors interact with our website:
You can manage your cookie preferences at any time through the cookie settings banner on our website. The banner also reappears automatically if we update this Cookie Policy in a way that changes what it discloses (a new version number) — a consent recorded under an older version is treated as not decided. You may also configure your browser to block or delete cookies, although this may affect website functionality.
The desktop application stores the following data locally on your device:
The desktop application communicates with our servers for the following purposes:
Analysis always needs an internet connection. Even when local ONNX models do part of the work, the desktop app uploads a downscaled copy of each photo (Section 2.3), and token authorization and result storage also happen online. Offline, you can review and export results that were already analyzed.
Our Service is intended for professional and semi-professional photographers and is not directed to individuals under the age of 18. We do not perform age verification at signup beyond the account creation flow itself. We do not knowingly collect personal data from children. If you believe a child has provided us with personal data, please contact us and we will promptly delete it.
We implement appropriate technical and organizational measures to protect your personal data, including:
While we strive to protect your data, no method of electronic storage or transmission is 100% secure. We cannot guarantee absolute security.
We may update this Privacy Policy from time to time to reflect changes in our practices, technology, or legal requirements. When we make material changes, we will:
We encourage you to review this Privacy Policy periodically. Continued use of the Service after changes constitutes acceptance of the updated policy.
The Service uses one form of fully automated decision-making with a direct effect on you: our device-limit check, run at login, can automatically deny access to your account if it determines you have exceeded the number of devices allowed. This decision is based on the device fingerprinting described in Section 3.4.
If you believe this decision was made in error, you can request human review by contacting info@racetagger.cloud. Beyond this device-limit check, we do not carry out profiling or automated decision-making that produces legal effects or similarly significantly affects you. Race number detection, participant matching, and scene classification (Sections 2.3–2.4) are analysis outputs you review and act on yourself; they are not decisions we make about you.
If you use the Service as a photographer or business based outside the European Economic Area, you remain the data controller for the photographs you submit and the people depicted in them, under the law applicable to you. RaceTagger processes that data as your processor from our infrastructure in the EEA, under the Data Processing Agreement described in Section 4 and available at /dpa. This does not change the international-transfer safeguards described in Section 4.2 for the sub-processors we ourselves use.
We are developing an in-app conversational assistant ("RaceTagger Assistant") that can answer questions about your account and, for subscribers, take actions on your behalf inside the Service. In line with Article 50 of the EU AI Act, you are informed that this feature is an artificial intelligence system: when you interact with it, you are talking to an AI, not a human.
This feature is still in development at the time of writing. Once live, conversations with the Assistant will be processed within the EU and retained for 90 days; database tables to store them do not exist yet, which is also why Assistant conversations are not currently part of the data export described in Section 6.5. We will update this section with any change to that design before the feature launches.
For any questions, concerns, or requests regarding this Privacy Policy or our data practices:
Privacy inquiries: privacy@racetagger.cloud
General inquiries: info@racetagger.cloud
Legal matters: legal@racetagger.cloud
Abuse reports: abuse@racetagger.cloud
Data Controller: Federico Pasinetti
Website: https://racetagger.cloud
This Privacy Policy is effective as of October 10, 2026.