Effective October 21, 2026

Privacy · Cleavemark

Do not eat, lick, or ingest a specimen. Some minerals are toxic or radioactive. Handle unknown pieces with care, wash your hands, and avoid breathing dust. A photo identification is not guaranteed. It is not a valuation, an appraisal, or a legal decision about what you may collect, keep, or sell.

This policy covers Cleavemark, published by Montgomery Appworks LLC in Oklahoma. Its title is Cleavemark: AI Rock, Crystal & Fossil ID. The bundle ID is com.montgomeryappworks.cleavemark. Cleavemark is not a children’s app, and it is not in the Kids category or Designed for Families. The age rating is 4+ on the App Store and Everyone on Google Play.

Identification photos

When you submit a photo for identification, the app resizes it on your device to a JPEG about 1024 pixels wide and sends it to our Cloudflare Worker. The app never calls OpenAI directly. Only the Worker does, and only when its key is set. The key is a Worker secret and is not in the app. The Worker forwards the JPEG to OpenAI’s API. The model is gpt-4.1-mini. The request sets store: false, so the completion is not kept in OpenAI’s stored-completions log. OpenAI’s API platform does not use API data to train models by default, and we do not opt in to sharing data for training.

Photo bytes are not written to Workers KV and are not kept in Worker logs. Logs scrub secrets and are truncated to 300 characters. The phone keeps a copy only if you save the specimen.

Optional notes

On the review screen you can add where you found it, a size in millimeters, hardness or scratch notes, and a streak color. The where-found field is plain text, not a street address. Blank notes are dropped. Each note is at most 500 characters. Anything you type is sent with the photos as a note. It is not your GPS location. The Worker treats the notes as untrusted observations, not as facts. They are folded into the cache-key hash. The raw note text is not stored as its own server value.

Practice samples and rock of the day

Practice samples and the rock of the day are answered from the catalog inside the app. They do not call the Worker and do not upload a photo. They stay on the device for that session, and on the device if you save one.

Install id, quota, and result cache

The app creates a random install id on the device. That id is the quota key. When RevenueCat is enabled, it is also the RevenueCat app user id. Cloudflare KV holds a count for that install id, and a cache of the identification result keyed by a hash of the photo and the notes. The cache stores the identification, not the photo. A separate marker records that this install has already seen that result. The same photos and the same notes do not call OpenAI again and do not use a second free identification. Different notes are a new identification.

The count increases once per new photo identification when the install is not subscribed. A subscription skips the cap. Repeats and practice samples do not increase it. Deleting data on the phone does not delete the install id or the server count, so the three free identifications do not reset.

The count and the cache are saved with no expiration. They remain until someone deletes them.

On this device only

These stay on the device: the install id, the collection and saved photos, typed save-form notes, GPS coordinates after you ask for them, appearance, the onboarding flag, the learning streak, the daily-reminder flag, a local entitlement cache until RevenueCat is enabled, attribution, and the analytics log. The collection includes names, notes, dates, places, coordinates, and saved photo files. Export is a JSON file you share from the app. Uninstalling the app removes what is stored on the device.

Location

Location is used only after you choose “Use current location” while saving a specimen. The app asks for when-in-use permission, then saves a place label on that specimen. The label stays on the device. It is not sent to the Worker or to OpenAI. The where-found note on the review screen is separate, and it is sent with the identification request if you typed it.

On-device analytics

Cleavemark keeps an analytics log on the device, the last 200 events. It drops details that look like photos, locations, notes, emails, or secrets. That log is not sent to an analytics service. Cleavemark does not include an advertising SDK, a crash-reporting SDK, or a product-analytics SDK. There is no Sentry, Firebase, Amplitude, or Mixpanel, and no crash reports. Cleavemark does not track you across apps or websites.

When RevenueCat is enabled, the app sends two subscriber attributes: the first-open source and the first-open campaign. A normal install is recorded as organic. The app does not collect device identifiers and does not set an email.

Subscriptions

Three identifications are free for the life of the install. The collection, the field guide, practice samples, and the rock of the day do not use those three. The annual plan is $24.99 per year with a 7-day trial. When the trial ends, Apple or Google charges $24.99, then the same amount each year until you cancel. The monthly plan is $4.99 per month with no trial. $4.99 is charged today, then every month until you cancel. There is no weekly plan. “Continue with 3 free identifications” does not charge you.

Subscriptions use RevenueCat when its keys are set. Until then, subscription status stays on the device and the app does not contact RevenueCat. Web builds do not contact RevenueCat. Apple and Google process the charge. The Worker may ask RevenueCat whether the install has the premium entitlement. The paywall states the price before a second tap.

Notifications

Notifications are scheduled on the device only: an optional rock of the day at 9:00, and a reminder the day before a stored trial end. There is no push provider and no notification server.

Accounts and deletion

There is no account, no Sign in with Apple, and no shared cloud container.

Settings, then Delete data on this device, asks you to confirm with “Yes, delete data on this device” or “Keep my data.” Confirming removes the collection, the older collection record, the streak, the notification preference, appearance, attribution, the on-device event log, and the local entitlement cache. It returns you to onboarding.

Deleting data on this device does not cancel an Apple or Google subscription. It does not delete the install id. It does not delete the quota count, the seen markers, or the result cache on the Worker. Restore purchases reloads a real subscription from the store. Uninstalling the app removes on-device data and does not cancel a subscription.

Services

Cleavemark has no ads. We do not sell data.

Contact

Montgomery Appworks LLC, Oklahoma

support@montgomeryappworks.com