How this tool handles a photograph

Written for a practice deciding whether this tool can be used with patients, and for whoever advises them on data protection. It describes what the software actually does. It is not legal advice or a privacy notice. A practice needs its own.

What this product is for

A clinic provides a branded link. The visitor chooses and uploads their own smile photo, receives a plain-language visual guide, and may request an illustrative AI preview before deciding whether to speak with the clinic. The output supports information and discussion. It is not a diagnosis, medical advice, a treatment recommendation, a treatment plan, or a prediction of results.

What happens to a photograph

What is kept, and for how long

DataWhereRetained
The photographBrowser memory during the guide journey. A compressed copy is sent to the practice only after the separate sharing permission.Not written to any database or disk by this application. The browser copy is gone when the tab is closed; a shared copy follows the practice's email retention.
A crop of the mouthIn transit through the endpoint to RoboflowHeld only for the length of the request. Not stored by this application at either end.
A crop of the mouth and lips, for the AI illustration onlyIn transit through the endpoint to OpenAI, and only if that button is pressedHeld only for the length of the request. Not stored by this application at either end. OpenAI's own retention is a matter for the agreement the operator holds with them.
The visual guideBrowser memoryUntil the tab is closed or a new photo guide is started. Saving a PDF writes a file on the reader's own machine and uploads nothing.
A consultation requestThe clinic account database, only after the separate contact form is submittedName, phone or email, optional note, status and contact-consent evidence remain until the clinic's published retention period ends.
An optionally shared photograph and visual guideSent to the practice by email only after the separate, unchecked sharing permission is selectedThe application records the exact permission text, time and version. It does not store the photograph or guide in its database. The practice controls retention in its email system.
Clinic account and subscription dataSupabase and StripeHeld while the clinic account and legal or accounting retention duties apply. Model and payment secret keys never reach the browser.
Caller IP addressEndpoint memoryUp to 60 seconds, used only to rate-limit requests. Not logged by the application, not linked to any image.
Journey measurement: a random visit identifier, the campaign tags on the link followed, the referring site, device type and browser family, which steps were reached, their order and how long each tookThe clinic account databaseUp to 400 days, so a practice can compare a month with the same month a year earlier. It holds no photograph, no observation and no contact detail. Where no consultation request was sent it identifies nobody and survives the deletion of other records; where one was sent, the practice can view that visit's six-step path beside the request.

Clinic authentication uses a browser session managed by Supabase. There are no third-party analytics, advertising or tracking scripts, and nothing here follows a visitor to another site. The journey measurement described above is first-party: it is written by this application to the practice's own account, under a random identifier that is renewed after thirty minutes of inactivity and never matched against a person. Both typefaces are served from this site, so loading the visual guide makes no font request to a third party.

Finished visual guides stay listed for as long as the browser tab is open, so the visitor or clinic can move between them during a session. That list lives in the memory of the page: it is not written to the device, not sent anywhere, and closing the tab erases it.

Who is involved

The parties that can touch a photograph do not carry the same responsibilities. A practice deciding whether to use this tool needs all relevant roles considered in writing before the first visitor photograph is processed.

PartyWhat it does here
The visitorChooses the photograph in their own browser and starts each transfer. Nothing is sent merely because the branded page was opened.
The practiceSubscribes to and brands the experience, provides the link, and holds the relationship with the visitor if a consultation is requested. Its own privacy information and lawful basis must cover its role.
The operator of this deploymentRuns this site and the /api/analyze endpoint, and holds the Roboflow API key. The image passes through infrastructure the operator controls on its way to Roboflow. Who this is depends on who is hosting; it is not necessarily the practice.
RoboflowPerforms tooth detection on the image and returns outlines. Operated from the United States.
OpenAICreates the AI illustration, and only when that is requested. Receives a crop of the mouth and a mask covering the dental arches. Operated from the United States.

Because the image passes through the operator's endpoint rather than going from the browser straight to either service, the operator is part of the processing chain and cannot treat this as a matter between the practice and those services alone. Where the operator is not the practice, the two need an agreement setting out which is controller and which is processor, and the operator needs its own agreement with each of Roboflow and OpenAI covering the onward transfer.

The transfer

Tooth detection runs on Roboflow's hosted inference service, which is operated from the United States. What crosses the border is a crop of the mouth, not a photograph of a face. This is a real reduction and worth stating plainly to a visitor. It is not anonymisation: dentition is itself capable of identifying a person, which is why it is used for exactly that. Treat the crop as a transfer of special-category data outside the European Economic Area, because that is what it is.

Asking for the AI illustration is a second transfer, to a second company, and the tool treats it as one: it never happens on its own, and the crop sent is cut for that purpose rather than reused from the detection. A practice that would rather make no such transfer can use the visual guide without pressing that button. The photo-based illustration and the rest of the guide remain available.

A practice using this tool with real patients needs to satisfy itself on the usual points before doing so: a lawful basis and an Article 9 condition, an entry in its record of processing, its own patient-facing privacy information, and a written agreement with whoever operates the deployment. The software does none of that for anyone, and cannot. It is a tool, not a compliance position.

What the tool does not do

The provenance of the code, the model licence and the third-party components are documented separately in THIRD_PARTY_NOTICES.md and IP_AND_DATA_POLICY.md in the source repository. FDI labels are approximate location references, and a dentist must assess oral health and treatment options independently.