Souvenir

Find the stats your users would actually share.

Mateo · Northwind Notes

Top 1%

Sample data

2 of 4

Agencies charge $2,999 to $10,000 for this campaign. Souvenir is $199, once.

One-time payment · 14-day refund

A campaign kit you run in Claude. A CSV export is all it needs, and it takes a day.

Every number traces to a query. Before you send anything, a coverage report shows who gets a full recap, who gets a lighter one and who gets a thank-you note, and why. Below: the sample report for Northwind Notes, a made-up notes app with 5,000 users. See the full demo.

  • 4,673 users in the send file
  • 592 power
  • 2,394 regular
  • 703 light
  • 984 thank-you note

How user #3,107 gets their own numbers

A recap is one email with a different set of numbers for every person. The kit makes those numbers and the template that reads them, for the email tool you already use.

  1. Export one CSV

    One row per user with their activity for the year, from any analytics tool or database. Mixpanel and Postgres can connect directly instead.

    user_id,first_name,active_days,notes_created,docs_shared,notes_created_last_year
    nw100012,Mateo,284,5139,546,
    nw104603,Jonas,14,31,3,20
    nw100001,Hana,5,15,6,19
    …
    Sample data: 6 of the 16 columns in the Northwind Notes export.
  2. Stats for every user, and who gets what

    It picks the stats worth sharing, computes them for each user, and writes a coverage report. Light users get a different recap, not a thin copy of a power user's.

    592power users: ranks and their top stats
    2,394regular users: totals and a persona
    703light users: a persona and their firsts, no ranks
    984no activity this year: what's new, no stat cards
    Sample coverage report, Northwind Notes: 4,673 users in the send file. 4 test and internal accounts were removed first, and 323 users who opted out were left out of the send.
  3. Import the file, paste the template

    An import file keyed on your user IDs, with every line already filled for that user, and an email template in your tool's own merge tags.

    <p>{{ person|lookup:'recap2026_email_body' }}</p>
    {% if person|lookup:'recap2026_card1_headline' %}
      <h1>{{ person|lookup:'recap2026_card1_headline' }}</h1>
      <p>{{ person|lookup:'recap2026_card1_body' }}</p>
    {% endif %}
    Shortened from the Klaviyo template the kit wrote for the Northwind Notes sample. For Mateo, card 1 reads "5,139" and "notes written in Northwind Notes from Jan 1 to Nov 15, 2026". Braze, HubSpot, Customer.io and Iterable each get their own import file and a template in their own syntax: Liquid for Customer.io.

Your data can make a stat for almost anything. Few of them belong on a card.

The kit scores each candidate against rules drawn from recaps people shared, keeps the few worth a card, and tells you why each one made it.

Ranks only for the top 20%

A rank appears only on something a person would want to share, and only when they're in the top 20%. Everyone else gets a true claim of another kind: their rank in their own group, a rare habit, or how much they grew.

Sensitive data stays out

10 categories are filtered by default: health, reproductive, sexual, religious and political data, gambling, money trouble, precise location, bereavement, and activity that may belong to someone else in the household. Cancellations and refunds never get celebratory copy.

No rank over a small group

A rank needs at least 100 people behind it, so nobody can be picked out and no "top 1%" is a top 1 of 40.

Every number traces to a query

No stat is estimated or written by AI. Each one comes from a script, and the QA report blocks any number with no query behind it. Tap "How this number was made" on the sample to see one.

113 documented checks, built on 31 criteria and 16 failure patterns from documented recaps at Spotify, Duolingo, Raycast and others.

$199 once, for your whole user base.

Get Souvenir Pro for $199

One-time payment · 14-day refund

Drop in your logo and two colours

The sample cards re-skin here, in your browser. Nothing is uploaded. The first card is the company recap most teams send; the rest are what different users get from the same data.

Logo

Every card says "Sample data": the numbers belong to a made-up company. Yours come from your export.

The agency outcome, from your own data

Building one in-house takes engineering and design time most teams can't spare in November.

