Legal

Privacy Policy

Effective date: May 19, 2026 · Operated by Nathan Crowther

Overview

Heirloom (“we,” “our,” or “the service”) turns ancestor documents into illustrated children’s stories using AI. This policy explains what information we collect, how we use it, and your rights as a user.

By using Heirloom, you agree to the practices described here.

What We Collect

Documents you upload

When you upload a document, your file is briefly and securely staged in Vercel Blob storage while we extract its text. The original file is deleted immediately after text extraction — typically within seconds. Only the extracted text is retained in our database. That text is used solely to identify story candidates and generate stories, and is processed by Anthropic’s Claude API (see Third-Party Services below).

Account information

If you create an account, we collect your email address — either directly (email/password sign-up) or via Google OAuth. We do not collect your name unless it appears in a document you upload.

Session data

Before you create an account, we assign your browser an anonymous session ID stored in your browser’s localStorage. This is used to track story generation limits for free, anonymous users. It is not a tracking cookie and is not used for advertising.

Payment information

Subscription payments are processed entirely by Stripe. Heirloom stores only your Stripe customer ID and subscription status. We never see or store your card number, expiration date, or CVV.

Ancestor profile information (optional)

When you choose to add ancestor details during story generation, we may collect: the ancestor’s name, nicknames or document aliases, cultural heritage, birth and death years, and birth location. This information is used to create an ancestor profile that improves illustration accuracy and maintains visual consistency across stories.

Photos you upload for appearance analysis are not stored. If you optionally upload a photo of an ancestor, the image is sent to Anthropic’s Claude API to generate a plain-text appearance description (e.g. “a woman with silver hair and kind eyes”), then immediately discarded. Only the derived text description is stored — never the original image.

Generated content

Stories and AI illustrations you generate are stored in your account so you can access them later. When ancestor profiles are created, an AI-generated portrait illustration may also be generated and stored. If you edit a story’s text, the original AI-generated version is preserved privately in your account so you can revert if needed.

Reference photos for image regeneration are not stored. If you optionally upload a reference photo when regenerating an illustration, that image is sent to Anthropic’s Claude API alongside the current illustration to improve the regenerated image. The photo is then immediately discarded — only the updated illustration prompt text is stored, never the original image.

Family groups

Family plan subscribers can create shared family groups and invite others — including free-plan users — to join via a shareable invite link. When you participate in a group, we store: the group name, your membership role (owner or member), and the date you joined. Group owners can see the email addresses of all group members within the group settings panel.

When you share a story to a group, that story’s title, text, illustration, and ancestor name become visible to all current members of that group. Group-shared stories are only accessible to authenticated group members — they are not accessible via a public URL and do not appear in search engines. You can remove a story from a group at any time, which immediately removes other members’ access to it.

Group invite links do not expire by default. Anyone who receives your invite link can use it to join your group. Group owners can rotate the invite link at any time from group settings to prevent new joins with the old link.

Shared stories

Stories are private by default. If you choose to share a story using the “Share story” feature, the story’s title, text, illustration, and ancestor name become accessible to anyone with that link. When a shared link is posted to social media or messaging apps, those platforms may generate a link preview and cache a copy of the story’s illustration. You can disable sharing at any time from the story page, but previews already cached by third-party platforms may persist. Only share stories whose content you are comfortable making publicly accessible.

How We Use Your Information

PurposeData used
Generate story candidatesDocument text → Anthropic Claude API
Generate story illustrationsStory text, ancestor context → Google Gemini Imagen 4 API
Analyze ancestor photos (optional)Uploaded photo (temporary, not stored) → Anthropic Claude Vision API
Regenerate story illustrations (paid plans)Current illustration + optional reference photo (temporary, not stored) + text feedback → Anthropic Claude Vision API → Google Gemini Imagen 4 API
Generate ancestor portraitsAncestor name, heritage, appearance description → Google Gemini Imagen 4 API
Store ancestor profilesName, heritage, years, derived appearance description → Supabase
Authenticate your accountEmail address → Supabase Auth
Process subscription paymentsEmail, billing info → Stripe
Enforce plan usage limitsSession ID or user ID, story count
Manage family group membershipGroup name, member associations, shared story links → Supabase
Provide customer supportEmail address

We do not use your information for advertising, and we do not sell or rent your data to third parties.

Third-Party Services

When you use Heirloom, your document text or story content may be transmitted to these services as part of generating your story.

ServiceWhat we sharePurpose
AnthropicDocument extracted text; optionally, photos you upload for ancestor appearance analysis or image regeneration (photos are not retained by us or Anthropic beyond the API call)AI story generation, appearance analysis, and illustration prompt refinement (Claude)
Google (Gemini)Generated story text; ancestor name, heritage, and appearance descriptionsAI illustration generation (stories and ancestor portraits)
Google (OAuth)Email addressSign-in
SupabaseAll stored dataDatabase, auth, and file storage
StripeEmail, subscription infoPayment processing
VercelRequest metadata; uploaded files (briefly staged in Vercel Blob during upload processing, then deleted)Hosting, infrastructure, and temporary file staging

Data Retention

Anonymous users (no account)

Document text, story candidates, generated stories, and ancestor profiles are automatically deleted 30 days after creation. Ancestor profiles that are not linked to any generated story are also deleted on this schedule.

Registered users

Your data is retained as long as your account is active. You can delete individual stories at any time from the Gallery. Ancestor profiles are retained alongside your account. To request full account deletion — including all stories, documents, and ancestor profiles — contact us at the email below.

Payment records

Stripe retains transaction records as required by financial regulations, independent of your Heirloom account.

Children's Privacy

Heirloom creates stories for children, but the service is directed at and intended to be used by adults (18 and older). We do not knowingly collect personal information from children under 13. If you believe a child under 13 has submitted information through Heirloom, please contact us and we will delete it promptly.

California Residents — CCPA Rights

If you are a California resident, you have the following rights under the California Consumer Privacy Act:

  • Right to know — You may request a summary of the personal information we hold about you.
  • Right to delete — You may request deletion of your personal information.
  • Right to opt out of sale — We do not sell personal information. No opt-out is necessary.
  • Right to non-discrimination — We will not discriminate against you for exercising these rights.

To exercise any of these rights, contact us at the email below.

Security

We use industry-standard practices to protect your data. Specific measures include:

  • HTTPS and encrypted connections — all data is encrypted in transit; database connections are encrypted at rest.
  • Rate limiting on uploads and photo analysis — requests to our document upload and ancestor photo endpoints are rate-limited per IP address to prevent abuse of our AI processing pipelines.
  • Access-controlled ancestor profiles — ancestor profile data is only accessible to the owner or in contexts where the ancestor is linked to a story you have explicitly made public.
  • CORS protection — our API only accepts cross-origin requests from the Heirloom application itself.
  • Authenticated endpoints — all write operations that modify your data require a verified authentication token.

No method of transmission or storage is 100% secure. We encourage you to use a strong password and to avoid uploading documents containing highly sensitive information beyond what’s needed to tell a family story.

Changes to This Policy

We may update this policy from time to time. We will notify registered users by email or via an in-app notice when material changes are made. Continued use of the service after changes are posted constitutes acceptance of the updated policy.

Contact

For privacy questions, data requests, or account deletion, contact us at: hello@heirloomstories.app

← HomeTerms of Service