Skip to main content

Data inventory

Status: Proposed 2026-09-24

This is the contract behind the privacy promise. Any pull request that adds a personal field must add a row here first. Rows are grouped by the collection that holds them; the full schema is in the data model.

Visibility values: self (the member only), friends, organizer (of the event in question), grove (members of that Grove), public, admin (moderation only, never exported), nobody (stored, never read back except by the system).

Account​

FieldPurposeVisibilityRetention
emailSign-in and magic linksnobody (used to send mail)Until deletion
passwordHash (argon2id)Password sign-in, optionalnobodyUntil deletion or password removal
handleThe only name other members seefriends, grove, organizer, public (only on public posts)Until deletion
avatarKeyOptional picturesame as handleUntil deletion or removal
homeAreaOne of eleven SoCal regions, picked from a listself, and as an aggregate count per GroveUntil deletion
interestsChosen tags, used by Ivy and for event suggestionsself, IvyUntil deletion
providers[]Apple or Google subject ids for SSOnobodyUntil deletion
discoverableWhether friends can find you by handle (default off)selfUntil deletion
publicPostsEnabledWhether you can post publicly (default off)selfUntil deletion
rolemember or adminnobodyUntil deletion

Not stored, ever: real name, phone number, birthdate, street address, device GPS, contacts, device identifiers beyond a push token.

Sessions and sign-in​

FieldPurposeVisibilityRetention
sessions.tokenHashSHA-256 of the session tokennobody30 days sliding, or on logout
sessions.clientios, android, or web, so you can revoke a deviceselfWith the session
magic_links.tokenHashSingle-use sign-in linknobody15 minutes

Social graph​

FieldPurposeVisibilityRetention
friendshipsWho is friends with whomthe two members involvedUntil either deletes the friendship or an account
friend_invites.codeInvite codes shared in personselfExpires, default 7 days
grove_membersMembership and organizer roleself, organizers of that Grove; counts are publicUntil leaving or deletion

Activity​

FieldPurposeVisibilityRetention
event_rsvpsGoing or interestedself, organizer of that event; counts are public30 days after the event ends
posts, comments, reactions, saved_postsThe feedper post: friends, grove, or public; comments follow the postUntil deletion
place_reviewsReviews and check-inspublic text; handle only if showHandleUntil deletion
place_listsSaved placesself unless isPublicUntil deletion
action_logPrivate impact journalselfUntil deletion
messages (ciphertext)Direct messagesparticipants90 days by default
companion_conversationsIvy chatsself24 hours unless pinned
push_tokensDevice push addressnobody30 days after last use
notification_preferencesWhat to sendselfUntil deletion

Server-side records that mention a member​

RecordWhat it holdsRetention
Access logs (pino)Route, status, duration, a hash of the session id. Never email, token, coordinates, or bodies.14 days
reportsWho reported what and why, for moderationUntil resolved plus 90 days
Aggregate statsCounts only, no idsIndefinite

What third parties receive​

PartyWhatWhy
AWS SESYour email address and the sign-in linkTo deliver magic links and account mail
Apple, GoogleNothing from us. When you use SSO they tell us a subject id and, if you allow, an email.SSO
Bunny StreamVideo files you upload, already stripped of metadataTranscoding and playback
OpenFreeMapMap tile requests from your device (no key, no cookies)Map rendering
AnthropicYour handle, your chosen interests, and the text of your Ivy conversationRunning the companion

No party receives your email for advertising, your location, your friends, or your RSVPs.