Privacy Policy
Last updated: May 19, 2026
RiichiCam is a free, open-source riichi mahjong scoring tool. This policy explains what data is collected, why, and what choices you have. We collect as little as possible.
1. What we collect
- Camera images — Photos you take are sent to our detection API. They are not stored unless you explicitly opt in (see §3 below).
- Training metadata (opt-in only) — When you consent to contribute training data, each saved image is accompanied by: a timestamp, the scan mode used, an anonymous session ID (randomly generated per session, not linked to you), image dimensions, and the model's tile predictions.
- Analytics — We use Vercel Analytics (cookieless) and Google Analytics 4 to collect anonymous usage statistics such as page views and session counts. Neither service is configured to collect personally identifiable information.
- Local storage — Your scoring preferences and training consent choice are saved in your browser's local storage. This data never leaves your device.
We do not collect your name, email address, IP address, or any account information. RiichiCam has no user accounts.
2. Camera access and image processing
Camera access is requested only when you use the tile-scanning feature and is never active in the background. Each image is sent over HTTPS to our server, forwarded to a tile detection model, and the result is returned to you. The image is then discarded from server memory.
Images may incidentally capture your hands or surroundings. We do not use these images for any purpose other than tile detection, and they are not retained unless you opt in.
3. Training data contribution (opt-in)
If you choose to help improve RiichiCam, your scanned images and accompanying metadata are stored privately in Vercel Blob storage. This data is used solely to retrain and improve the tile detection model. It is not shared with third parties, sold, or used for advertising.
You can withdraw consent at any time using the toggle in the app footer. Withdrawing consent stops future saves but does not automatically delete previously saved images. To request deletion of your contributed data, contact us at the address in §8.
4. Cookies and analytics
- Vercel Analytics — Cookieless, privacy-preserving analytics. No cookies are set. No cross-site tracking.
- Google Analytics 4 — Sets first-party cookies (
_ga,_ga_*) to distinguish sessions. Data is anonymised and aggregated. IP anonymisation is enabled by default in GA4. You can opt out via Google's opt-out browser add-on.
5. Third-party services
- Roboflow — Primary tile detection inference. Images sent for detection are subject to Roboflow's privacy policy.
- Google Gemini — Fallback tile detection. Subject to Google's privacy policy.
- Vercel — Hosting, serverless functions, Blob storage, and analytics. Subject to Vercel's privacy policy.
- Google Analytics — Usage analytics. Subject to Google's privacy policy.
6. Data retention
- Detection images (not opted-in) — Discarded immediately after the API response is returned.
- Training images (opted-in) — Retained indefinitely for model training. Deleted upon request (see §8).
- Analytics — Retained per each service's default policy (Google Analytics default: 14 months).
7. Your rights
Depending on where you live, you may have the right to:
- Access the training data associated with your session
- Request correction or deletion of your contributed images
- Withdraw consent for future data collection at any time (in-app toggle)
- Lodge a complaint with a data protection authority (EU residents: your national DPA)
Because we do not collect identifying information, data subject requests are fulfilled on a best-effort basis using the anonymous session ID stored in your browser's local storage. To exercise any right, email us with your session ID (visible in local storage under the key trainingSessionId) and we will respond within 30 days.
8. Children's privacy
RiichiCam is not directed at children under 13. We do not knowingly collect personal information from children. If you believe a child has contributed data, contact us and we will delete it promptly.
9. Changes to this policy
If we make material changes, we will update the "Last updated" date at the top of this page. Continued use of RiichiCam after changes constitutes acceptance of the revised policy.
10. Contact
Questions, deletion requests, or data subject requests: support.riichicam@gmail.com