Blunely privacy policy

Effective date: 30 October 2026.

Controller and contact

The controller and commercial operator of Blunely is the self-employed professional established in Madrid, Spain: Javier Miller Velasco, business address Calle de la Pícara Molinera, 38, 28041, Madrid, Madrid, España. Legal, privacy and rights contact: javiermillerv@gmail.com. Technical support: monica.bartolome.g@gmail.com. The developer provides technical maintenance on the operator's behalf according to the access and duties assigned by the operator; the operator determines the essential purposes and means and handles privacy requests.

Data and purposes

Blunely lets users save products, brands, categories, areas, notes, expiry and restock dates, routines, instructions, rules, pauses, calendar and history, reminder preferences and completion records. Product and hair progress photographs may show a person or reveal personal information; progress photos are associated with a routine, date and optional note. Recognized speech may be saved in notes or instructions when the user saves a form. These data are stored locally on the device, subject to the backups, dictation and subscription exceptions below; Blunely has no server of its own storing photos, routines, notes or progress records. A Blunely account is not required.

These data organize routines and products, record progress and display user-selected local reminders. Blunely is not a healthcare app: it does not request diagnoses or medical information, and the reviewed code performs no medical diagnosis or biometric identification. Please avoid putting medical information, health data or other especially sensitive information in photos and notes. If you add it on your own initiative, it may remain on the device and in backups you choose to create; the app cannot guarantee that such data will never appear. Blunely does not intend to process it deliberately or analyze it to infer a diagnosis. If the service changes to request or deliberately process special-category data, the applicable condition under Article 9 GDPR and corresponding measures must be reviewed first.

Local storage and photographs

Structured data and preferences are stored through AsyncStorage within the installation. Photos selected from the library or taken with the camera are converted to JPEG, compressed and reduced if their longest edge exceeds 1024 pixels. Blunely saves a copy in blunely-product-photos/ inside the app's private documents directory and stores a reference to it. Selecting a library photo does not delete the original. The app does not call a function to save camera photos to the library. Whether the resulting JPEG retains EXIF or location metadata has not been checked on a device. No upload of these photos to a Blunely server or RevenueCat was found; they may leave the device through backups and exports described below.

When a photo is replaced or deleted, the app removes its file after no local recovery generation needs it. An older copy or cache file may remain temporarily. Library originals and exported backups are outside that deletion.

Backups created by Blunely

With Premium, Blunely can create a ZIP containing data.json, notification-preferences.json, product and progress photos, and a manifest with a date, counts and integrity hashes. The ZIP is not encrypted: anyone with access can read photos, notes and other data. Hashes check integrity, not confidentiality. Restore validates the file and replaces this installation's data and preferences; it does not restore or prove a Premium subscription.

On Android, Save backup uses the system folder picker and Share backup uses the system share menu. On iOS, saving and sharing use the share menu; on web, the file is downloaded. The user chooses the destination, which may be local storage, cloud storage or a messaging/email app if offered by the system. The selected provider's terms and privacy policy also apply. Blunely cannot control or delete the saved copy there. Sharing creates a temporary ZIP in cache; recent files remain available for the destination to read, and the app attempts to remove files older than 24 hours on a later export. Without another export, a file may remain until the operating system clears the cache or the app is deleted. Selecting a file for restore creates a private temporary copy; the app attempts to remove it when the preview closes or on a later launch. The file picker may make another temporary copy, whose removal depends on the operation completing and on the operating system.

Operating system backups

The examined Android configuration and test AAB manifest allow Auto Backup (allowBackup=true) and show no rules excluding Blunely data. The local database and private photo files may be included in backups or device transfer, subject to Android settings, limits and version. On iOS, photos are stored in the documents directory, which may be included in device or iCloud backups; the reviewed code does not exclude them. The operating system manages these copies, and they may remain after data is deleted in Blunely. There is no guarantee that data and photos always restore together or that a backup has actually occurred.

Dictation and reminders

Dictation is optional. On Android, Blunely uses the device's default speech recognition service, which may be Google or another provider. On iOS, it uses Apple's Speech framework. The app does not require on-device-only recognition; audio or related data may be sent to the provider. Blunely receives the transcript and retains it in app data only when the user saves the form. Microphone and iOS speech recognition permissions support this feature. See the recognition provider's privacy information on your device.

Routine and product reminders are scheduled locally through system notifications, with permission where required. The reviewed code obtains no push token and configures no remote notification server. Reminder preferences and dates are saved locally; the operating system receives the content needed to display the reminder.

Premium, RevenueCat and stores

