Last updated: 26 April 2026 Effective date: 26 April 2026


In short

JuraUp is a tracker for people on GLP-1 medications. We collect what you give us — your account, your profile, the doses and meals and weights you log — so the app can show those things back to you. We do not sell your data. We do not share it with advertisers. The only third parties involved are the ones that make the app work: a hosting provider, a crash-reporting service that never sees your medical values, an AI vendor that runs nutrition photo analysis only when you tap the button, and a payment service when you subscribe. You can export everything in one tap, and you can delete your account in one tap with a 30-day grace period. We are based in Alexandria, Egypt and we follow Egyptian Personal Data Protection Law 151/2020 and, for users in the European Union, the GDPR.

If anything below is unclear, write to [email protected] and we will explain in plain language.


1. Who we are

JuraUp is operated by Ahmed Hossam, a sole developer based in Alexandria, Egypt. The contact address on file is 13 Zaki Ragab, Smouha, Alexandria, Egypt. There is no registered company entity behind JuraUp at this time.

For the purposes of the European Union General Data Protection Regulation (GDPR) and the Egyptian Personal Data Protection Law 151/2020 (PDPL), Ahmed Hossam is the data controller for JuraUp.

You can reach us at [email protected] for any privacy question, request, or concern.

2. What we collect

We collect only what is necessary for JuraUp to work as a medication and wellness tracker.

2.1 Account information

When you create an account:

  • Email address (required) — used to sign in and to recover access to your account.
  • Password (required) — never stored as plain text. We hash your password with Argon2id (industry-standard, memory-hard hashing) and only the hash leaves your device.

2.2 Profile information

You provide this during onboarding so the app can personalise charts, reports, and the medication-level estimate:

  • Display name (you can leave this blank)
  • Date of birth
  • Sex (male / female / other)
  • Height
  • Starting weight, goal weight
  • Medication name
  • Current dose and frequency
  • Preferred language, units, and timezone

2.3 Tracking data

This is the substance of what JuraUp does. You log it; we store it so the app can show it back to you:

  • Doses (when, how much, injection site)
  • Weight measurements (when, how much)
  • Meals (calories and macros, with one of four entry sources: manual, barcode, food-name search, or AI photo scan)
  • Symptoms (severity 1–5 plus optional notes)
  • Water intake
  • Habits and their completion timestamps
  • Progress photos that you choose to take (stored encrypted; see § 5.1)

2.4 Diagnostics

If JuraUp crashes, we receive a crash report through Sentry. Each report contains the stack trace and exception type only. We do not send your user ID, your email, your medical values, or any in-app navigation history along with the report — we strip those before the report leaves your device.

2.5 What we do not collect

JuraUp does not request and does not collect:

  • Your physical or device location
  • Your contacts, calendar, or messages
  • Your microphone audio
  • Your advertising identifier
  • Your web-browsing history outside of JuraUp

You can verify this by inspecting the app's permissions on your device — JuraUp asks only for camera (for the AI scan and progress photos), photo-library access (so you can pick a photo instead of taking a new one), and notification permission (for dose reminders).

3. How we collect

We collect information directly from you through the app:

  • When you create an account, we receive your email and the Argon2id hash of your password.
  • When you fill out the onboarding wizard or edit settings, we receive your profile fields.
  • When you log a dose, weight, meal, or any other entry, we receive that entry.
  • When you take a progress photo, we receive an encrypted upload.
  • When you tap "Take a photo" in the AI nutrition scan, we receive that one photo for the duration of the scan request only (see § 5.3).

We never buy, scrape, or otherwise obtain information about you from third parties. Every byte of personal information we hold came from you typing it into the app or taking a photo with the app.

4. Why we collect (legal bases)

Under GDPR and Egyptian PDPL, we rely on the following legal bases for processing your personal data:

What Legal basis What it means
Account, profile, tracking data, photos Performance of contract (Art. 6(1)(b) GDPR; PDPL Art. 7) We need this to provide the JuraUp service you signed up for.
AI photo scan (each scan) Consent (Art. 6(1)(a) GDPR; PDPL Art. 7) Each scan happens only when you tap "Take a photo" or "Upload a photo" in the AI scan flow. You can use the rest of the app without ever sending a photo to AI.
Crash reports (anonymised) Legitimate interest (Art. 6(1)(f) GDPR) We use crash reports only to keep JuraUp working. The reports do not include any data that could identify you (see § 2.4). You can opt out in Settings.
Subscription billing Performance of contract When you subscribe, we share the necessary receipt info with the payments processor.

You can withdraw consent for the AI scan at any time by simply not using the AI scan feature; previous scans cannot be "un-sent" once they have already left the device.

5. Who we share with

We share only with the third parties listed below, only for the purposes stated.

We never sell your personal data. We never share it with advertisers, data brokers, marketing networks, or any party not listed here.

