Skip to main content

🧭 Data Protection Impact Assessment

GDPR Art. 35 / UK DPA 2018 Schedule 1 β€” formal assessment of the AI analysis pipeline (pose detection, ball tracking, shot classification).


1. Controller​

  • Entity: AceSense Technologies
  • Primary contact: dpo@acesense.io
  • Supervisory authorities of record: to be confirmed once the EU + UK representatives are designated.

2. Processing described​

AspectDetail
PurposeAutomated coaching feedback on a user's own tennis video
Lawful basisConsent (GDPR Art. 6(1)(a)) for the AI analysis itself; contract (Art. 6(1)(b)) for account + delivery
Categories of dataRaw video (personal data β€” face, body visible); derived pose keypoints, ball trajectory, racket contact; shot-type labels; AI whole-video read (timestamped shot events, per-player skill ratings and coaching notes, players referenced by court position only β€” never by name or identity); session metadata
Categories of data subjectsAccount holders (β‰₯16); incidental persons captured in the background of the video
VolumePer user: 0–20 videos/month. Per video: up to 2 h, ~2 GB, ~216 000 frames
Data sourcesUser-uploaded video, user-entered profile
Recipients / sub-processorsFirebase (EU), RunPod (EU/US GPU), Google Cloud Vertex AI (Gemini video analysis β€” global endpoint: inference may run outside the EU, incl. US; video is read in place from the EU storage bucket via gs:// URI), Resend (US β€” transactional email), Apple and Google Play (native subscription events), Stripe (hosted test billing and subscription events)
RetentionRaw video: 30 days on Firebase Storage. Analysis JSON + pose coordinates: until account deletion
Cross-border transfersVendor-hosted processing may involve EU→US transfers. Applicable DPA, SCC/UK Addendum, Data Privacy Framework status, account region, and onward processors must be verified and recorded per vendor before production use.

3. Necessity + proportionality​

  • Is each data category necessary? Pose keypoints are the minimum required to reason about technique. We do not store or transmit face embeddings. We do not retain audio. We down-sample video to 30 fps before inference.
  • Alternative considered: in-device inference. Rejected because the models (TrackNet, MediaPipe Pose, CatBoost shot classifier) need ~6 GB GPU RAM and would drain phone batteries within 3–4 minutes of footage. Server-side processing is the least-intrusive option that still delivers the feature.
  • Data minimisation: background individuals in the frame are treated as incidental; no pose is extracted for non-player detected figures unless they are on-court.
  • Retention minimisation: raw video auto-deletes at 30 days; the derived JSON is orders of magnitude smaller and retains no biometric identifier.

4. Risks to rights and freedoms​

#RiskLikelihoodSeverityInherent risk
R1Video intercepted in transitLowHighMedium
R2Unauthorized access to Storage objectsVery lowHighMedium
R3Sub-processor personnel view contentLowMediumLow-Medium
R4Re-identification of incidental bystandersMediumMediumMedium
R5Pose coordinates reused for biometric identificationVery lowHighMedium
R6Retention overrun β€” videos not deleted at 30 daysMediumLow-MediumMedium
R7Minor (under 16) evades age gateMediumMediumMedium
R8AI produces wrong / harmful coaching adviceMediumLowLow-Medium
R9Cross-border transfer invalidated (e.g. DPF annulled)LowHighMedium
R10Breach notification exceeds 72-hour windowLowHighMedium

5. Mitigations in place​

RiskMitigation
R1TLS 1.3 for all uploads. Firebase enforces HTTPS.
R2Storage security rules enforce request.auth.uid == userId for reads and writes. 2 GB size cap. Admin SDK bypass only from Cloud Functions.
R3Vendor access controls and audit logs reduce exposure. Firebase acceptance evidence and the applicable RunPod, Resend, Apple, Google Play, and Stripe terms remain tracked actions; do not claim all are executed.
R4Bystander faces are not extracted; only body-pose keypoints of the player are used for coaching. We do not publish a feature that identifies bystanders.
R5Pose data is stored per-frame as joint coordinates, not as embeddings. We do not build any model that maps pose β†’ identity. Internal policy prohibits such use; periodic code review confirms.
R6processVideoOnUpload schedules Storage objects for deletion after 30 days via an object-lifecycle rule. Scheduled function verifies weekly.
R7Sign-up stores an age attestation, not date of birth. Users attest to 16+, or 18+ in India; this is not independent age verification.
R8In-app disclaimer ("AI-generated β€” use alongside human judgement"). No medical claims.
R9Verify and execute each vendor's applicable DPA and transfer mechanism before production use; retain account-specific evidence and reassess if a transfer mechanism changes or is invalidated.
R10Breach runbook (see compliance/breach-response.md) drills this quarterly.

6. Residual risk + decision​

The technical controls support a preliminary low–medium residual-risk assessment, but this draft has not been approved by a DPO or counsel. Production use of a vendor with an open DPA/transfer action, including Stripe live mode, must wait for that action and the relevant privacy notice to be completed. The approver must decide whether any residual risk remains high enough to require consultation under Art. 36(1).

7. Review cadence​

  • Annually, or sooner if:
    • A new category of data is introduced (e.g. audio).
    • A new sub-processor is added.
    • Retention periods change.
    • A breach occurs.
    • A new jurisdiction comes online (e.g. opening to India DPDP Act rule-finalisation).

8. Consultation of data subjects​

Not performed formally. The product records affirmative acceptance of the AI consent dialog before upload, but this repository contains no validated decline-rate or complaint-volume evidence. Those metrics must not be claimed until they are obtained from an approved source.

9. Sign-off​

RoleNameDate
Data Protection Officer(to assign)β€”
Engineering Lead(to assign)β€”
Product Lead(to assign)β€”