The core of MiFamilias: record a video today, lock it until a date you choose - a 18th birthday, a wedding day, twenty years from now - and we guarantee delivery. Every flow below maps to shipped code: handlers, scheduled jobs and payment rails running in the product today.
Dad recorded this for my wedding day. He passed four years ago. It unlocked this morning.
One pass through the system. Pricing is computed at creation (video length × storage duration × recipients), payment is a capsule credit or subscription, and delivery is handled by an hourly scheduled job that never forgets.
flowchart LR
A(["fa:fa-video Record a message"]) --> B["fa:fa-calculator Dynamic price
length x storage years
x recipients"]
B --> C{"fa:fa-credit-card Pay"}
C -->|"credit packs
1 / 5 / 10 / 25"| D["fa:fa-lock LOCKED
encrypted in S3"]
C -->|"unlimited
subscription"| D
D --> E["fa:fa-bell Reminders
1 week / 1 day /
day-of (configurable)"]
E --> F["fa:fa-clock Hourly unlock job
scans by unlock date"]
F --> G(["fa:fa-envelope-open Delivered
recipients notified"])
G --> H["fa:fa-book Personal capsule ->
private diary entry"]
G --> I["fa:fa-users Family capsule ->
family feed post"]
style A fill:#14262a,stroke:#34d399,color:#e8f4f0
style B fill:#14262a,stroke:#34d399,color:#e8f4f0
style C fill:#0e3b2e,stroke:#4ade80,stroke-width:2px,color:#e8f4f0
style D fill:#0e3b2e,stroke:#4ade80,stroke-width:2px,color:#e8f4f0
style E fill:#14262a,stroke:#34d399,color:#e8f4f0
style F fill:#14262a,stroke:#34d399,color:#e8f4f0
style G fill:#0e3b2e,stroke:#34d399,color:#e8f4f0
style H fill:#14262a,stroke:#8aa6a0,color:#8aa6a0
style I fill:#14262a,stroke:#8aa6a0,color:#8aa6a0
Three distribution models share this rail: personal (named recipients), family (the whole bubble), and celebrity (public broadcast to followers - a creator-economy surface on the same plumbing).
The lock lives on the server, not in the app. Content is encrypted in S3 and a playback URL is only ever signed after the unlock date has passed. There is no admin override - this is the trust product, and it is architecturally honest.
sequenceDiagram
participant R as Recipient (too early)
participant API as GET /capsules/:id
participant S3 as Encrypted storage
R->>API: open capsule
API-->>R: locked preview only
(title, unlock date, sender)
Note over API,S3: No signed URL exists before the date.
Admins have no early-open path.
participant J as Hourly unlock job
J->>API: unlock date reached
API->>S3: sign playback URL
API-->>R: full capsule delivered
Creator protections mirror real life: a capsule can be cancelled while the creator is alive; once they pass, it proceeds as scheduled and cannot be recalled. Capsules from suspended or banned accounts are held - never silently released.
A capsule is a promise with a decades-long tail. Each one locked increases the cost of ever leaving - for the sender, the recipients, and the whole family around them.
flowchart TD
A["fa:fa-cube One capsule locked"] --> B["fa:fa-user-plus Recipients must join
to receive it"]
B --> C["fa:fa-people-roof Families form around
shared memories"]
C --> D["fa:fa-arrows-rotate They lock capsules
of their own"]
D --> A
C --> E["fa:fa-vault Switching cost:
irreplaceable content
with future delivery dates"]
style A fill:#0e3b2e,stroke:#4ade80,stroke-width:2px,color:#e8f4f0
style B fill:#14262a,stroke:#34d399,color:#e8f4f0
style C fill:#14262a,stroke:#34d399,color:#e8f4f0
style D fill:#14262a,stroke:#34d399,color:#e8f4f0
style E fill:#0e3b2e,stroke:#34d399,color:#e8f4f0
Acquisition rides life moments - weddings, births, milestone birthdays - and B2B channels (wedding planners, estate attorneys, funeral homes) where one professional introduces many families.
Capsules are the monetization engine: customers pay in proportion to the size of the promise we make - longer videos, longer storage, more recipients.
flowchart LR
subgraph P["Pricing inputs (admin-tunable multipliers)"]
L["fa:fa-film Video length tier"]
S["fa:fa-hourglass-half Storage duration tier
(1yr ... 50yr)"]
N["fa:fa-users Recipient count"]
end
P --> CR["fa:fa-coins Credit price"]
CR --> PK["fa:fa-box Credit packs
1 / 5 / 10 / 25"]
CR --> SUB["fa:fa-rotate Unlimited monthly
subscription"]
CR --> CC["fa:fa-medal Century Capsule $99.99
up to 100-year unlock"]
PK --> REV(["fa:fa-chart-line Revenue"])
SUB --> REV
CC --> REV
REV --> TF["fa:fa-building-columns Storage Trust Fund (SHIPPED)
10yr+ capsules earmarked at 4x
expected cost - health published live"]
style CR fill:#0e3b2e,stroke:#4ade80,stroke-width:2px,color:#e8f4f0
style REV fill:#0e3b2e,stroke:#34d399,color:#e8f4f0
style CC fill:#14262a,stroke:#34d399,color:#e8f4f0
style TF fill:#0e3b2e,stroke:#4ade80,stroke-width:2px,color:#e8f4f0
Long-dated tiers are live because the Storage Trust Fund guarantees them: every 10yr+ capsule's storage cost is reserved at sealing (4× safety factor), so no unfunded long-dated liability sits on the books - and the fund's health is published publicly. Under-18 accounts cannot purchase - guardian rails apply across the payment surface. Admin dashboard tracks the capsule release timeline (deferred-delivery liabilities) alongside revenue.