5.1 Cloudflare (hosting and storage)

  • What: encrypted progress photos (and, separately, encrypted database backups).
  • Where: Cloudflare R2 — a globally distributed object-storage service. The bucket is private and read only via short-lived signed URLs that the JuraUp backend issues.
  • Why: storing photos on a CDN is faster and more reliable than storing them inside the database.
  • How protected: the bucket is private; objects are encrypted at rest using AES-256 by Cloudflare's default server-side encryption.

We also use Cloudflare for DNS, HTTPS termination at the edge, and email forwarding for [email protected]. These services see request metadata (IP, user-agent) typical of any internet-routed traffic.

5.2 Contabo GmbH (backend server hosting)

The JuraUp backend — where your account, profile, doses, meals, weights, and other tracking data live — runs on a virtual private server provided by Contabo GmbH (Aschauer Straße 32a, 81549 Munich, Germany), with the server physically located in Contabo's EU data centre.

Contabo acts as a data processor under our instructions. Our processing relationship is governed by Contabo's published Data Processing Agreement at https://contabo.com/en/legal/data-processing-agreement/. Contabo's role is limited to operating the underlying virtual machine and storage; they do not have logical access to the database contents — only the JuraUp backend process does.

For users in the EU, your tracking data stays in the EU when stored at the database layer (Contabo Munich + Cloudflare R2 origin region).

5.3 OpenAI (AI photo scan only — and only when you use it)

When — and only when — you tap the AI scan in the Nutrition tab and choose a photo, the JuraUp backend forwards that single photo to OpenAI's gpt-4o-mini Vision model for analysis. The model returns an estimated nutrition breakdown which the app shows you.

What we send to OpenAI: one image you chose, a short instruction prompt asking for a nutrition analysis. We do not send your name, your email, your other tracking data, or any other personal information.

