← HalalCheck

Privacy Policy

HalalCheck for Android and iPhone — free versions
Last updated:

DamoorApps operates HalalCheck and is responsible for the app's processing described here. For privacy questions or requests, contact halalcheck@damoorapps.com.

This policy covers the free Android and iPhone versions, package/bundle com.damoor.halalcheck. They have no account creation, sign-in, subscriptions or in-app purchases. Their reachable features do not use RevenueCat or OpenAI, and Sentry crash reporting is not enabled in these release profiles. Other DamoorApps apps have their own policies. Older account-enabled test versions had different data flows; contact us about any earlier account record.

HalalCheck provides ingredient-checking guidance using owner-selected rules; scholarly review is in progress. It is not a halal certificate, religious ruling or guarantee about a product.

At a glance

Photos, permissions and local recognition

Camera permission is used when you choose to photograph a label or scan a barcode. You can select an individual image through Android's system photo picker; this flow does not require access to your entire photo library. On iPhone, camera/photo access serves the capture or import you choose, subject to iOS permission controls. You can refuse or revoke permissions in your device Settings and use typed ingredient entry instead.

The app crops and resizes images for recognition. Android uses bundled Google ML Kit on-device; iPhone uses Apple Vision on-device. These local recognition paths do not upload the label photo or text. Crop to the complete ingredient list and avoid including faces, receipts, addresses, personal documents or other private information.

ML Kit processes technical information for diagnostics and usage analytics: device model and operating system, app/package version, a per-installation identifier, recognition latency, image format and dimensions, input/output sizes, feature events and error codes. This metadata is separate from the ingredient image and recognised text. Google documents HTTPS transmission and no third-party transfer of the ML Kit metadata listed in its Android SDK data disclosure.

HalalCheck does not request contacts, microphone or precise device location. Online services receive network information such as an IP address; an advertising service can derive approximate location from that address.

Saved checks and device storage

Settings, interface language, checking level, consent choices and local usage counters are stored on your device. A check you choose to save can contain original and translated ingredients, result and findings, date, product information, language and a local photo reference. History is limited to the most recent 200 saved checks and is not synchronised to an account or our server.

Saved checks remain until you remove them, clear history, exceed the history limit or clear app storage. Camera/crop operations can leave temporary image files. Removing a check record does not necessarily erase every cached file or an original image from your gallery. Barcode responses have a 24-hour freshness period; stale device cache entries are not necessarily erased at exactly 24 hours.

Use the app's history controls to remove checks. Android Settings → Apps → HalalCheck → Storage → Clear storage removes local app data and settings; Android automatic app-data backup is disabled. On iPhone, device/iCloud backup and restore are controlled by you and iOS. Secure Keychain items can survive uninstall, so reinstall is not a guaranteed identity or quota reset. Gallery/Photos originals and backups must be managed separately.

Optional Google Gemini reading and translation

Cloud processing requires internet access and your consent. AI photo reading sends a prepared label image, image type, requested language and request ID to our Cloudflare-hosted API. The API forwards the image and reading instructions to Google's paid Gemini API. Text translation sends ingredient text and the requested language instead of the photo. The returned text is used for your check.

Free AI reading uses Ask each time on Android and iPhone, so an incomplete local scan does not silently spend a free reading. A successful complete reading or translation uses one of three readings per rolling seven-day period; failed or incomplete readings do not use the allowance. The app shows the remaining allowance and asks before using a reading. You can keep checks local by declining an upload or changing cloud-processing choices in Settings. AI consent and advertising/ATT choices are separate.

Our application database does not save uploaded label images, submitted ingredient text or AI output. It keeps the operational records described below. Checks you explicitly save locally can contain returned text.

Google's paid Gemini API terms say prompts and responses are not used to improve Google's products. Google can retain and review content for safety, abuse prevention and legal obligations. Its abuse-monitoring policy currently specifies 55 days for prompts, contextual information and outputs. Provider retention is separate from our database; cloud processing is not a promise of immediate deletion everywhere.

Withdraw cloud consent in HalalCheck Settings to stop future cloud operations under that choice. Withdrawal cannot undo a request already processed. Supported offline ingredient checks remain available.

Installation identity, allowance and service security

The app creates a random installation token in secure device storage. Requests needing consent or allowance checks send it to our service. The server stores a keyed hash rather than the raw token. This pseudonymous identifier records cloud consent, counts readings, shows the remaining allowance and helps prevent abuse. It is not an account or a claim that all records are anonymous.

Cloudflare receives the IP address and technical connection information needed to handle online requests. Abuse controls use a keyed IP hash in the application database and rate limits at the hosting layer. Operational records can include request IDs, timestamps, status, latency, provider/model/error category, usage and cost counters. Provider error text is restricted and truncated; ingredient photos, label text, prompts and API secrets are not deliberately logged.

When the app's cloud-consent conditions allow it, limited funnel events record that an unsupported reading was seen or text was corrected, together with an installation hash and day. These events contain no ingredient text or photo. Aggregate event and provider totals help operate the service and control costs.

Barcode lookups and Open Food Facts

A barcode lookup sends the barcode to our Cloudflare API, which requests public product data from Open Food Facts. Our proxy does not forward your device IP address, installation token or saved checks to Open Food Facts. This version does not submit your photos or product edits to its public database.

