Most health apps bury their data practices in privacy policies nobody reads. We do the opposite. Every piece of data you can share, every transformation we apply, every promise we make — all of it is documented here, in plain language.
halfmarble works completely, fully, and powerfully without sharing any data beyond your own device. You get every feature, every dose calculation, every AI answer, without contributing a single byte to our backend. That's the default, and it is never changed without your explicit action.
If you choose to join the fight beyond your own case, you can opt in to share anonymized, aggregated patterns with researchers. Everything below explains exactly what that means.
SteadyDoseTool knows both when you dose and when you eat. That combination is genuinely novel research material — the medical literature on levodopa absorption under real-world fasting and eating patterns is surprisingly thin. No existing study captures this at the scale we can.
| Field | On Device | Shared (opt-in) | How |
|---|---|---|---|
| Dose time | YES | BINNED | 2-hour bins (e.g., "7-9 AM"), not exact timestamps |
| Dose amount | YES | YES | As % of full dose (e.g., "half dose"), never mg |
| Drug class | YES | YES | "levodopa IR" — never brand name (e.g., "Sinemet") |
| Fasting state at dose | YES | YES | boolean (fasted vs fed when dose was taken) |
| Fasting duration at dose | YES | BINNED | Hours fasted when dose was taken, binned (0-4h, 4-8h, 8-12h, 12-16h, 16-20h, 20h+) |
| Dose-to-meal interval | YES | BINNED | Time between dose and nearest meal, binned (under 30min, 30-60min, 1-2h, 2-4h, over 4h) |
| Eating window compression | YES | YES | Fasting:feeding ratio (e.g., "23:1", "16:8") — first-ever real-world PD distribution |
| Protein-near-dose flag | YES | YES | Boolean only — whether protein was logged within 30 min of the dose |
| Subjective ON/OFF rating | YES | YES | 1-10 scale, linked to fasting state for correlation |
| Time in therapeutic range | YES | YES | % for the day |
| Exact meal times | YES | NEVER | Only binned/relative intervals leave the device |
| Specific foods or meal contents | YES | NEVER | Stays on your device. Period. |
| Caloric intake | YES | NEVER | Stays on your device. Period. |
| Your name | YES | NEVER | Stays on your device. Period. |
| Your location | YES | NEVER | Stays on your device. Period. |
| Medication brand | YES | NEVER | Drug class only; brand stays on device |
| Concurrent conditions | YES | NEVER | Stays on your device. Period. |
| Field | On Device | Shared (opt-in) | How |
|---|---|---|---|
| Fasting duration | YES | BINNED | Grouped into bands (e.g., "16-18h"), not exact hours |
| Fasting stage reached | YES | YES | Stage ID only (e.g., "ketosis", "deep autophagy") |
| Subjective hunger/energy markers | YES | YES | 1-10 scale values |
| Ketone / glucose readings | YES | YES | Aggregated with time band |
| Exact start/end timestamps | YES | NEVER | Only relative durations leave the device |
| Session notes | YES | NEVER | Stays on your device. Period. |
| Your name, location, age | YES | NEVER | Stays on your device. Period. |
| Concurrent medications | YES | NEVER | Stays on your device. Period. |
When you ask a question to the AI in either SteadyDoseTool or SteadyFastingTool, the same rules apply. Your conversation text stays on your device. What leaves (if you opt in) is only the topic cluster and your feedback on how useful the answer was.
| Field | On Device | Shared (opt-in) | How |
|---|---|---|---|
| Query topic | YES | CLUSTERED | Semantic cluster ID only, never raw text |
| Response helpfulness | YES | YES | 1-5 rating |
| Citation click-through | YES | YES | DOI only |
| Full conversation text | YES | NEVER | Stays on your device. Period. |
| Personal health details mentioned | YES | NEVER | Stays on your device. Period. |
| Specific medications mentioned | YES | NEVER | Stays on your device. Period. |
For Parkinson's patients, cognitive fluctuations matter as much as motor fluctuations. Brain fog, mood, apathy, and mental fatigue track closely with medication cycles and metabolic state — but nobody has this data at scale because clinical scales are administered in clinics once or twice a year. Halfmarble captures it continuously at home so you can see your own patterns and (optionally) contribute to research. Mental state data is subject to stricter safeguards than other categories.
| Field | On Device | Shared (opt-in) | How |
|---|---|---|---|
| Cognitive clarity | YES | YES | 1-10 scale, aggregated with k≥100 |
| Brain fog | YES | YES | 1-10 scale, aggregated with k≥100 |
| Mood | YES | YES | 1-10 scale (sad ↔ content), aggregated with k≥100 |
| Anxiety level | YES | YES | 1-10 scale, aggregated with k≥100 |
| Apathy / motivation | YES | YES | 1-10 scale, aggregated with k≥100 |
| Mental fatigue | YES | YES | 1-10 scale (distinct from physical fatigue) |
| Overall feeling | YES | YES | 1-10 composite self-rating |
| Sleep quality | YES | YES | 1-10 scale for last night's sleep |
| Sleep duration | YES | BINNED | Grouped into bands (e.g., "6-8h") |
| REM behavior events | YES | YES | Boolean (acting out dreams — a PD prodrome marker) |
| Pain level | YES | YES | 1-10 scale (PD pain is underreported) |
| Bowel movement event | YES | YES | Boolean with timestamp — constipation is a major PD complaint and prodrome marker |
| Bowel movement consistency | YES | YES | Bristol Stool Scale (1-7) |
| Days since last bowel movement | YES | YES | Auto-computed integer (constipation severity indicator) |
| GI symptoms (composite) | YES | YES | 1-10 scale covering bloating, nausea, discomfort |
| Free-form mental state notes | YES | NEVER | Stays on your device. Always. |
| Contextual journal notes | YES | NEVER | Stays on your device. Always. |
| Diagnosed mental health conditions | YES | NEVER | Stays on your device. Always. |
Parkinson's is traditionally assessed in a clinic every 3-6 months using the MDS-UPDRS scale. Continuous home-based motor tracking is missing from the literature. SteadyDoseTool captures it two ways: focal symptom logging (track body-specific symptoms like foot dystonia, hand cramping, by location) and objective tapping tests that use the phone's touchscreen to measure motor function — validated against clinical UPDRS Part III finger tapping.
The phone test takes 10-20 seconds. Results correlate with dose timing automatically. Over time, you see objectively whether your predicted PK peaks match your actual motor peaks. No existing dataset combines PK prediction + objective motor measurement + dose timing + fasting state at scale.
| Field | On Device | Shared (opt-in) | How |
|---|---|---|---|
| Body location | YES | YES | Left foot, right foot, left hand, right hand, jaw, neck, etc. |
| Sensation type | YES | YES | Curling, cramping, cotton-wad, twisting, tingling, pain, tremor, stiffness |
| Severity | YES | YES | 1-10 scale |
| Duration | YES | BINNED | Bands: <5min, 5-30min, 30-60min, 1-3h, 3h+ |
| Time since last dose (when symptom occurred) | YES | BINNED | Auto-computed from dose log, shared as bins |
| Fasting state at onset | YES | YES | Boolean (fasted vs fed) |
| Free-text symptom notes | YES | NEVER | Stays on your device. Always. |
| User-identified triggers | YES | NEVER | Stays on your device. Always. |
| Field | On Device | Shared (opt-in) | How |
|---|---|---|---|
| Total tap count | YES | YES | Number of taps in test window (speed proxy) |
| Mean inter-tap interval | YES | YES | Milliseconds between taps |
| Rhythm variance | YES | YES | Std dev of inter-tap intervals (rhythm regularity) |
| Decrement ratio | YES | YES | Slowing from first 5s to last 5s (bradykinesia proxy) |
| Hesitation count | YES | YES | Number of pauses longer than 2x mean interval |
| Normalized motor score (0-100) | YES | YES | Composite computed on device from the above |
| Side tested (left/right) | YES | YES | Per-hand results tracked separately |
| Time since last dose | YES | BINNED | Bins: <30min, 30-60min, 1-2h, 2-4h, 4h+ |
| Raw tap coordinates | YES | NEVER | Per-tap x/y positions stay on device |
| Raw timing series | YES | NEVER | Individual timestamps stay on device |
| Tap pressure data | YES | NEVER | Raw pressure values stay on device |
| Device model | YES | NEVER | Potentially identifying; stays on device |
Glucose Ketone Index (GKI) was developed by Thomas Seyfried (one of the researchers in our Glass Box) as a measure of the depth of therapeutic ketosis. Three of halfmarble's Foundational 60 researchers — Seyfried, Phillips, and Cooper — use GKI in clinical practice. No large-scale real-world GKI dataset for Parkinson's patients exists. SteadyFastingTool users who opt in contribute to the first one.
Halfmarble supports both blood finger-prick dual meters (Keto-Mojo GK+, Precision Xtra) and electrochemical breath ketone devices (KETOSCAN Smart, Biosense) paired with glucose meters or CGMs. Electrochemical breath acetone sensors are measurement-grade — validated against laboratory reference at R² >0.97 — not trend indicators.
Not all breath ketone devices are equal. The cheap breathalyzer-class meters (typically $10–50) use Semiconductor Metal Oxide (SMO) sensors that rely on changes in electrical resistance of a metal oxide film. They suffer from cross-sensitivity to other VOCs, temperature drift, non-linear response curves, and poor repeatability. At best they are trend indicators. At worst they are misleading.
The devices halfmarble recommends (KETOSCAN Smart, Biosense) use electrochemical sensors — the same sensor class used in evidentiary breath alcohol testing. They produce an electrical current directly and linearly proportional to VOC concentration.
If you are considering a breath ketone device, verify it uses an electrochemical sensor before purchasing. Your GKI calculations depend on it. Saving $100 on the sensor costs you the accuracy that makes the entire dataset meaningful.
| Field | On Device | Shared (opt-in) | How |
|---|---|---|---|
| Blood glucose | YES | BINNED | Bands: <70, 70-99, 100-125, 126-180, 180+ mg/dL |
| Blood BHB (β-hydroxybutyrate) | YES | BINNED | Bands: <0.3, 0.3-0.5, 0.5-1.5, 1.5-3.0, 3.0+ mmol/L |
| Computed GKI | YES | BINNED | Bands: <1, 1-3, 3-6, 6-9, 9+ |
| Meter device class | YES | YES | Generic category only (keto_mojo, precision_xtra, etc.) |
| Device serial number | YES | NEVER | Potentially identifying; stays on device |
| Field | On Device | Shared (opt-in) | How |
|---|---|---|---|
| Breath acetone (ppm) | YES | BINNED | Bands: <2, 2-8, 8-20, 20-40, 40+ ppm |
| Estimated BHB (from acetone) | YES | BINNED | Converted via published calibration curve |
| Glucose (from any source) | YES | BINNED | Same bands as blood-based GKI |
| Computed GKI (breath-estimated) | YES | BINNED | Same bands, labeled as breath-estimated |
| In-transition flag | YES | YES | Boolean — breath lag possible during metabolic transitions |
| Breath device class | YES | YES | ketoscan_smart, biosense, etc. (class only, never serial) |
| Field | On Device | Shared (opt-in) | How |
|---|---|---|---|
| Raw glucose stream | YES | NEVER | Continuous time series stays on device |
| Daily mean glucose | YES | BINNED | Bands of daily averages |
| Time in range (TIR) | YES | YES | % of day with glucose in 70-140 mg/dL |
| Hypoglycemic events | YES | YES | Count of glucose <70 mg/dL events |
| CGM device class | YES | YES | dexcom_g7, libre_3, stelo, lingo (class only) |
Before any byte leaves your phone, your data goes through four stages of transformation. The raw data never leaves. Here's a concrete example for a single dose log:
k-anonymity with k≥50. A user's pattern only leaves the device after it can be combined with at least 49 others. If your pattern is too unique to be anonymized, it is held in a local queue and discarded after 30 days — never shared.
Differential privacy noise (ε=1.0) is added to all counts before transmission, so that even aggregated statistics cannot be reverse-engineered to individual users.
No IP addresses logged. Requests route through a relay that strips origin information server-side.
A list of things we will not do is often more useful than a list of things we will. These are binding commitments — part of halfmarble's formal business model and corporate governance. We are legally obligated to uphold them, not just morally committed. A violation would invalidate the entire trust model this project is built on.
IRB = independent ethics board that reviews human research studies. Published findings = the research becomes public knowledge, not a pharma asset.
Changing your mind is a one-tap operation. Settings → My Contributions → "Delete my shared data." Your records are marked for deletion immediately, and removed on the next aggregation cycle (at most 7 days).
You can opt out of individual categories (e.g., keep sharing PK data but stop sharing AI feedback) without losing access to any app features. Opt-in is never required.
You can also request a full export of everything you have ever shared. Because we never link patterns back to your identity, this is computed using your device's local contribution log — another reason the raw data never leaves.
There is a version of this app that could quietly collect raw data, sell it to the highest bidder, and burn trust later. We are not building that version. Halfmarble's commercial engine is Real-World Evidence (RWE) — anonymized Home Usage Data that helps researchers understand how chronic disease patients actually live and treat themselves at home. That only works if it is transparent, opt-in, and defensible to both patients and regulators.
The people fighting the same fight as us are the ones who make this work. Without their explicit, informed contribution, there is no model, no data, no research. Which is why every decision here starts from the same place: the default is local, contribution is a choice, and the choice is fully informed.