|
When a person dies, their family inherits a digital life they never asked to manage. 100 online accounts. Banks, streaming services, social media, government portals, insurance, healthcare, e-commerce β all sitting open, many still billing. 15 months is the average time a family spends trying to close them. |
|
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β π§ OWNER π€ FAMILY β
β Plans ahead Closes accounts β
β β
β Add accounts + notes Unlock trigger: name + date + state β
β Choose invitees + roles β Trusted guardian receives OTP code β
β Name a trusted guardian β Estate unlocks + invites fire β
β Update vault anytime β AI letters + playbooks + tracking β
β β β
β Evidence bundle for probate β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Afterword is a two-sided platform. A living person can set up their estate in 20 minutes β adding accounts, writing executor notes, and designating a trusted guardian who controls the unlock key. When they pass, their family unlocks the estate through a two-factor verification system, then follows AI-generated playbooks to close every account.
No prior setup required. If the deceased never used Afterword, the family can still use every feature β manual account entry, AI letter generation, real-time Kanban tracking, and the evidence bundle β without any pre-registration.
The most security-critical feature. Two factors are required to unlock an estate β neither alone is sufficient.
| Step | Factor | What It Is | What It Prevents |
|---|---|---|---|
| 1 | Knowledge | Deceased's full legal name + date of passing + state | Requires genuine knowledge of the deceased |
| 2 | Possession | 6-digit OTP emailed to the trusted guardian | Blocks anyone who read an obituary |
Anyone β /unlock β Enter name + date + state
β
[Match found in estate DB]
β
OTP β Guardian's email inbox
β
Guardian verifies request is legitimate
β
Guardian shares 6-digit code
β
Estate unlocks. Invitations fire.
Why not just the death date? Obituaries are public. Anyone can know a name, death date, and state. The trusted guardian is the human firewall that no algorithm can replace.
|
Model: |
Afterword generates a unique legal closure letter for every account, tailored by urgency tier:
|
Letters are RUFADAA-aware β the Revised Uniform Fiduciary Access to Digital Assets Act is referenced automatically for the 46 states that have adopted it. Every letter is editable inline before sending.
afterword/
βββ apps/
β βββ web/
β βββ app/ # Next.js 15 App Router
β β βββ page.tsx # Landing β dual-path hero
β β βββ unlock/ # Estate unlock trigger
β β βββ verify/[token]/ # Invitee verification gate
β β βββ dashboard/ # Owner vault
β β β βββ new/ # Account creation
β β β βββ preview/ # Dry-run mode
β β βββ setup/ # Owner setup flow
β β β βββ about-you/
β β β βββ accounts/
β β β βββ invitees/
β β β βββ guardian/ # Trusted guardian config
β β βββ estate/[id]/ # Executor estate board
β β β βββ account/[id]/ # Account detail + playbook
β β β β βββ letter/ # AI letter preview + edit
β β β βββ export/ # Evidence bundle download
β β βββ api/auth/callback/ # Gmail OAuth callback (only API route)
β βββ components/
β β βββ estate/ # Board, cards, kanban
β β βββ letter/ # Letter preview, editor
β β βββ onboarding/ # Owner setup steps
β β βββ ui/ # Design system components
β βββ lib/
β βββ crypto.ts # AES-256-GCM client encryption
β βββ session.ts # Session token management
β
βββ convex/ # ALL backend logic lives here
β βββ schema.ts # Single source of truth β 10 tables
β βββ accounts.ts # Account queries + mutations
β βββ estates.ts # Estate lifecycle
β βββ owners.ts # Owner vault management
β βββ unlock.ts # Unlock trigger + OTP system
β βββ invites.ts # Invitation token system
β βββ crons.ts # 90-day auto-delete scheduler
β βββ ai/
β β βββ generateLetter.ts # Saul-Instruct letter generation
β β βββ classifyService.ts # Account tier classification
β βββ export/
β βββ evidenceBundle.ts # pdf-lib evidence bundle
β
βββ packages/
βββ platforms-db/ # Community-maintained platform data
βββ data/
βββ streaming.ts # Netflix, Spotify, Disney+...
βββ financial.ts # Chase, PayPal, Robinhood...
βββ social.ts # Facebook, LinkedIn, TikTok...
βββ health.ts # Insurance, pharmacy, fitness...
βββ government.ts # SSA, IRS, Medicare, USPS...
| Layer | Technology | Version | Why |
|---|---|---|---|
| Frontend | Next.js | 16.1.6 | App Router, React 19, Turbopack |
| Language | TypeScript | 5.x | End-to-end type safety with Convex |
| Styling | Tailwind CSS | 4.x | CSS-first, design tokens in globals.css |
| Database + Backend | Convex | 1.32.0 | Replaces Express + Prisma + Postgres entirely |
| AI | Saul-Instruct-v1 | 2024-03 | Legal-domain LLM, MIT license, free tier |
| Resend | latest | Invitation + OTP + alert emails | |
| pdf-lib | 1.17.1 | Evidence bundle + individual letter PDFs | |
| Monorepo | Turborepo | 2.x | Shared types across Next.js + Convex |
| Deployment | Vercel + Convex Cloud | β | Both free tier, git-push deploy |
Total monthly infrastructure cost: $0
Convex Starter (50GB free) + HuggingFace Serverless (free) + Vercel Hobby (free) + Resend (free tier) = zero spend.
This is not a policy promise. It is a technical guarantee.
|
AES-256-GCM encryption β in the browser No email body access β ever Token revoked immediately post-scan 90-day auto-delete |
|
22 screens across three user paths.
Path A β Owner (8 screens) β The living person planning ahead
| Screen | Route | Description |
|---|---|---|
| Landing Page | / |
Dual-path hero. Two equal CTAs. Stats bar. Guardian explainer. |
| Create Account | /dashboard/new |
4-word passphrase setup. Recovery warning. |
| Personal Details | /setup/about-you |
Full legal name. Verification key preview. |
| Add Accounts | /setup/accounts |
Manual entry with notes. 200+ platform autocomplete. |
| Choose Invitees | /setup/invitees |
4 role types. Personal message. |
| Name Guardian | /setup/guardian |
Trusted guardian email. OTP email preview. |
| Vault Dashboard | /dashboard |
Completeness score. Account list. Invitee panel. |
| Dry Run Preview | /dashboard/preview |
Owner previews the full invitee experience. |
Path B β Unlock Event (4 screens) β The moment everything activates
| Screen | Route | Description |
|---|---|---|
| Unlock Entry | /unlock |
Name + date + state form. Accessible to anyone. |
| OTP Waiting | /unlock (state) |
6-box OTP input. 10-minute countdown. Guardian note. |
| No Match | /unlock (state) |
Non-revealing message. Offers standalone executor path. |
| Unlock Confirmed | /unlock (state) |
Checkmark animation. Invitations firing confirmation. |
Path C β Executor / Invitee (8 screens) β Closing every account
| Screen | Route | Description |
|---|---|---|
| Verification Gate | /verify/[token] |
3-field identity check. 5 attempts. Warm tone. |
| Estate Board | /estate/[id] |
4-column Kanban. Urgency tiers. Real-time sync. |
| Account Detail | /estate/[id]/account/[id] |
Owner notes first. Playbook steps. Confirmation field. |
| Letter Preview | /estate/[id]/account/[id]/letter |
AI letter. Inline editing. PDF download. |
| Evidence Bundle | /estate/[id]/export |
Bundle download. Confetti on first download. |
System Screens (2)
| Screen | Route | Description |
|---|---|---|
| Demo Mode | /?demo=true |
Pre-seeded "Estate of Maria Santos". Amber banner. |
| Account Locked | /unlock or /verify |
Rate limit lockout. Countdown. Support link. |
node >= 20.0.0
npm >= 10.0.0git clone https://github.com/your-team/afterword.git
cd afterword
npm install# apps/web/.env.local
NEXT_PUBLIC_CONVEX_URL=https://your-project.convex.cloud
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
NEXT_PUBLIC_APP_URL=http://localhost:3000# Set Convex environment variables (in Convex dashboard or CLI)
npx convex env set HF_TOKEN hf_your_token
npx convex env set RESEND_API_KEY re_your_key
npx convex env set ENCRYPTION_SECRET your_32_byte_secret# Starts Next.js (Turbopack) + Convex dev server simultaneously
npm run devnpx convex run scripts/seedPlatformsnpx convex run scripts/resetDemo
# Then visit: http://localhost:3000?demo=trueThe platforms database (packages/platforms-db/) is the highest-value community asset in this project. Platform closure processes change. New services launch. Old ones close.
Every PR that adds or updates a platform playbook is meaningful.
// packages/platforms-db/data/streaming.ts β example entry
{
name: "Netflix",
domain: "netflix.com",
category: "STREAMING",
closureUrl: "https://www.netflix.com/cancelplan",
docsRequired: ["Death Certificate"],
playbook: [
{ step: 1, text: "Sign in to the account at netflix.com" },
{ step: 2, text: "Go to Account β Membership & Billing β Cancel Membership" },
{ step: 3, text: "If access is unavailable, call 1-866-579-7172 and reference bereavement policy" },
{ step: 4, text: "Request written confirmation and refund of any charges after date of death" },
],
avgCloseDays: 3,
lastVerified: "2026-01",
}- Fork the repository
- Add your platform entry to the appropriate file in
packages/platforms-db/data/ - Verify the closure URL is current and the playbook steps are tested
- Submit a pull request with the platform name in the title
See CONTRIBUTING.md for the full guide.
Afterword generates letters that reference RUFADAA β the Revised Uniform Fiduciary Access to Digital Assets Act, adopted in 46 US states. This law grants executors and personal representatives the legal right to access and manage a deceased person's digital assets.
Afterword is not a substitute for legal advice. The evidence bundle it produces may be submitted to probate court but should be reviewed by an estate attorney.
v1.0 β
Owner vault + Trusted guardian unlock + AI letters + Evidence bundle
v1.1 π² Outlook / Microsoft inbox scan
v1.2 π² Spanish + French letter generation
v1.3 π² International platforms β UK, Canada, Australia
v2.0 π² Direct closure APIs for top 10 platforms
v2.1 π² Upgrade to SaulLM-54B when available on HF free tier
v2.2 π² Crypto wallet notification workflows
v3.0 π² EU GDPR letter templates + international jurisdiction support
