Find the stats your users would actually share.
Mateo · Northwind Notes
Top 1%
Sample data
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.
Checkout opens this week. Email harsh@sendsouvenir.com and I'll send you the link the day it's live.
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.
-
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. -
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.
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.592power users: ranks and their top stats2,394regular users: totals and a persona703light users: a persona and their firsts, no ranks984no activity this year: what's new, no stat cards -
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.
One-time payment · 14-day refund
Checkout opens this week. Email harsh@sendsouvenir.com and I'll send you the link the day it's live.
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.
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 compare | Souvenir | Agency | Build it in-house |
|---|---|---|---|
| Price | $199 once | $2,999 to $10,000+ | Engineering and design time |
| Who does the work | You and Claude, in about a day | The agency, from your data export | Your engineers and a designer |
| Each user's own numbers in your email tool | Import file and merge-tag templates included | Depends on the agency | If you build it |
| Where your user data goes | Your own Claude account. Never to us. | To a third party | Stays in-house |
| Next year | Run the kit you own on next year's export. The 2027 edition is an optional update. | Pay again | Rebuild 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.
- 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.
One-time payment · 14-day refund
Expense it on a company card. No PO needed.
Checkout opens this week. Email harsh@sendsouvenir.com and I'll send you the link the day it's live.
Souvenir Agency
For agencies that sell recaps to clients.
- 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.
Checkout opens this week. Email harsh@sendsouvenir.com and I'll send you the link, or an invoice.
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
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.
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.
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.