Privacy requests: destruction, complaints and escalation

Read this before a request arrives, not while one is sitting in the inbox. It exists because the Children's Online Privacy Code (ss 32, 36) requires a formal destruction-request channel and a child-friendly complaints process with an anonymous option — see issue #228 and docs/privacy_posture.md §4.2. At current scale (one owner, ~10 users) this is a support email plus a documented process, not a ticketing system.

The channel is privacy@brendanpatch.com. How that mailbox is wired up (a Proton address, filed by a filter into one folder) is a separate document — docs/runbooks/privacy-mailbox.md — because setting it up once and working a request are different jobs read at different times.


What exists today vs what is planned

This procedure has to work against the app as it actually is, not the app the encryption plan describes. Two things are still planned, not built, and are marked as such everywhere below:

Once end-to-end encryption ships for a given content type, the "technically able to look up a specific row" sentence above stops being true for that type, and the in-app self-service routes below (poster/admin deletes a photo, sender deletes a message) become the only way a specific item can be removed — nobody at GroupApp will be able to identify which photo or message a request is about. This procedure is written to work in both states without needing a rewrite: follow the self-service routes first regardless, and treat "we can look it up directly" as a fallback that already has a use-by date.


Who may ask

How

Email privacy@brendanpatch.com. There is no other channel today — no in-app request form, no phone line. The address is named in the privacy policy and on the in-app "What the assistant can see" page (constants/legalTexts.ts, constants/aiTransparency.ts).

What we do on receipt

  1. Acknowledge within 3 business days. A short reply confirming the request has arrived, who is handling it (the owner — there is no support team), and that a full written response follows within 30 days.
  2. A 30-day clock to a written response, from the date the request was received. This is the Code's own figure (ss 32, 36) and matches what the existing privacy policy already promises for access/correction/erasure requests.
  3. Refusal reasons are given in writing, using the template below, whenever any part of a request is not actioned.
  4. Escalation to the OAIC is named as an option in every substantive response — the Office of the Australian Information Commissioner, https://www.oaic.gov.au/privacy/privacy-complaints. Naming it is not an admission that the response was wrong; it is what the Code and ordinary good practice both expect.

Working a request: the owner's checklist

  1. Label the thread privacy request or complaint in Proton Mail (docs/runbooks/privacy-mailbox.md). The tag and the thread itself are the record — there is no separate log to keep in step, and keeping one would mean holding a second copy of whatever personal information the request contains.
  2. Acknowledge within 3 business days (see above).
  3. Work out what's actually being asked. In rough order of how often each comes up:
    • Whole-account deletion — point them at "Delete my account & data" in the app's Settings. It is immediate and self-service; there is normally nothing for the owner to do by hand.
    • A specific item — a photo, a chat message, a Baby Tracker entry. Work out who can act on it directly (the table below) and tell the requester exactly how, in the app's own words.
    • Correction of inaccurate data — most fields are editable in-app; point at the relevant screen. A field that genuinely cannot be edited by the user is worth noting in the PIA register as a gap, not just fixed one-off by hand in the database.
    • Export — "Download my data" in Settings, self-service.
    • A general complaint about how information was or wasn't handled, with no specific item named. Read it, respond honestly, and say what (if anything) will change.
  4. If a request needs support to act because the requester genuinely cannot (for example: the photo's poster has left the household and no admin remains active, or the requester cannot use the app themselves) — see "Who can act on a specific item" below for what is and isn't possible today, and say so plainly rather than promising a capability that doesn't exist.
  5. If any part is refused, use the template below. State the specific reason — do not send a form refusal with no reason, which is exactly what s 32/36 exist to prevent.
  6. Send the written response within 30 days of receipt, naming the OAIC as an escalation option.
  7. Leave the final reply in the thread. The thread, tagged, is the whole record — there is nothing else to update.
  8. Watch the saved search for privacy-tagged mail older than 20 days (set up per the mailbox runbook) as the early warning that the 30-day clock is running out on something still open.
  9. If the same kind of request keeps recurring and the app has no in-app way to satisfy it, that's a product gap, not an indefinite manual-support burden — note it against the PIA register or as a new issue, rather than quietly repeating the same by-hand fix every time.

Who can act on a specific item, and how

This is the part that must be told to the requester in the reply, not just known internally.

Content Who can act, in the app Where
A photo on the photo wall The person who posted it, or a group admin Open the photo → delete. ("Uploader or admin removes photos" policy on group_photos.)
A message in the group chat Only the person who sent it — there is no admin override for someone else's message Long-press the message → delete.
A Baby Tracker record, or a baby's whole history Any active member of that baby's group The baby's own settings → delete this baby's history (or the baby itself). See docs/baby_history_deletion_plan.md.
A whole account The account holder themselves Settings → "Delete my account & data".

If the person who can act (the poster, the sender, an active member) is unwilling or genuinely unreachable — for example an estranged parent who posted a photo of a child and will not remove it — say so plainly rather than promising a workaround. Today, because content is not yet end-to-end encrypted, the owner can look up and remove a specific row directly as a last resort; this is a manual one-off action recorded in the request thread (there is no separate log, and keeping one would hold a second copy of the request), not a standing capability, and it stops being available once end-to-end encryption ships for that content type (see "What exists today vs what is planned" above). At that point the honest answer for an unreachable poster becomes: ask another admin, or the group as a whole, or — if the content genuinely cannot be removed by anyone in the household — leaving the group is the remaining option, and that should be said rather than implied.

Refusal template

Use this whenever any part of a request is refused, in whole or in part. Fill in the brackets; do not send a refusal with no stated reason.

Subject: Re: your request of [date]

Hi [name],

Thank you for your request on [date] regarding [what was asked]. I've looked into this, and I'm not able to [action] in full, because [specific reason — e.g. "this message can only be deleted by the person who sent it, and I don't have a way to do that on their behalf" or "this would also remove records that other members of your household rely on, and it isn't mine alone to remove"].

What I can do: [alternative, if any — e.g. "ask an admin of your group to remove the photo", "correct the specific field you flagged", "delete your own account and data in full"].

If you're not satisfied with this response, you can make a complaint to the Office of the Australian Information Commissioner: https://www.oaic.gov.au/privacy/privacy-complaints.

[Owner's name] privacy@brendanpatch.com

What this procedure does not cover