What you compareSouvenirAgencyBuild it in-house
Price$199 once$2,999 to $10,000+Engineering and design time
Who does the workYou and Claude, in about a dayThe agency, from your data exportYour engineers and a designer
Each user's own numbers in your email toolImport file and merge-tag templates includedDepends on the agencyIf you build it
Where your user data goesYour own Claude account. Never to us.To a third partyStays in-house
Next yearRun the kit you own on next year's export. The 2027 edition is an optional update.Pay againRebuild or maintain it

Pay once for your brand, or yearly for your clients.

Souvenir Pro

For the person who owns email at a software company.

$199one time
  • The skill, card and email templates
  • Per-user delivery for Braze, Klaviyo, HubSpot, Customer.io and Iterable
  • The card renderer
  • One brand

Founding offer: the first 25 Pro buyers get the 2027 edition free. Ends Sat Nov 14, 23:59 PT. On Sun Nov 15, Pro goes to $249.

Get Souvenir Pro for $199

One-time payment · 14-day refund

Expense it on a company card. No PO needed.

Souvenir Agency

For agencies that sell recaps to clients.

$1,499per year, renews automatically
  • Everything in Pro, for unlimited clients
  • White-label output. Clients own what you make for them
  • A client data request brief, proposal and pricing templates, a client QA sign-off sheet
  • A 30-minute onboarding call
  • Next year's edition while you're subscribed
  • Cancel any time and keep the edition you have

One $2,500 client job pays for the year.

Need an invoice for your finance team? Email me.

Everything in the kit

Finds the stats

  • Reads your CSV export, Mixpanel or Postgres/Supabase, and lists every per-user metric you could use
  • Scores each candidate: personal, positive, surprising, shareable, safe, computable
  • Playbooks for SaaS and consumer apps: the stats that work and the ones that backfire
  • Your first card, from your own data, in about 10 minutes

Computes them for every user

  • Every number comes from a script and a query, never typed by AI
  • Ranks, percentiles, "top 3% of…" lines and 9 rule-based persona labels
  • A true claim for users outside the top 20%: their rank in their own group, a rare habit, how early they started
  • Separate recaps for power, regular, light and dormant users
  • Test, internal and API accounts removed before anything is ranked

Handles the users who logged in twice

  • A coverage report: who gets a full recap, who gets a lighter one, who gets a thank-you note, and why
  • A fallback for every stat a user is missing
  • No ranks over groups too small to mean anything

Keeps you out of trouble

  • 10 sensitive categories filtered by default, and you can edit the list
  • Opted-out users dropped from the export
  • Card links that don't reveal user IDs
  • 113 documented checks drawn from real recap failures, and a QA report that blocks a number with no query behind it, a broken card or a merge tag that would print blank

Makes share cards in your brand

  • A card set for every user, in 9:16 story and 1:1 feed sizes, as HTML and PNG
  • Your colours, fonts and logo from one small brand file, and a proof sheet you approve before the batch
  • Two layout families, tested on loud brands and quiet ones
  • Contrast and text-fit guards, so a yellow brand or a 40-character name still reads
  • 6 bundled fonts to stand in when your brand font can't be embedded
  • Download and share buttons on every card, with a link preview image

Launches inside your app, not only in the inbox

  • A tap-through story of each user's year that opens inside your product
  • No engineer needed if your app already shows Braze in-app messages: one opens the story inside your app
  • On any other setup, one link file and a one-page brief for your engineer, with copy-paste code for web, iOS, Android and React Native
  • Story opens, completions and shares sent to your own analytics

Delivers through the email tool you already have

  • An import file for Braze, Klaviyo, HubSpot, Customer.io or Iterable, shaped to that tool's limits
  • A merge-tag email in your tool's own syntax, with a default for every field, so nobody gets "Hi ,"
  • Subject line, preheader, in-app copy and push copy
  • A step-by-step import guide for your tool
  • Your worst cases shown first: the longest name, a count of exactly 1, a missing stat