The app includes RevenueCat's react-native-purchases SDK. If a public API key is configured in the installed version, the SDK initializes when the app opens, may contact RevenueCat and creates an anonymous customer identifier because Blunely supplies no custom identifier. It checks offerings and the premium entitlement; Android subscriptions are managed through Google Play and RevenueCat; if iOS purchases are enabled, Apple's App Store and RevenueCat are involved. RevenueCat may receive device technical data, the anonymous identifier, transaction information and receipts or purchase tokens. Blunely's code does not send photos, notes or routines to RevenueCat or configure customer attributes or additional attribution tools. Dashboard integrations require separate verification.

The purchase screen is designed to show the price and period returned by the store, automatic renewal, management and purchase restoration. Public legal URLs are available. A purchase with a Google Play test card has been validated in the internal track; purchases with real payment methods have not yet been validated. Planned prices of €1.99/month and €15.99/year do not prove store prices. The store processes subscription payments. Javier may view the subscription and transaction data made available through RevenueCat and store dashboards; the actual scope depends on their settings and purchases made.

RevenueCat says it processes end-user information on behalf of customers and documents infrastructure, subprocessors and transfer terms in its data processing addendum. The specific account settings, including integrations and applicable safeguards, must be checked before public launch.

Legal bases and retention

The proposed bases under Article 6(1) GDPR are: performance of the requested service (b) for storing and displaying local data, selected photos, reminders, requested ZIP exports, user-activated dictation and Premium verification; legal obligation (c) for handling data protection rights and retaining documents where tax or consumer law requires it; legitimate interests (f) for answering ordinary support queries and keeping minimal evidence of incidents, subject to the right to object where applicable. Dictation is voluntary and the main functions remain available without it. System permission for microphone, photos or notifications is not itself a GDPR legal basis. The reviewed code shows no use for personalized advertising or automated decisions with legal effects; integrations configurable in RevenueCat's dashboard still require verification.

Local data remains while the user keeps it in the installation; it is removed when an item is deleted, all data is erased, the app is uninstalled or data is replaced by a restore, subject to the recovery and cache limits above. Exported ZIPs remain until the user deletes them from the selected destination. Operating system backups follow the provider's settings and periods. RevenueCat subscription data is kept while needed to verify entitlement and manage requests, then under the provider's applicable contractual and legal periods; the operator must arrange deletion where appropriate. Store records follow their own policies. Javier has approved internal criteria to delete ordinary support enquiries 12 months after closure and retain a minimal record of rights requests for 3 years after closure, unless a legal obligation or claim justifies longer retention. These are organizational choices, not universal statutory periods. Javier has a private register and a restricted-access procedure for periodic review and deletion to apply these criteria from the first request; each review and deletion requires his action. Tax records actually held by the operator are retained for applicable statutory periods.

Deletion and rights

The “Borrar todos mis datos” option in Settings (also “Eliminar todos mis datos” in routine settings) requires two confirmations and deletes Blunely's own documents and preferences and photos in its private directory, then creates an empty local state. It does not delete original library photos, exported ZIPs, system backups, RevenueCat or store records, or cancel an active subscription. If deletion fails it remains pending and is retried. After returning to the empty state, the app attempts to reconcile system reminders and cancel Blunely reminders that no longer apply; cancellation is not part of the deletion confirmation and may fail or be delayed, so a previously scheduled reminder could still appear.

You may request access, rectification, erasure, restriction, portability or objection where applicable by emailing javiermillerv@gmail.com. Javier is responsible for handling the request. State the right you wish to exercise. To locate subscription data, you may provide your anonymous RevenueCat ID if you know it, or the transaction or order identifier on your purchase receipt; the app does not currently display the anonymous ID. Do not send photos, notes or ZIP files to identify a purchase. Additional information will be requested only where there are reasonable doubts about identity. Javier will respond without undue delay and within one month of receipt at the latest; this may be extended by two more months where the GDPR permits, with notice of the extension within the first month. You may complain to the Spanish Data Protection Agency or another competent authority. Local data can be viewed, corrected and erased in the app; the ZIP export provides a copy. An email request does not give the operator remote access to content stored only on the device. RevenueCat allows customers to be found by anonymous ID or transaction and their records to be deleted through its dashboard or API; Javier must verify the match and handle each applicable request. If the person cannot be located with the available information, this limitation will be explained and they may provide further information. Local deletion does not send a request to RevenueCat, and deletion there does not cancel a Google or Apple subscription. Javier has prepared an internal process for receiving, recording and answering requests and will apply it from the first request.

See also Blunely data deletion for local deletion and email request steps.

Children, security and changes

Blunely is intended for adults aged 18 and over; it does not technically verify age. Both stores' classifications and descriptions must reflect this audience before launch. It uses operating system storage isolation and validates the structure and integrity of local documents and ZIPs, but does not encrypt ZIPs or guarantee absolute security. Protect your device and backup destinations. This policy will be updated when features or providers change, with a new effective date. Changes and privacy contact: javiermillerv@gmail.com.