Privacy Policy — AddFace2Contact

Effective date: 7 October 2026
Last updated: 18 October 2026

AddFace2Contact ("the app") is published by VULANDER.NET PTE. LTD. ("we", "us"), a company registered in Singapore. This policy explains exactly what the app does with data, including the data you never have to take our word for because the app never sends it anywhere.

Questions, requests or complaints: david@vulander.net


1. The short version

AddFace2Contact fills in the contact photos your address book is missing. To do that it reads your contacts on your device and writes a photo back to the card you choose.


2. Data that stays on your device

The following never leaves your device, is never transmitted to us, and is deleted when you delete the app.

WhatWhy it existsWhere it is kept
Your contacts (names, and the company and city used to refine a search)To show you which contacts have no photo, and to write a photo to the right cardRead live from Apple's Contacts database; the app keeps no copy of your address book
Contact photos, including the photo that was there before a changeSo every change can be undoneLocal app database (SwiftData)
A change history (contact name, time, success or failure)The undo listLocal app database (SwiftData)
A photo you select from your photo library for an AI head shotIt is the input to Apple's Image PlaygroundHeld in memory for the duration of the task
Your appearance preference and the single onboarding question ("why are you here")To set the theme and choose which sentence to show youLocal preferences (UserDefaults)
A count of photos applied this monthTo apply the free monthly allowanceLocal preferences (UserDefaults)
An App Attest key reference and a short-lived access tokenSo the search service can tell a genuine copy of the app from an automated abuserApple Keychain, device-only

Deleting the app removes all of it. We hold no copy and cannot restore it.

2.1 Finding the face in a photo

Every photo the app is about to save — whether it came from the web or from Image Playground — is run through Apple's Vision framework, on your device, to find where the face is, so the picture can be cropped to a square that is actually centred on the person rather than on their shoulder.

This is face detection, not face recognition: it locates a rectangle and nothing else. It does not identify anyone, it does not produce a faceprint, template or any other biometric measurement, and it does not compare the photo against any other photo or any database. The rectangle exists only in memory for the moment it takes to crop, is never written to storage, and is never transmitted — to us or to anyone. Nothing about it is shared with any third party, because there is nothing to share.


3. Data that leaves your device

3.1 Your search term

When you run a web image search, the app sends the text in the search box to our server, which passes it to an image-search service. The box is pre-filled with the contact's name (and a company or city if you add one); you can edit it before searching.

The search term is sent on its own — no contact record, phone number, email address, photo, device name or account identifier goes with it, and we do not log it against you or your device. Our server keeps a short-lived cache of results, keyed on the search text with no identifier attached, which expires within 24 hours.

Because a contact's name is personal data belonging to that person, please see section 8.

3.2 Device attestation and quota counters

Before the first search, the app proves it is a genuine, unmodified copy using Apple's App Attest. Our server keeps one row per install so it can block abuse and keep the free tier affordable. That row holds, in full:

FieldWhat it is
Key IDThe random identifier Apple creates for this app on this device
Public keyThe matching public half of the attestation key, used to check each signature
Validation categoryWhether the copy came from the App Store or TestFlight
Bundle versionWhich build of the app attested
Signature counterA number that only ever goes up, so a replayed request can be spotted
First attested / last usedTwo timestamps

Alongside it we keep a monthly search count, stored against the same key ID.

That key ID is not the advertising identifier and not an Apple ID. It tells us "a copy of this app made N searches this month" and nothing more — we cannot use it to identify you, contact you, or link you to anything you do outside this app. It resets if you reinstall the app, and the counters expire within 60 days.

3.3 Technical request data

Like any internet service, our server processes the connection data inherent in an HTTPS request — your IP address, timestamp and user agent — for delivery, security and abuse prevention. We do not use it for analytics, profiling or advertising, and we do not build records about users from it.

When the image-search provider returns an error, our server writes that error to its own diagnostic log so we can tell a broken integration from a bad query. Those entries hold the provider's response, not your search term.

3.4 Anonymous usage analytics

This is off unless you turn it on. The app asks, on the second screen you ever see, whether it may count what happens inside it. The switch starts off, nothing is sent before you answer, and the app behaves identically either way. If you say no, that is the end of it — you will not be asked again.

You can change your mind at any time: menu → Settings → Send anonymous usage data. Turning it off stops collection immediately, within the same session and without relaunching the app.

If you do turn it on, here is exactly what that means.

We count what happens in the app so we can see which screens people get stuck on and which features fail — the things we cannot fix if we cannot see them.

Each event is a short, fixed name with a handful of fixed labels: a screen was reached, a search came back empty, a photo was applied. There is no free text in any of them — no contact name, no contact identifier, none of the text you type in the search box, no result image or website, and no photo data. Counts that describe your address book are sent as a band ("51-200") rather than an exact figure.