Plans the launch and measures it

  • A launch plan worked back from your send date, December or January
  • A holdout group where your user tiers are big enough to measure lift
  • A dashboard spec built on share rate per card and clicks, not opens
  • A "how we calculated this" page for your users
  • A post-mortem template that next year's edition starts from

Runs again

  • Re-run on a new export without answering the setup questions again
  • Change one stat when Legal asks, then re-run without starting over
14day refund

Run it on your data.

If you wouldn't send what it makes, email me within 14 days for a full refund.

Harsh, who makes Souvenir

Licence terms

Pro: one brand. A freelancer building for clients buys one Pro per client brand, or buys Agency. Everything the kit makes for that brand (cards, emails, import files, copy) belongs to you.

Agency: unlimited client brands while you're subscribed. Nothing your client's users see carries Souvenir branding. Clients own what you make for them and keep it after you cancel. The kit itself stays with the agency: don't hand the kit files to a client or resell them. A client who wants to run it themselves buys Pro. Cancel any time and keep the edition you have; you stop getting new editions and the onboarding call.

Too late for December? Send it the first week of January.

Ship before Christmas, or send it the first week of January, when inboxes are quiet. "Your 2026, in review" in the first week of January reaches people after the holiday rush.

Fri Nov 20Buy by this day to send in December
Fri Dec 18Buy by this day to send in the first week of January

Who makes this

I'm Harsh. I make Souvenir on my own, from Bengaluru. The recaps people forward are the per-user ones, and most software teams can't make one: the agency quote starts at $2,999, and the engineer is busy in December.

So I built a kit that does it from your own export, in your own Claude account, with every number traceable. Questions go to me, not a support desk: harsh@sendsouvenir.com.

Before you buy

Our Claude isn't connected to our data.

Export one CSV of per-user activity. That's the default path.

Can I use it for clients?

Pro is one brand. Agency is unlimited clients, white-labeled, and clients own what you make for them. Agency also includes a data-handling note for your client's legal team.

Do you build it for us?

No. It's a product, made so you don't need the $2,999 agency.

How does each user get their own numbers?

The kit writes a per-user attribute file your email tool imports, plus the email template with merge tags and fallbacks for missing stats. The card images are files you put on any static host or storage bucket, at one URL. Before it renders them, the kit tells you how many files there will be and which host fits. If hosting slips, the email shows each card as text.

Which Claude plan do I need?

Claude Pro or above, with code execution turned on. On a Team or Enterprise plan, an admin can turn off code execution or skill uploads. If yours is blocked, use a personal Pro plan or Claude Code. Your data stays in whichever account you use.

Is it too late for this year?

Buy by Fri Nov 20 to send in December, or by Fri Dec 18 to send in the first week of January.

What if our data is messy or thin?

Light and dormant users get a different recap (persona and firsts, no ranks), and a coverage report shows exactly who gets what. A rank needs at least 100 users behind it; below that, rank cards turn off.

Our engineer could build this in two days.

If you have a warehouse and an engineer with two spare days in December, they could build the data part. The kit also does what they'd skip: which stats to show, copy for every tier, fallbacks for light users, the coverage report and the cards.

Can't we send a company-level recap, or a Canva template?

You can, and lots of companies do. A per-user recap is the one people forward, because it's about them. The sample cards above show both: the first is the company recap, the rest are per user.

What happens if I cancel Agency?

You keep the edition you have and can keep using it for clients. You stop getting new editions and the onboarding call.

Check your data before you buy

The readiness checklist tells you which recap stats your data supports today, and what's missing.

One email with the checklist, then a few about building a recap. Unsubscribe from any of them.

Privacy

Souvenir runs inside your own Claude account. Your users' data goes from your export to Claude and into your own files. It never reaches me, and the kit sends nothing home.

This site counts visits without cookies. The logo and colours you try above stay in your browser. If you ask for the checklist, Kit stores your email to send it. Fonts load from this site, not from a font service. Checkout runs on Lemon Squeezy.