Public product responses can be cached on our service for 24 hours and on your device. The shared cache is keyed by barcode and separate from personal scan history. Product information can be incomplete or outdated; compare it with the packaging.

Advertising and Google's consent choices

The free versions can show Google AdMob home-screen banners. TestFlight and Android testing builds use Google demo ads; production builds can use real ads after the applicable choices. Every banner request is non-personalised, even if iPhone tracking permission is allowed. Android removes the advertising-ID permission. This does not prevent all SDK collection: Google can process IP/approximate location, permitted device or app identifiers, ad interactions and diagnostics for advertising, measurement, analytics and fraud prevention. See Google's Android and iOS SDK disclosures and Privacy Policy. There is no result-screen banner.

On iPhone, App Tracking Transparency (ATT) can ask whether Google may use the advertising identifier (IDFA) for advertising and measurement. Google consent choices are gathered first. In the GDPR region, ATT is requested only after Google's storage/access consent permits it; outside that region, the app requires a confirmed regional consent status. Unknown or inconsistent consent and retrieval errors do not initialize ads. Declining ATT leaves ingredient checking usable and can still allow eligible non-personalised ads when Google's independent consent checks permit them. Permission is needed before cross-app advertising tracking; choosing non-personalised ads is not a promise that identifiers are never processed.

HalalCheck does not send ingredient photos, label text, saved checks or its installation/quota identity to AdMob. Gemini reading, Open Food Facts lookup and the installation allowance serve separate app functions; HalalCheck does not use them to build advertising profiles. Google's advertising SDK processes its own technical information as described above.

Google's User Messaging Platform presents consent choices where required, including the EEA, UK and Switzerland. You can consent, decline or manage purposes and partners. The app waits for Google's consent status before requesting ads. Depending on your choices and Google's eligibility rules, limited ads or no ads may be available. Declining consent does not turn ingredient checking into a paid feature.

Where required, use the advertising/privacy-choices entry in HalalCheck Settings to revisit Google's form. Android offers device-level advertising controls. On iPhone, change ATT in Settings → Privacy & Security → Tracking; this is separate from Google's in-app choices. Advertising consent or ATT permission does not authorise uploading label photos to Gemini.

Recipients, purposes and international processing

We use Cloudflare to host and protect the API and database; Google for SDK diagnostics, advertising/consent and optional Gemini processing; and Open Food Facts for public barcode data. They receive information needed for the functions described above. Advertising partners are identified in Google's consent form. Information can also be disclosed when legally required or necessary to investigate abuse or protect legal rights.

Where European or UK data-protection law applies, consent is used for optional AI processing and advertising technologies that require it. Processing needed for a feature you request delivers that service. Our legitimate interests include service security, abuse prevention and limited operational measurement, subject to your applicable rights; legal obligations can also require processing or retention. Google's form explains advertising partners' purposes and legal bases.

Providers can process information outside your country, including outside the EEA or UK. Their applicable processing agreements and privacy notices describe international-transfer arrangements. Contact us for information about safeguards relevant to your data. Online connections use HTTPS, but no transmission or storage system is completely risk-free.

Retention

Your choices, rights and deletion requests

This free version has no HalalCheck account to delete. You can remove saved checks, clear app storage, revoke camera permission, disable cloud processing and revisit advertising privacy. Clearing storage does not itself erase server-side operational records or a provider's existing copies.

For access, correction or deletion of information held by us, email halalcheck@damoorapps.com with the subject HalalCheck privacy request. Explain the request and, if available, the approximate request time or request ID. Because there is no account and we do not store the raw installation token, we may need to explain a safe way to locate records. Some records cannot be identified from an email address alone. Do not send passwords, API keys, installation tokens, payment details or identity documents.

We will explain verification needed, what we can locate, applicable response timing and information that must remain for legal or security reasons. A request to us does not automatically erase independently held provider data; we will explain the relevant contact or process where needed.

Depending on your location, you may also have rights to restrict or object to processing, receive eligible data in a portable format, withdraw consent and complain to your local data-protection authority. Withdrawal does not affect earlier lawful processing.

Sharing, links and the website

If you share a result through the device share sheet, the receiving app or person gets that content under that service's rules. On iPhone, Report a problem opens a reviewable email report without attaching a photo by default; nothing is sent until you send it. Opening another DamoorApps product, store listing or support email is your choice and does not automatically share saved-check history.

This page is hosted on GitHub Pages. Visiting the website lets its host receive connection information such as an IP address. See GitHub's Privacy Statement. App SDK and cloud-processing practices are described separately above.

Age and policy changes

HalalCheck is intended for adult shoppers, not the Kids category. The Android closed test is for adults aged 18 and over. We do not claim an age-verification system and do not knowingly solicit personal information from children. Contact us if you believe a child has supplied personal information so we can investigate and arrange appropriate handling.

We will update this page and its date when data handling changes. Material changes requiring new consent will be explained before the relevant processing begins.

Contact

Publisher: DamoorApps
App: HalalCheck for Android and iPhone
Privacy and support: halalcheck@damoorapps.com
Website: DamoorApps.com