Three kinds of label ride along with every event, and they are worth naming because they are what our App Store privacy label declares:

Events are grouped under a one-way hash the app derives on your device. There is no step that takes us from it back to you, and because it is specific to this app, the same iPhone produces a different hash in our other apps.

Turning the switch off, or deleting the app, ends collection. There is nothing for us to delete on request, because we cannot tell which events are yours — the honest answer is that the switch is the control, not an erasure request.

3.5 Images loaded from other websites

Search results are photos hosted on other people's websites. When the app shows a result, your device loads that image directly from the site hosting it, so that site sees your IP address and standard request headers, exactly as if you had opened the image in Safari. Those sites are not our partners and handle the request under their own policies. The image is saved only if you choose it and apply it to a contact.

3.6 Purchases

The one-time unlock is sold by Apple through in-app purchase. Apple handles the payment and tells the app only whether the unlock is active. We never receive your name, payment card, billing address or Apple ID.

3.7 AI head shots

The AI head-shot feature uses Apple's Image Playground, built into iOS. The photo you choose and the result are handled by Apple on your device. Nothing in that feature is sent to us, and it works with no network call to our servers at all.


4. Why we process this data, and our legal basis

We do not process special-category data, we do not profile you, we do not combine the usage events in 3.4 with anything else, and no decision about you is made by automated means.


5. Who we share data with

We have no advertising or data-broker relationships, and we do not sell data to anyone.

Data reaches only the service providers that make the app work, each acting on our instructions and under its own privacy terms:

WhoWhat they receiveWhat for
Cloudflare, Inc.The HTTPS request itself — connection data, the search term on its way through, and the attestation row and counters described in 3.2Hosts and runs our server
Serper (which queries Google Images)The search term only — a name, optionally plus a company or city. Not your IP address, which is ours, not yours, by the time the request reaches themRuns the image search
TelemetryDeck GmbH (Germany)The anonymous usage events in 3.4 — only if you switched them onProcesses our usage analytics

Apple additionally handles App Attest, in-app purchase, Image Playground, and Contacts and Photos access on your device.

We name these providers rather than describing them generically because you cannot meaningfully judge a privacy policy that will not tell you who is actually involved.

Separately, a website hosting a result image sees your IP address when your device loads that image; those sites are not our processors (see 3.5).

We may also disclose data if required by law, or to establish, exercise or defend legal claims — given how little we hold, there is very little to disclose.


6. International transfers

We are in Singapore, and our providers operate internationally — including in the United States and inside the EEA. Requests are served from the location nearest you, so data may be processed outside your own country. Where you are in the EEA, the UK or Switzerland, those transfers rely on the European Commission's Standard Contractual Clauses (and the UK Addendum) in our providers' data processing terms, or another lawful transfer mechanism.


7. How long data is kept

DataRetention
Contacts, photos, history and preferences on your deviceUntil you undo the change, clear the history, or delete the app
Cached search resultsUp to 24 hours, then automatically discarded
The attestation row in 3.2, and search countersWhile the install remains active; counters expire within 60 days
Anonymous usage eventsPer our analytics retention period. They carry no identifier we can resolve to a person, so there is nothing in them for us to look up, correct or delete on request
Security and connection logsStandard retention for our infrastructure; we do not extend it or export it

We keep no user database, so there is nothing we retain about you beyond the above.


8. Searching for other people

A contact's name is personal data belonging to that person, and an image search for a name may return photographs of them or of someone else entirely.


9. Your rights

Depending on where you live, you have rights over your personal data. Because the app has no accounts, the fastest route for almost everything is the app itself: your contacts, photos, history and settings live on your device, and deleting the app erases them permanently.

For the little our server holds, you may ask us to confirm what we hold, correct it, delete it, restrict or object to its processing, or receive a copy. Email david@vulander.net and we will respond within 30 days.

One honest limitation: our server identifies that data only by a random key ID your device holds, which we have no way to tie to you. If you ask us to delete "your" data we may be unable to find it — deleting the app retires that key ID entirely.


10. Children

AddFace2Contact is a productivity utility and is not directed at children. We do not knowingly collect personal information from children under 13 (or the equivalent age in your jurisdiction). If you believe a child has provided personal information to us, contact david@vulander.net and we will delete it.


11. Security

No system is perfectly secure, but there is no account to compromise and no store of personal data to breach.


12. Changes to this policy

If we change how the app handles data, we will update this policy and move the "Last updated" date. Material changes will be announced in the app's App Store release notes. Continuing to use the app after a change means you accept the updated policy.


13. Contact

VULANDER.NET PTE. LTD. — data controller
22 Sin Ming Lane, #06-76 Midview City, Singapore 573969
Registered in Singapore, UEN 202639834K
Email: david@vulander.net

This policy is governed by the laws of Singapore, without prejudice to data protection rights you hold under the laws of your own country.