← All privacy impact assessments

PIA: a personal Home, tool shortcuts, needs-based setup and assistant widgets

Status: Built, all three stages. Written before the code, and revised on 29 September 2026 first against the second stage as built and then against the third, the assistant, as built: the whole document now describes what the app does, and where the build is narrower than the design, the section says so. The third stage's part on our assistant server goes live when this change is released; its part in the app reaches members with the next app update, and until then an older app keeps showing replies as it did, with no new views. Written: 29 September 2026 · Last revised: 29 September 2026 (four times the same day: first when the daily brief's review trigger fired — §§6, 8 and 17 point to its own assessment — then against the built second stage, then against the third stage's detailed design, in §§0, 3, 4, 9.2 and 10–19, and then against the third stage as built, in the same sections) Nothing here is legal advice. Children's Code citations are to the exposure draft; section numbers may move on registration (due 10 December 2026).


0. The short version

We are changing how a member finds their way around the app and how the app arranges itself for them, in three stages. All three are built.

  1. Navigation (built). Home is a tab in the bottom bar. The tool shortcuts and an "All tools" button are in a tools list that opens from a button at the top left of every screen. (They were first built as a row on Home and at the top of every tool's own screen; on 29 September 2026 they moved into that list.) The tools keep their own screens. No data moves.
  2. A personal Home, and needs-based setup (built). Each tool contributes a small view ("widget") to Home. Each member can pin, hide and reorder the widgets on their own Home in each group, and that arrangement is saved to our servers so it follows them to another phone. A member can also switch on Arrange by use on one phone, which reorders their unpinned tool widgets by which tools they have used on that phone in the last four weeks — a record kept on that phone and never sent to us. New members are asked what they want help with and are set up for just that. A group's creator is asked whether the group should use global AI, through the privacy choice that already exists.
  3. The assistant (built; in the app with the next update). The assistant, which has held a real conversation since 28 September 2026, can read a bounded slice of the group's tasks, calendar and meal plans to answer one question, and shows the same widgets inside its replies. A reply stores a short pointer to each widget it showed — chosen by our code, never by the model — and never a copy of what the widget displayed. Using a tool's view in a reply the member asked for is a fourth way Arrange by use notes a use of that tool.

The part of this that matters most is not a privacy risk in the ordinary sense. Arranging a member's screen by their own use of it is very likely what the under-16 social media rules call a recommender feature, on the words of the Rules and on the regulator's reading of them. We re-ran the legal assessment for the proposed service in our under-16 self-assessment §15, again against the built second stage in its §15.13, and again against the third stage — its design, then as built — in its §15.14, and summarise the finding here in §15. It was stated as a finding needing a decision before the second stage is released. The decision, taken on 29 September 2026, was to release Arrange by use with the second stage and to settle the finding afterwards. The finding therefore stays open: it is not resolved by that decision, and it is not a risk we accept (§16).

1. Purpose and scope

Why build this, in one sentence: a member should be able to get back to the one place that shows what matters to them, find every tool without a hidden menu, set up only what they came for, and ask the assistant for something and see it rather than only read about it.

In scope:

Out of scope, covered elsewhere and relied on here rather than repeated: privacy levels (what each level sends where, the two-confirmation rule and the guardian rule), cloud inference (where the assistant's models run and what stops the bill), first uses (the first-use record and the tenure-aware Home, which this design keeps separate from its own new data), child accounts, photo wall, Mail Sifter, device calendars and calendar sync, the home brief, and the under-16 self-assessment, which holds the legal classification.

What this assessment is not. It is not a final legal opinion. The first two stages are described as built, and §13 names the tests that pin their conventional rules. The third stage is described as built in §10, and §13 names the tests that pin its conventional rules too.

2. Stage one: navigation only

The first stage moves doors, not data. As built:

No new data is collected, stored, read or sent in stage one. No table, column, request body, model input or permission changed. Every surface reached through a shortcut is the same screen, under the same access rules and the same assessments, as when it was reached through the old tab. For that reason this stage needs no assessment of its own beyond this section, and the rest of this document is about stages two and three.

3. Data involved (stages two and three)

Kind Whose Children's? Sensitive? Free text?
user_home_layouts: the member, the group, a layout version (always 1) and a revision number that goes up by one with each save, and three lists of widget identifiers from a closed list of eight — which are pinned (in order), which are hidden, and which optional widgets were added. No timestamp column of any kind the member's own, for one group yes, where the member is a child account no — "the Babies widget is pinned" is a fact about a screen; that a group has a baby is already known to every member no — the database refuses an unknown or repeated identifier, more than eight in a list, and a widget that is both hidden and pinned or added
The layout's offline copy on the phone: the last layout our servers confirmed, and its revision number the member's own as above no no
Arrange by use (device-local): its on-or-off state, which is simply whether the record exists; the group's time zone; the day it was switched on (or last reset); the day its marks are counted from, which is the last day the record was updated; the day it last worked out an order; for each of seven tools, 28 yes/no marks, one per group day; and the current order of those seven tools the member's own, about their own use of the app on that phone yes, where the member is a child account and switches it on no no
Setup progress (device-local): whether the member created or joined the group; whether they chose tools or chose to explore first; the tools they chose, in the order chosen; the tool they are working on; each chosen tool's step as pending, skipped or finished; whether the global AI question was not offered, offered or answered (never the answer, which is the group's own privacy level); whether their Home choices were saved; and whether they dismissed "Finish setting up" the member's own as above no no
The existing "setup was offered here" marker for this account and group on this phone the member's own as above no no — unchanged by this design
Privacy-level proposals, confirmations and the overseas_processing consent row, when the setup step is used the group's no — an adult's act no no — existing tables, unchanged (see privacy levels)
Widget pointers in the assistant transcript (stage three): metadata.widgets holding a version and at most three items. Each item is a kind from a closed list (§10.2), a short reference worked out from the rest of the item, whether the member asked for that view or it was offered beside an answer, and only the identifiers that kind may carry — for a day of a meal plan, the group's plan and a calendar date; for a baby's tracker or growth chart, the baby. No options, names, titles, measurements, links or routes. The existing growth-chart pointer, metadata.figure, is still written beside it for older app versions the member's own conversation yes, where the asker is a 16- or 17-year-old (under-16 accounts have no assistant) a pointer can reveal an association — "asked to see this baby's tracker on this day" — though never a measurement no — both validators refuse unknown keys, free text, links and routes
What the assistant may read to answer one question about the group's plans (stage three): the current group's open tasks and who they are assigned to, calendar occurrences in a window of at most 31 days (repeats worked out in the group's time zone), and the group's adopted meal plans — for a day, the plan's name, the day's dishes and the dinner time the group's often — a title can name a child not by design: neither lookup reads a baby's logs, but a task or event title can mention a health appointment yes — titles are what members typed
Assistant examples shown (stage three, device-local): which of three fixed example questions this phone has already shown — showing one is the whole record; a dismissal adds nothing to it the member's own yes, where the member is a 16- or 17-year-old (never offered to an under-16 account) no no

Strictly necessary, item by item (exposure draft s 38(2)(b)):

Not collected, and could have been. Each absence is a decision:

4. Flows and locations

Data Device Supabase (Sydney, ap-southeast-2) Our assistant server (australia-southeast1) Model provider Region
Layout row edited in Edit Home, or seeded from the setup chooser when the member presses Continue; saved only on that press of Save or Continue, and only while the phone is positively online; a failed, refused or conflicting save keeps the draft on screen and says so, and a conflict offers to reload the other phone's layout or keep editing one row per member and group, plaintext, readable and writable by that member alone while they are an active member, deleted with the membership (§5); no grant to any server process, and not published as a live feed never read or written never Sydney
Layout offline copy a versioned, size-checked copy per account and group in the app's private on-device database, capped at 20 groups and 8 KiB each; used to draw Home while offline or before the server answers — — — the phone
Arrange by use written on the phone only when the member, with the switch on, (a) taps another tool in the tool shortcuts (the tools list that opens from the top-left button), (b) opens a tool from the list of tools, or (c) opens, expands or pages through that tool's Home widget, or completes an action in it; read only on the phone; 4 KiB per group at most never never never the phone
Setup progress written on the phone when a choice or a step's disposition changes; 2 KiB per group at most never never never the phone
Global AI step shows the group's current level; an eligible adult's choice goes through the existing proposal and confirmation procedures the existing level, proposal, confirmation and consent rows the level is read per request, as before as the level already decides as before
Widget pointer (stage three) validated again and saved with the assistant's reply by the phone; drawn only while its group is the one on screen, after the phone checks each identifier against what it already holds for that group and re-reads the record through the member's own access; a miss is drawn as "unavailable"; the one new use for Arrange by use (§9.2) is noted here, on the phone stored with the reply in the member's own assistant transcript, readable by that member alone, not encrypted, deleted with the conversation after 30 days chosen by the lookup that read the records, or by a fixed table for a request to open a tool; validated, then sent with the reply — only kinds the member's app says it can show, at most three, the ones the member asked for first, and none with a spoken reply; our assistant server never reads the transcript back never — the model writes no pointer, and sees none but the growth chart's older marker (§10.1) Sydney
Assistant reads (stage three) — read through the member's own access, bound to the conversation's group; to work out repeats and multi-day events, up to 1,000 of the group's events and 1,000 of its open tasks are fetched, as the existing schedule lookup already does used for that one question and not kept; per question, at most 6 lookups, 50 rows of one kind, 120 rows in all and 32 KiB of text reach the model, from a window of at most 31 days (each lookup's own range: seven days at most for the combined read, one day for the meal-plan day); what was cut is flagged to the model; free text fenced the bounded text, names replaced where the step runs globally unchanged routing (§10.3): the combined read runs in Sydney at Australia and at "Global, records stay here", and may run at the provider's global service at "Global, everything" unless the request carries health words
A request to open a tool or show a view (stage three) a fixed sentence and a button, or the live view asked for — recognised by the step that reads every request, then answered from a fixed table with no further model call and no lookup (a request to see a baby's growth chart still runs the existing growth-chart lookup, which reads no rows) the member's sentence, once, as for every request Sydney
Assistant examples (stage three) which examples this phone has already shown; read with setup progress, on the phone, to decide whether to offer one never never; it only says which kinds of question it can answer never — tapping an example fills in the question and sends nothing the phone

What crosses a boundary. Nothing in stage two crosses to a model or a new party: the layout goes to our Sydney database, and Arrange by use and setup progress are kept on the phone. Stage three sends more of the group's records to a model per question than any one of the assistant's earlier lookups did, under the privacy level the group already chose and on the routes the assistant already uses — no new provider, region or model; §10.3 bounds it.

Logs. The layout write is an ordinary row write through the member's own session; no server line records the layout. Arrange by use and setup progress have nothing to log on a server because they never reach one. On the phone, a failed read or write of these records writes a diagnostic line naming the kind of record and the group, never its contents, and our crash reporting drops console lines. A widget pointer that fails validation (stage three) is dropped, on our assistant server and on the phone alike, and nothing about it is logged — neither the identifier nor a count.

At rest on the phone. The offline layout copy, the Arrange by use record and setup progress sit in the app's private storage, protected by the operating system's app sandbox. They are not encrypted by us, the same as the group snapshot the app already keeps there for fast loading, and they hold no content.

Phone backups. That private storage is part of what a phone's own backup can include. An iPhone backing up to iCloud, and an Android phone whose backup to the member's Google account is switched on, may copy these three records along with the rest of the app's storage; we have not excluded them. We do not receive that backup — it is between the member, their phone and Apple or Google. A phone restored from such a backup gets the records back, and they are then kept and removed by the same rules as on the original phone (§5): the next authoritative list of the member's groups removes any group they have left, and signing out removes all of them. This is why everything we write about these records says they are kept on the phone and never sent to us, and never that they cannot leave the phone.

5. Personal layout: scope, access and deletion

Scope is per member and per group. One member's arrangement never changes another member's Home, and a member's arrangement in one group never changes their Home in another. Three existing preferences keep their own scope and are not merged into the layout: which tools appear in the member's shortcuts (per account, in all groups), whether a particular baby's card is shown (per baby and member), and whether a particular game's card is shown (per game, group and member). A widget hidden in the layout is an extra gate on top of those, and resetting the layout does not reset them.

Access. Row-level security admits only the member whose row it is, and — for reading, adding and changing it — only while they are an active member of that group. Deleting their own row needs no membership, so a member can always erase it. No other member, no group owner or admin, and no route on our assistant server can read or write it. The table starts with every privilege revoked from every role, and grants back to a signed-in member only what their own row needs.

Deletion, by construction and by event. Five paths, each tested against the database:

  1. Leaving or being removed from the group deletes the membership row, and the layout row goes with it through a foreign key on (group, member) with cascade.
  2. Account deletion removes every membership, and so every layout.
  3. Group deletion removes every membership in it, and so every layout.
  4. A membership that stops being active without being deleted (the only other state is "pending") loses its layout through a database trigger, because losing the right to read a row is not the same as the row being erased. The test asserts both halves: the row is gone, not merely unreadable.
  5. On the phone, the offline copy for a group is removed the next time the app receives an authoritative list of the member's active groups that no longer includes it — never on an offline or failed read, and never from a list restored from the phone's own cache — and every offline copy, Arrange by use record and setup record is removed on sign-out or account deletion on that phone. A save still in flight cannot bring a removed copy back; the tests queue a save before each kind of removal and check it does not.

Export. A member's "Download my data" includes their layout rows as a named section, one row per group: which widgets are pinned and in what order, which are hidden, which were added, and the version and revision numbers. The phone-only records are not held by us, so they are not in an export; the Arrange by use switch's own screen says what the record holds and lets the member clear it.

Reset. "Reset layout" deletes the member's arrangement for this group, removes the phone's copy of it, and returns the defaults, after a confirmation and with an Undo that saves the previous arrangement again. "Reset usage" clears Arrange by use for this group on this phone, after a confirmation, and leaves it switched on. Neither touches any other group, any other preference, setup progress, the setup offer, or any other phone.

6. Which widgets appear, and the optional task and agenda lists

Before the second stage, optional Home sections appeared only when the group's data called for them — a baby card when the group tracks a baby, game cards when a game is on, a photo rail when there are photos — and a member could not hide, pin or reorder them. The group's full task and event list was taken off Home on 10 September 2026 in favour of the brief and the member's own plan.

As built, the data still decides first, and a member's preference decides last. Home, top to bottom, is: the photo rail (only when the group holds photos), the brief with its action chip, the "Finish setting up" card when setup has something open, the existing first-run card, prompts and needs list under their existing rules, then the widget area, which ends with an "Edit Home" row, and after it the ceremony card. The photo rail, the brief and the ceremony card cannot be moved or hidden, and Edit Home says so in one line each.

The widget area holds at most eight widgets, from a closed list: Babies, Games, Meals, Mail Sifter and Repetitive tasks, shown by default whenever they are eligible, and Tasks list, Agenda and Other calendars, shown only when a member adds them. For every widget the checks run in this order, and a later check can never undo an earlier one:

  1. the group's kind (an event group has only the Repetitive tasks widget, and no Edit Home);
  2. the member's permissions (a child account is not offered Mail Sifter or Other calendars, and a Device-only group is not offered Mail Sifter; an account whose age is not yet known is not treated as a child);
  3. whether the tool is on for this group and member (a game switched on; Mail Sifter switched on, or an item waiting);
  4. whether the data is loaded — a widget still loading is not drawn, never drawn empty, and Edit Home says it will show once loaded; a failed load is described as unavailable ("Couldn't load right now"), never as absent;
  5. whether the widget suits this spot (a baby whose card the member has not set to hide; a game whose Home card the member has not hidden);
  6. the member's own hide, pin and order, and then, only if they switched it on on this phone, Arrange by use's order for the unpinned widgets (§9).

So pinning cannot grant access, reveal sealed content, switch a game on or create a baby or a meal plan; a pinned widget whose data is deleted simply disappears, and a hidden widget stays hidden until the member shows it again. Hiding a widget on Home does not disable its tool, its shortcut or its settings. The widget area is drawn only once the member's own layout for this group is known — from the phone's copy, from our servers, or, if the load fails, the defaults — so another member's layout, or the previous group's, is never shown for a moment.

What a member who never opens Edit Home sees is what Home already showed — Babies, Games and Repetitive tasks, each when the group's data calls for it — plus Meals while the group has a current or coming meal plan and Mail Sifter while an email is waiting to be sorted. None of the optional lists appears by default. The Mail Sifter widget shows only how many items are waiting, never a sender or a subject; the Other calendars widget is an opener that asks for no calendar permission when it is drawn.

Edit Home is a sheet holding a draft. Nothing is saved until the member presses Save: every move, pin, hide, show and add changes the draft only, and Cancel discards it. Each widget on Home has Move up, Move down, Pin and Hide buttons and the same four as accessibility actions, and a move is announced ("Meals moved up, 2 of 5"). There is no drag. Moving a widget by hand pins it where it was put, so pinned widgets are always the top of the list. Hide shows "Hidden from your Home" with an Undo, still inside the draft. A hidden widget offers "Show on Home in this group". The "Add widgets" list offers the optional widgets, and says honestly why a default widget is not on Home yet ("Shows here once the group has a baby", "Every baby's card is set not to show on your Home"), with a link to set that tool up or to the setting that hides it. Save is disabled while the phone is offline, and says so. A save that lands closes the sheet with "Saved" and an Undo that saves the previous arrangement again. The sheet also holds Reset layout, a link to set up tools, and the Arrange by use switch (§9).

Optional task and agenda widgets. These are an exception, which we decided to make, to the 10 September decision. They are off unless a member adds them. When added, each shows five rows; "Show list" expands it to twenty rows at a time, "Show more" adds the next twenty, and the list ends in a visible line ("End of open tasks", or for the agenda, "Nothing more until" a date). They never load more on scroll or on a timer, and there is no count. The Tasks list shows the group's open top-level tasks, soonest due first, never a step inside a task and never a meal plan's template; ticking one uses the same action as the Tasks tab, offers Undo, and is refused with a sentence while the phone is offline. The Agenda shows the group's coming occurrences from today through the next 30 days in the group's time zone, leaving out cancelled events; pressing it opens the Schedules tab. The horizon choice (Today, Tomorrow, Week) keeps controlling what the brief is given. Superseded 29 September 2026: the Today / Tomorrow / Week control leaves Home altogether. The brief becomes one paragraph for the group covering all three horizons, assessed in our home brief assessment. A member's own plan is shown on Home grouped by horizon, with the horizon chosen when an item is added. Corrected the same day: there is no separate plan section on Home and no horizon heading. The member's own plan is named inline in the personal line the phone writes beneath the shared paragraph; tapping a named item opens the plan sheet, where items are ticked, dropped and added, and the plan sheet's choice of Today, Tomorrow or This week only decides where a new item belongs. The plan is not a widget, is not in the layout, and is never moved by use.

7. Needs-based setup

Before the second stage, a new member of a group was offered seven setup steps in a fixed order (a personal preset, a profile photo, Mail Sifter, a dinner plan, group photos, a first task and a first event), once per member and group on each phone, during their first three days. The phone recorded that the offer was made; it did not record which steps were done.

As built, the first personalised step asks "What would you like help with?", with six real jobs — planning meals and shopping; keeping track of feeds, sleep and nappies; turning emails and shared documents into plans; bringing an existing calendar into the group; sharing photos with the group; making everyday jobs more playful — "You can change these later", Continue and I'll explore first. Only the chosen jobs are set up, each through the tool's own existing flow, one at a time, and the member can go to their group after the first useful result ("Go to my group", or "Set up another tool"). The personal preset and the profile photo left setup and stay in Settings; a first task or event is a link, not a step.

This changes the description of the first sitting in first uses §1, which that assessment now reflects.

8. The "global AI for this group?" step

For a newly created standing group, setup asks whether the group should use global AI. The reason we offer it is model quality: the newest models are not yet available in Australia. The question is a new way into the existing privacy-level choice, not a new choice, and every rule of that choice applies unchanged (see privacy levels §3A):

9. Arrange by use

9.1 What it is

A member can switch on "Arrange by use on this phone" for a group, in Edit Home. Its switch says: "Uses this device's tool activity to arrange your unpinned widgets. Pinned widgets stay where you put them." Off is the default, and off means nothing is collected, not that collected data is ignored: there is no record until the switch is turned on, and turning it off deletes the record. Switching it on on one phone does not switch it on on another, and switching it off on one phone cannot reach another.

Beneath the switch, a status line says "Off — nothing is recorded", or "On since" a date with "arranging starts after 7 days", or when it last arranged, "at most once a week". Two fixed lines say "Only this phone. Your other phones keep their own setting." and "If this group's time zone changes, this starts again from that day." "Reset usage" asks first. On an app version that cannot keep the record, the switch stays off and says it is not available, rather than showing "On" over a record that was never written. The switch shows no confirmation message after it changes: its own position is the feedback.

9.2 What counts, and what never does

Rankable tools: Meals, Babies, Games, Mail Sifter, Other calendars, and the optional Tasks list and Agenda widgets. Never ranked or recorded: photos, ceremonies, the group chat, the assistant itself, the member's own plan, the brief, connected groups, the Repetitive tasks widget, and every fixed section.

A qualifying use, as built, happens in exactly four places, and a test fails if a fifth appears:

  1. The tool shortcuts — a tap on another tool in the tools list that opens from the top-left button. Tapping the tool whose screen the member is already on records nothing. (Until 29 September 2026 the shortcuts were a row on Home and at the top of every tool's own screen; they moved into that list, and what a tap records did not change.)
  2. The list of tools in the All tools sheet — opening a tool from it.
  3. A Home widget — an explicit open or expand, "Show list" or "Show more", or an action in it that succeeds (a ticked task, for example). A widget appearing, scrolling into view or being looked at is not a use.
  4. A tool's view in an assistant reply the member asked for (the third stage) — when a member asks the assistant to show or open a tool ("show my tasks", "show the meal plan", "open Mail Sifter") and then presses the view's button, opens or expands it, or completes an action in it, the same moments that count on Home. Only a view the member asked for counts: whether they did is decided by our assistant server from the request itself, never by the model, and a view the assistant offered beside an answer without being asked never counts, however it is used. A reply appearing, being redrawn, scrolled past or read never counts either, and nothing said in the conversation does. What the member asked, what the assistant said and which record the view showed are never recorded: the mark is the same yes for that tool on that day. Photos, ceremonies and Edit Home have no tool to count. The mark needs the group's own time zone and is skipped rather than guessed without it. A spoken request shows no views, and an under-16 account has no assistant, so neither can add a mark this way.

At most one mark per tool per day. The build is narrower than the plan in four ways, each of which records less: the game cards on Home never count (only opening Games from the row or the list does); the baby card counts only when it is pressed to open the tracker; the Repetitive tasks widget has no tool and is never ranked; and a baby's growth chart shown in a reply the member asked for never counts, because the chart has no control that could mark it.

Never a qualifying use: Home drawing a widget, time on a screen, scrolling, views, opening a tool from setup, a notification or a link from somewhere else, returning to a tool through the dock, background refresh, a model reading anything, anything said to the assistant, a view in an assistant reply that the member did not ask for, looking at photos, anything about other members, or opening Photos or connected groups, which are tools but never rankable.

9.3 How the order is worked out

For each rankable tool, the phone keeps 28 daily yes/no marks, in the group's own calendar days. A tool's score is twice its active days in the last seven days plus its active days in the 21 before that. Then:

9.4 How long it lives, and where

Marks older than 28 days are deleted every time the record is read or written. Turning the switch off deletes the record and restores the saved or standard order; "Reset usage" clears the marks and restarts the seven days without turning it off. The record for a group is deleted on that phone when the member signs out, leaves or is removed from the group (the next time the phone learns of it from our servers), or deletes their account; a phone keeps records for at most 20 groups, removing the least recently saved first. It is never sent to our servers, a model, an analytics service or another member, is never written into the first-use record, and is never used as evidence for anything else we measure. It can be included in the phone's own backup, as §4 describes. We do not describe erasure of a phone we cannot reach as immediate: a phone that is offline keeps its record until it next runs the app.

9.5 What it is, in law

It is ordering by observed behaviour, and we do not pretend otherwise. Keeping it on the phone, off by default and short-lived limits what is collected; it does not change what the feature is. See §15.

10. The assistant's widgets and the data it can read

Stage three, designed and built on 29 September 2026. This section was written against the detailed design before the code and revised against the build; its part on our assistant server goes live when the change is released, and its part in the app reaches members with the next app update. Where the design differs from the proposal this section first described, the difference is recorded here, and each one stores or sends less, or moves a choice from the model to our code; where the build is narrower than the design, that is recorded too.

10.1 The pointer

A reply may carry up to three widget pointers. Each is chosen by our code, never by the model: either the lookup that read the group's records offers the view that fits what it read, or, for a request to open a tool, a fixed table gives the one button. The model is never shown a pointer and has no way to write one, so text in a task title, an event or a forwarded email cannot become a pointer; a field shaped like one in the model's own reply is dropped before the reply is sent. The one thing the model can see is the growth chart's older marker, which the growth-chart lookup returns in its result; it is collected from that result alone, never from anything the model writes. (The proposal had the model choose a kind and an identifier from what it was given; the detailed design removes that.)

Each item holds a kind from the closed list in §10.2; a short reference worked out from the rest of the item, used only so the same view is not shown twice; whether the member asked for that view ("show my tasks") or it was offered beside an answer; and only the identifiers its kind may carry. Nothing else: no options, names, titles, measurements, links, routes or unknown keys. (The proposal allowed typed options such as a horizon; the first version has none.)

10.2 What each kind may carry

"Linkability" is what a stored pointer lets a reader of the transcript learn, beyond the message text: that this member, on this day, was shown this record. The transcript is readable by the member alone through the app, by nobody else in the group, and by nobody on our assistant server; it is readable by a database administrator with direct access, as every plaintext row is.

Kind Identifiers it may store What that links Decision
Tasks — the group's open tasks, as a live list none in the first version. Task identifiers in the current group remain permitted by this assessment for a later version that the member was shown their group's task list kind only, first version. A task the assistant created is shown by the existing card for that task, not by a pointer
Agenda — the group's coming occurrences, as a live list none in the first version. Event identifiers in the current group, including a copy of another group's event that this group accepted, remain permitted for a later version; an identifier from any other group fails validation that the member was shown their group's agenda kind only, first version
Meals — the group's meal plan, or one day of an adopted plan at most the group's adopted-plan identifier and, beside it, a calendar date; no recipe identifier the member was shown the group's plan for a day may store identifiers
Babies — a baby's tracker the baby's identifier, optionally; never a measurement the member was shown this child's tracker on this day — the same association the growth figure already stores may store the identifier, following the growth figure's precedent; no log, value, name or note ever enters the pointer
Baby growth — the existing growth chart the baby's identifier, always; never a measurement as above may store the identifier, as the growth figure already does
Games none nothing personal kind only. (The proposal allowed a game from the closed list of games; the first version does not store one)
Routines — the group's repeating jobs, as a live list none. The routine (task) identifiers in the current group that the Tasks row above leaves open for a later version are the same ones here, on the same terms that the member was shown their group's routines kind only. The pointer's kind is tallies, the Routines widget's existing layout id, so no new Home widget and no member's saved arrangement moves; a routine's title, its schedule, whose turn it is and whether anybody has ticked it are all re-read by the phone and never enter the pointer
Photos none — opener only. Photographs, captions and album names are sealed on members' phones; the assistant cannot see them and cannot choose among them honestly, and a stored photo or album identifier would be a plaintext pointer to sealed content. "Show my photos" opens the wall
Shopping none that the member opened shopping for their group opener only, for an eligible pilot group and a phone advertising this view. No item, retailer account or basket identifier is stored; starting work remains a separate action under the shopping assessment
Mail Sifter none — opener only. An item identifier would link the member's own conversation to a third party's email, which is itself deleted within 30 days; an opener meets the need until a later assessment
Other calendars none, ever — opener only, to the existing import screen, which asks for calendar permission only when the member taps there. Nothing from the phone's own calendar enters an assistant request or a pointer
Ceremonies none — opener only, where the member can already open the ceremony; no model reads a ceremony's conversation
Edit Home none — opener only. It opens the member's own Edit Home controls; no model-facing tool can save or change a layout, and asking the assistant to arrange Home only opens those controls
Anything else — — not permitted until this table gains a row

A view may offer "Show … on Home". As built, it is offered only for a widget that can be moved and is not already on the member's Home in this group (one they hid is shown again, never added twice), only once their layout for the group is known, never in an event group, and never for a widget a child account cannot have until the account is known to be an adult's. It adds the registered Home widget for the tool — never the named baby or a particular meal plan — through the member's own layout save, with the same revision check. The button does nothing while the phone is offline; a save that lands says so and offers Undo, which puts the previous arrangement back; a refused or conflicting save changes nothing on the phone and says so, and a conflict fetches the other phone's layout before the next try. No model is involved, and the part of the app that draws these views never contacts our assistant server. A tap on an assistant view the member asked for is the fourth qualifying use for Arrange by use (§9.2), and the list of call sites and its test changed together.

While an account's age is not yet known, it sees the ordinary tabs, tools and Home views, as described above: a door that appears a moment early is not access, and what a child must not reach is refused on our servers. Anything the phone does, reads from the phone itself, or sends on the member's behalf waits until the account is known to be an adult's — offering a group AI choice, reading the phone's calendar, or showing an assistant example. A failed age lookup is treated as not yet known and asked again; it is never taken as an answer. The growth-chart pointer is taken only from the chart tool's own leading marker; a marker inside a returned name or title cannot choose a chart.

10.3 What the assistant can newly read (stage three)

10.4 Examples of what to ask

At most one example question at a time — "What's for dinner?", "What needs preparing for tomorrow?" or "Show the baby's growth" — may appear where a member has just finished setting up a tool, or at the top of a tool they opened themselves. It appears only when our assistant server says it can answer that kind of question and the group has what the example needs (an adopted plan, growth measurements), and never on the brief. Tapping one puts the question in the assistant's box and sends nothing; the member sends it or not. Examples are never offered to an under-16 account, in an event group or in a Device-only group, follow the same suppression rules as the app's other suggestions, and are not offered again once shown or dismissed on that phone. Which examples a phone has shown or dismissed is kept on that phone, like the existing hint markers, holds no count, and is never sent to us. Setup progress is read on the phone to decide whether to offer one, and is never sent with a request.

11. Legal basis and consents

12. Risks and mitigations

Risk Who is harmed Mitigation Structural or conventional? Residual
A co-member, a group admin or an ex-partner still in the group reads how somebody arranged their Home, or which tools they use the member The layout row is readable by its member alone; its only group check is that member's own active membership, no clause admits any other member, no server process holds a grant on it, and no server route reads it; Arrange by use is never sent to us Structural (row-level security and grants; and for Arrange by use, there is no server copy to read) Somebody holding the phone itself can open the member's Home, as they can open the app
The layout table grows into a usage profile — "opened Babies 40 times" — because a count is the obvious next column the member; children most The layout holds only closed-list identifiers in three lists, size-bounded, with no timestamp column; usage stays on the phone Structural as to the schema's checks; conventional as to never adding a column (review trigger §17) —
Arrange by use becomes engagement surveillance: dwell time, views, or photos read to decide what a member "likes" the member; the group, whose content would become the subject Four call sites as built, the fourth a use of a tool's view the member asked the assistant for (§9.2); photos, chat and ceremonies are never recorded or ranked; the record holds a yes/no per tool per day and nothing else Conventional, test-pinned: a source scan fails on any call site beyond the listed four; tests show only the listed tools can move and the Repetitive tasks widget keeps its place; photo and chat modules are scanned for any import of the ordering code Accepted, §16
The assistant's views become a way to count what a member reads in a conversation (stage three) the member Only a use of a view the member asked for counts, and whether they asked is decided by our assistant server, never the model; a view offered without being asked for, a reply being drawn, and anything said never count; what was asked and which record was shown are never recorded Conventional, test-pinned: a render never notes a use, a tap on an offered view never does, a tap on an asked-for view does once, nothing is noted without the group's time zone, and the call-site scan holds exactly four Accepted, §16; its legal effect is in §15
Arrange by use data leaves the phone through us — a crash report, a sync, a support export, "better recommendations" the member The record has no network path; the module imports nothing that talks to a network; our crash reporting drops console lines Conventional, test-pinned (a scan of the module's imports) —
The phone's own backup copies the phone-only records to iCloud or a Google account the member We do not receive the backup; the copy never claims the records cannot leave the phone; a restored phone applies the same removal rules Conventional (honest copy) Accepted, §16
A widget or a pin reveals something the member cannot otherwise see — a sealed title, a baby in a group they have left, another group's event the member whose record it is; a child Eligibility runs before preference (§6); the widget area waits for this member's own layout for this group; stage three's pointers are re-checked against the current group and re-read through the member's own access Structural as to access (row-level security decides every read); conventional, test-pinned as to the eligibility order —
Setup, a notification or a link is counted as a use and moves a widget the member Only the four call sites count; setup opens tools through the ordinary opener, which notes nothing Conventional, test-pinned —
Two phones overwrite each other's arrangement the member Every save states the revision it started from; the database refuses a stale one, and the phone offers to reload or keep editing Structural (the compare-and-set runs in the database) —
A stored pointer outlives the record, or keeps a copy of it, and shows a deleted baby's state or a removed member's task (stage three) the people in the record No content is stored; the widget re-reads and shows "unavailable" when the source is gone Conventional, test-pinned: the closed-list validator on the server and on the phone, tested against one shared set of cases, refuses any content field, and the unavailable state is a rendering rule with its own tests. A database check on the column would make the first half structural; it is not added in the first version, because a disagreement between it and the validators would lose the assistant's reply —
A pointer links a member's private conversation to a child or a third party's email (stage three) a child; a third party Photo, Mail Sifter, calendar, ceremony and Edit Home kinds carry no identifier; tasks, agenda and games carry none in the first version; baby pointers carry only the baby's identifier, as the growth figure already does; the transcript is deleted after 30 days Conventional, test-pinned (the same closed-list validator, on both sides); structural as to the 30-day deletion (a scheduled database sweep) The baby association is accepted, as it already is for the growth figure
Text in a task title or a forwarded email steers the model into pointing a member at another group's record, or at a view they cannot open (stage three) the member; the other group The model never sees or writes a pointer, and a pointer-shaped field in the model's own reply is dropped before the reply is sent; lookups take their group from the verified conversation; the phone re-checks every identifier against the group on screen and re-reads through the member's own access Structural as to access (row-level security decides every read); conventional, test-pinned as to who chooses the pointer, the dropping of a model-written one, and the phone's re-check —
A question about dinner becomes a copy of the group's records sent to a model (stage three) every member; a child named in a title Per-question ceilings on what reaches the model (§10.3), what was cut reported, named columns only, no notes, places, baby logs or chat Conventional, test-pinned (a large fixture that must respect every ceiling, and a column scan) The larger fetch used to work out repeats stays on our assistant server for the one question
A member's own-tasks lookup brings another group's task titles into this conversation, processed under this group's privacy level members of the other group The lookup is bound to the conversation's group, and every assistant tool takes its group from the verified conversation rather than from the model Conventional (code, a two-group test for the lookup, and a check that runs every assistant tool against a second group's data) Closed on 29 September 2026 — §16
A combined question sends baby data to the global provider at "Global, records stay here" (stage three) a child The combined read runs on the step that stays in Australia at that level; the meal-plan lookup reads no baby or health table; a sentence mixing a baby question with a dinner question is split by route (§10.3) Conventional, test-pinned by a routing check across every level, alongside the existing routing checks Nicknames not on the roster are not replaced, as today
The setup step widens the group's level on one person's say-so, or before the group has agreed every member; every child in the group The step calls the existing procedures, which apply a widening only when the required confirmations are counted, and the guardian rule at "Global, everything" Structural (the database procedures) —
A member reads "setup" or a chosen interest as having switched something on the member The screen says what each choice does and does not do; selections never write a consent, a group setting or an account-wide setting Conventional, test-pinned —
The optional task list becomes a feed that keeps loading every member Twenty rows a page, only on an explicit control, with a visible end; off unless added Conventional, test-pinned —
A child is steered towards the assistant, Mail Sifter or a private calendar through setup or a widget the child The same predicate that hides those tools from a child filters setup, shortcuts, widgets and hints; the server refuses a child on each Structural for the server refusals; conventional, test-pinned for the filters —
Arrange by use moves a widget a member relies on to the bottom because they read it without tapping it the member, mildly Pins; the switch; a tool moves at most one place a week — Accepted, §16

13. Structural versus conventional

Structural, as built:

Conventional, and pinned by a test (the tests are listed by name under Sources):

Conventional, and pinned by a test, for the third stage as built (the tests are listed by name under Sources):

14. Best interests of the child

15. The under-16 rules: the finding

The full re-run is in our under-16 self-assessment §15, its re-run against the built second stage is §15.13, and its re-run against the third stage — its design, then as built — is §15.14. In short:

16. Residual risk, and findings not accepted

Findings not accepted, because they need a decision rather than acceptance:

Closed:

Residual risk we accept:

17. Review triggers

Re-read this assessment, and the under-16 self-assessment's §15, before any of:

18. Checklist against exposure draft s 38(2)

s 38(2) Requires Answered in
(a) nature, scope, context, flow and purposes of handling children's personal information §§1–4, 7, 9, 10
(b) why the collection is strictly necessary §3 — per item, and what is deliberately not collected
(c) lawful and fair collection §11
(d) consistency with the best interests of the child §14
(e) how we comply with the Code and the Act §§5, 11, 13, 15
(f) risk of harm to children §§12, 14, 16

s 38(3): this assessment preceded the code for the second stage and for the third. s 39: listed on the published register.

19. Sources

Primary: Children's Online Privacy Code, exposure draft, ss 9, 10, 28(2)(g), 33, 38 and 39 (kept with the register's primary sources); Online Safety Act 2021, compilation No. 4 (12 September 2026), ss 63C, 63D, 63G and Division 4A, read on the Federal Register of Legislation on 29 September 2026; Online Safety (Age-Restricted Social Media Platforms) Rules 2025, compilation No. 1 (26 March 2026), s 4A, read on the Federal Register of Legislation on 29 September 2026; eSafety, "How to assess if a service is an age-restricted social media platform" (page last updated 30 March 2026), read on 29 September 2026.

Sibling assessments: ./2026-09-ban-self-assessment.md §§15, 15.13 and 15.14; ./privacy-levels.md §3A; ./cloud-inference.md; ./feature-first-uses.md §§1, 1A; ./child-accounts.md; ./photo-wall.md; ./inbound-email.md; ./device-calendars.md; ./baby-tracker.md §3.4 (the growth figure's { kind, baby_id } precedent); ./home-brief-editions.md (the daily brief in the Home's fixed summary position).

In repo, as built on 29 September 2026: supabase/migrations/<version>_user_home_layouts.sql (the table, its checks, grants, row-level security, the revision trigger, the deactivation trigger and save_home_layout); supabase/functions/export-my-data/index.ts (the export section); lib/widgetRegistry.ts (the eight widgets, the seven rankable tools, the eligibility order); lib/homeWidgetData.ts (what each widget reads, and Edit Home's sections); lib/homeLayout.ts (layout validation, composition and edit operations, the setup seed and proposal); lib/arrangeByUse.ts (Arrange by use) and hooks/useArrangeByUse.ts (the order frozen per visit); lib/groupSnapshotStore.ts (the phone-only records, their caps, pruning and in-flight protection); store/slices/createHomeLayoutSlice.ts (loading and saving the layout); store/slices/createGroupSlice.ts (pruning only after an authoritative membership list); components/Widgets/HomeWidgetArea.tsx, components/Widgets/WidgetHost.tsx, components/Widgets/EditHomeSheet.tsx and components/Widgets/ArrangeByUsePanel.tsx; components/Home/ToolShortcutRow.tsx and components/Tools/ToolsDirectory.tsx (the other two places a use is noted); app/onboarding/setup.tsx, components/Onboarding/steps/, components/Onboarding/GlobalAiStep.tsx, hooks/usePrivacyLevelController.ts, lib/setupProgress.ts, lib/setupOrigin.ts and lib/toolReadiness.ts (setup, its record, the return from a tool's own screen, readiness); lib/featureHints.ts (hints read setup progress); lib/homeModules.ts (the data half of the photo rail and the day-two welcome); lib/privacyLevels.ts (the global AI step's words); constants/editHome.ts (every word Edit Home and the switch say); constants/legalTexts.ts (the privacy policy, version 1.17, and the child's page and policy); constants/aiTransparency.ts (the app's page on what the assistant can see); constants/automatedDecisions.ts and docs/privacy/automated-decisions.md; agent-server/src/tools/generated/choreTools.ts (the own-tasks lookup, §10.3); agent-server/checks/myTasksScope.check.ts and agent-server/checks/toolGroupScope.check.ts (the lookup's group and every tool's group); agent-server/src/privacyLevel.ts and agent-server/src/regionRouting.ts (which steps go global at which level, and the steps that stay in Sydney); agent-server/src/supervisor.ts (general conversation on the step that reads every request); agent-server/src/tools/householdSnapshotTool.ts and agent-server/src/householdSnapshot.ts (the existing combined read the third stage extends, with its named columns and its fetch of up to 1,000 rows); supabase/migrations/20260902131352_chat_retention_sweep.sql (assistant conversations deleted after 30 days); supabase/migrations/20260918091630_event_detail_confirmations.sql (the composite membership foreign key this design copies); the design plan for this work, revision 4, 28–29 September 2026, with the supersessions recorded against it; our internal decision record, docs/decisions/2026-09-29-home-tools-and-widgets.md.

In repo, the third stage as built on 29 September 2026 (every name planned before the code was kept): agent-server/src/widgetReferences.ts and lib/widgetReferences.ts, with the shared cases in test-utils/widgetReferenceVectors.json (the pointer, its kinds and their identifiers, its two validators, and the capabilities /api/usage advertises); agent-server/src/turnReads.ts (the per-question ceilings and the channel that carries pointers from a lookup, never through the model); agent-server/src/surfaces.ts (requests to open a tool or show a view, and their fixed sentences); agent-server/src/supervisor.ts (the request classification that recognises them, and the chat reply's list of what can be opened); agent-server/src/run.ts (answering them with no lookup, the spoken door, and collecting each question's pointers); agent-server/src/aggregate.ts (deciding whether a view was asked for, building the reply's list, dropping a pointer-shaped field the model wrote, and the sentence for a question that looked nothing up); agent-server/src/server.ts (the app's list of kinds it can show, and /api/usage); agent-server/src/mealPlanDay.ts and agent-server/src/tools/mealPlanDayTool.ts (the current meal-plan day, shared with the combined read's meals section); agent-server/src/domains/insightAgent.ts and agent-server/src/domains/mealPlannerAgent.ts (the two prompt rules that keep a meals question a read); agent-server/src/tools/generated/calendarTools.ts, agent-server/src/tools/generated/mealplannerTools.ts and agent-server/src/tools/generated/pantryTools.ts (the five actions moved onto confirmed outcomes); lib/assistantReplyMetadata.ts (what a reply stores), components/Assistant/AssistantWidgets.tsx and components/Widgets/AssistantWidgetHost.tsx (drawing a view, Show on Home, and the fourth call site), with components/Widgets/WidgetHost.tsx and components/Widgets/MealsWidget.tsx (the renderer both surfaces share, and one day of one plan); constants/assistantWidgets.ts and constants/assistantCopy.ts (every word the views and the Assistant screen say); lib/assistantReceipts.ts and components/Assistant/OutcomeReceipt.tsx (what was saved, under the reply just given); lib/assistantExampleLedger.ts, lib/assistantExamples.ts, components/Assistant/AssistantExampleChip.tsx, hooks/useAssistantServerCapabilities.ts and store/slices/createAssistantExamplesSlice.ts (the examples and their shown markers); lib/arrangeByUse.ts (unchanged; now called from four places); docs/assistant-capability-inventory.md (every command a tool accepts, classified for the assistant).

Tests that pin §13's conventional list: __tests__/user_home_layouts_rls.test.ts (shape, grants, a second active member of the same group and an owner or admin reading nothing, a pending member refused, the compare-and-set, key immutability, and the five deletion paths); lib/__tests__/memberRecords.test.ts and store/__tests__/loadUserGroupsPrune.test.ts (caps, pruning only on success, no resurrection); lib/__tests__/widgetRegistry.test.ts and lib/__tests__/homeWidgetData.test.ts (the eligibility order, the default Home); lib/__tests__/arrangeByUse.test.ts, lib/__tests__/arrangeByUseBoundaries.test.ts and hooks/__tests__/useArrangeByUse.test.tsx (the rule, its imports, freeze per visit); lib/__tests__/toolUseCallSites.test.ts (four call sites); lib/__tests__/arrangeByUsePolicyNumbers.test.ts (the published numbers against the code); components/Chat/__tests__/noFeedbackFeatures.test.ts (the source scan); lib/__tests__/homeLayout.test.ts and store/__tests__/homeLayoutSlice.test.ts (composition, seeding, save, conflict and refusal); __tests__/app/(tabs)/home-widgets.test.tsx and __tests__/app/(tabs)/home-edit.test.tsx (Home's order, isolation, paging, Edit Home); components/Widgets/__tests__/ (each widget); lib/__tests__/homeWidgetLists.test.ts (paging and the agenda window in four time zones); components/Onboarding/__tests__/GroupSetupScreen.test.tsx, components/Onboarding/__tests__/setupSteps.test.tsx, components/Onboarding/__tests__/GlobalAiStep.test.tsx and hooks/__tests__/usePrivacyLevelController.test.tsx (setup and the AI step); lib/__tests__/setupProgress.test.ts, lib/__tests__/setupOrigin.test.ts, lib/__tests__/toolReadiness.test.ts and lib/__tests__/featureHints.test.ts (the record, readiness and hints); __tests__/app/(tabs)/tools/baby/add.test.tsx, __tests__/app/(tabs)/tools/calendar/import.test.tsx and __tests__/app/(tabs)/tools/directory-readiness.test.tsx (returns from setup, readiness lines); lib/__tests__/legalCompliance.test.ts, lib/__tests__/automatedDecisions.test.ts, lib/__tests__/childPrivacyPolicy.test.ts, lib/__tests__/aiTransparency.test.ts and lib/__tests__/editHomeCopy.test.ts (the published and on-screen words).

Tests that pin §13's third-stage list: agent-server/checks/widgetReferences.check.ts and lib/__tests__/widgetReferences.test.ts (the pointer on both sides against the shared cases, the ceilings, the channel, the fixed sentences); agent-server/checks/replyPath.check.ts (requests to open answered with no lookup, a forwarded email that cannot make one and a change request that keeps its change, whether a view was asked for, at most three views, none on a spoken reply, none for an older app, a pointer-shaped field from the model dropped, the sentence for a question that looked nothing up); agent-server/checks/householdSnapshot.check.ts and agent-server/checks/mealPlanDay.check.ts (the meals section, a repeating swimming lesson beside a dinner, the 200-row fixture, the refused seventh lookup, the columns, and the meal-plan day's parity with the app); agent-server/checks/regionRouting.check.ts (routing level by level); agent-server/checks/mutationOutcomes.check.ts (the five confirmed outcomes); agent-server/checks/capabilityInventory.check.ts (the inventory); components/Widgets/__tests__/AssistantWidgetHost.test.tsx (the group on screen, the phone's own records, unavailable with no buttons, a Home-only hide, the fourth call site, Show on Home, no contact with our assistant server); lib/__tests__/assistantReplyMetadata.test.ts; lib/__tests__/assistantReceipts.test.ts; lib/__tests__/assistantExampleLedger.test.ts and components/Assistant/__tests__/AssistantExampleChip.test.tsx (the examples); __tests__/app/(tabs)/assistant-audience-and-receipts.test.tsx (the Assistant screen's words, an example that fills the box and sends nothing, and receipts under the reply just given only).