What OpenAI does with it: OpenAI may retain image inputs for up to 30 days for abuse monitoring per their standard API terms (current as of this policy's date — see https://openai.com/policies/api-data-usage-policies/ for the up-to-date text). We are not enrolled in OpenAI's Zero Data Retention programme at this time. After the 30-day window, OpenAI deletes the input.

OpenAI processes the image in the United States. For EU users, this is an international transfer; OpenAI relies on the EU Standard Contractual Clauses for this transfer.

If you do not wish to send any photo to OpenAI, simply do not use the AI scan feature. The other three nutrition entry methods (barcode, food-name search, manual entry) do not contact OpenAI at all.

5.4 Sentry (crash reporting — anonymised)

When JuraUp crashes, the Sentry SDK sends a crash report to Sentry's German region (host o4511282196643840.ingest.de.sentry.io). The crash report contains:

  • The stack trace and exception type
  • The Sentry-generated installation identifier (so we can group crashes from the same installation, but not from a particular user)
  • A platform identifier (e.g. "Android 14")

The crash report does not contain your user ID, your email, your medical values, your in-app navigation, or any other information about you. The JuraUp app actively replaces those fields with 'anonymous' and an empty list before any event leaves your device. You can verify this in the source file lib/core/observability/observability.dart.

For EU users, crash data stays in the EU (Germany region).

You can opt out of crash reporting in Settings → Privacy → Analytics opt-out. (Note: the opt-out also covers any future analytics; in v1 only crash reporting is active.)

5.5 RevenueCat (when you subscribe)

If and when you subscribe to JuraUp Premium, the RevenueCat SDK receives the receipt issued by Apple App Store or Google Play and sends it to RevenueCat's servers for verification and entitlement tracking. RevenueCat sees your platform purchase identifier and subscription state, never any health or medical data.

RevenueCat operates from the United States. EU users' data is transferred under Standard Contractual Clauses.

If you do not subscribe, no data is sent to RevenueCat at all.

5.6 Open Food Facts (barcode / food-name search)

When you scan a barcode or search a food name in the Nutrition tab, the JuraUp app contacts Open Food Facts at world.openfoodfacts.org directly from your device. Open Food Facts receives:

  • The barcode or search term
  • Your device's IP address (typical of any web request)

Open Food Facts is a non-profit, free, open-source food database. They do not see your account, your name, your tracking data, or anything else. If you do not use barcode scan or food-name search, your device never contacts Open Food Facts.

5.7 Google Play / Apple App Store

The store you downloaded JuraUp from receives standard app-installation metadata (which you agreed to when accepting the store's own terms when you signed up for the store). JuraUp itself does not receive this metadata.

5.8 Required by law

If a court order or other legally binding request from an Egyptian court (or, for EU users, a court of the user's member state) compels us to disclose information, we will comply only to the extent legally required and notify you where lawful to do so.

6. International transfers

Your personal information may be processed outside your country of residence. The transfers and the safeguards we apply:

Where What goes there Safeguard
EU (Germany — Contabo Munich + Sentry DE region) Backend account + tracking data; Sentry crash reports None required for EU residents (intra-EEA). For non-EU residents, the standard cross-border rules of your jurisdiction apply. Contabo's processor relationship is governed by their published DPA (§ 5.2).
Cloudflare global edge Encrypted progress photos Cloudflare's Standard Contractual Clauses for any transfer outside the EEA.
United States OpenAI inputs (photos during AI scan); RevenueCat purchase receipts EU Standard Contractual Clauses (vendor-side).

7. How long we keep your data

  • Active accounts: we keep your data while your account is active so the app can show your history back to you.
  • AI scans: we store metadata about each scan (model, token counts, success or failure flag) — but not the photo bytes — for as long as your account is active.
  • Crash reports (Sentry): retained according to Sentry's retention policy for the project's tier (typically 30–90 days), then deleted by Sentry.
  • Photos in R2: retained while your account is active; deleted when you delete the account or remove the photo individually.
  • OpenAI inputs: out of our control, but per their standard API policy, retained up to 30 days for abuse monitoring then deleted.

When you request deletion (Settings → Account → Delete my account), we mark your account for deletion and start a 30-day grace period:

  • During the grace period, the account is disabled but the data is still recoverable. You can sign in again to undo the deletion within 30 days.
  • After 30 days, all your data is permanently deleted — this includes profile, doses, weights, meals, symptoms, water, habits, photos, and AI scan metadata. Foreign-key cascade rules in the database ensure no orphaned rows remain.

The 30-day grace period exists to protect you from accidental deletion. It is not a holdover designed to retain your data — it is a safety net.

8. Your rights

Under the GDPR (for users in the European Union) and the Egyptian PDPL (for users in Egypt and elsewhere), you have the following rights. JuraUp honours all of them, regardless of which jurisdiction you are in.

Right How to exercise
Access — get a copy of all data we hold about you Settings → Privacy → Export my data. The app produces a single JSON file with everything.
Rectification — correct inaccurate data Settings → Profile (for profile fields), or edit individual entries directly in the app.
Erasure — delete your account and all associated data Settings → Account → Delete my account. 30-day grace period applies (§ 7).
Portability — get your data in a structured, common format Same export feature as Access — JSON.
Object / Withdraw consent — opt out of optional processing Settings → Privacy → Analytics opt-out (turns off crash reports). For AI scans, simply do not use the AI scan feature.
Restriction of processing Email [email protected] with your request and we will action it within 30 days.
Lodge a complaint with a supervisory authority EU users: your national data protection authority. Egyptian users: the Personal Data Protection Centre (مركز حماية البيانات الشخصية).

We will respond to any request within 30 days as required by both GDPR and PDPL. If we need more time, we will tell you why and give you a revised timeline. There is no charge for any of the above.

9. Security

We treat security as a feature, not a checkbox.

  • In transit: every connection between the app and our backend uses HTTPS with TLS 1.2 or above. The Android release build refuses cleartext (HTTP) connections at the OS level — we proved this with aapt dump xmltree on the release APK.
  • At rest: progress photos in Cloudflare R2 are encrypted with AES-256 by Cloudflare's default server-side encryption. At-rest encryption of the backend database depends on Contabo's standard storage encryption — Contabo provides encrypted block storage by default on their VPS instances. We have not added an application-level encryption layer on top (such as Postgres TDE or column-level pgcrypto); if we ever do, this section will be updated.
  • Authentication: passwords are hashed with Argon2id (memory-hard, salt + parameters versioned per hash). Sessions use JWT access tokens (15 minutes) with rotating refresh tokens (30 days; rotated on every refresh). Stale refresh tokens are rejected.
  • Backend hardening: the backend is reachable only via Cloudflare's edge IP ranges; direct connection attempts to the origin server are dropped at the firewall.
  • Crash reports: scrubbed before they leave your device (§ 5.4).

We follow industry best practices, but no system is perfectly secure. If you become aware of a security issue, please email [email protected] so we can investigate and respond promptly.

10. Children

JuraUp is intended for adults aged 18 or older — the app deals with prescribed medication and adult bodies' weight and nutrition. We do not knowingly collect personal information from anyone under 18.

If you are a parent or guardian and you believe a child under 18 has created an account, please email [email protected] and we will delete the account.

11. Changes to this policy

We may update this policy if our data practices change. When we do, we will:

  • Update the "Last updated" date at the top.
  • For material changes, notify you in-app via a banner the next time you open the app, and (if you have a verified email on file) send you an email at least 30 days before the change takes effect.

You can always read the current version at https://juraup.app/privacy/. Continued use of JuraUp after the new version takes effect counts as acceptance.

12. Contact us

For any privacy question, request, or concern:

  • Email: [email protected]
  • Postal mail: Ahmed Hossam, 13 Zaki Ragab, Smouha, Alexandria, Egypt