Where your $4 goes
Every Pro subscription pays for a stack of vendor bills, payment fees, taxes, and human time. This page is the honest version — not "we save you $1,000 a month" marketing copy, an actual cost ledger. We'd rather be transparent than hand-wavy.
Two separate tables below. The first is what comes out of your $4 in per-Pro vendor fees and usage costs. The second is the fixed AWS infrastructure that runs the platform regardless of how many tenants are on it — paid for collectively out of whatever's left from the first table, pooled across paying subscribers. We split them because they scale differently, and mixing them in one column is how cost ledgers end up lying to people. The third table walks the math at each growth stage so you can see exactly when the free tier starts being funded and when it has to shrink.
1. What comes out of your $4 (per-Pro)
These costs scale with each individual Pro subscription — vendor fees, AI you actually drove, your backup slice, taxes on your revenue, and the labor share attributable to your account. The "Typical" column is most users most months; "Heavy" is when AI surfaces get hammered or support time allocates harder to your account.
| Line | Typical month | Heavy month | Where it goes |
|---|---|---|---|
| Pro subscription | + $4.00 | + $4.00 | Collected by Stripe. Sales tax handled separately (see note below table). |
| Stripe processing fee | − $0.42 | − $0.42 | 2.9% + $0.30 per transaction. Fixed because the charge amount is fixed. |
| AI APIs (Gemini + Anthropic) | − $0.40 | − $1.50 | Vision (item detection, tag suggestions, label art) + box matching. Capped per tenant by the daily AI-cost ceiling so a single user can't run away with the budget. |
| Off-site backup (Backblaze B2) | − $0.03 | − $0.10 | Nightly encrypted DR uploads of your DB + photos. $6/TB-month at B2. Linear in stored bytes — heavy long-time tenants cost more than fresh ones. |
| MA State business taxes | − $0.25 | − $0.40 | MA corporate excise + estimated income tax, allocated per Pro. We're a Massachusetts-based business — no Delaware shell — so this row exists instead of pretending the cost doesn't. |
| Allocated to humans | − $1.00 | − $1.50 | Operator + admin time: support tickets, bug fixes, deploys, review. Today this is one person; as we grow this is what hires get paid out of. Roles glossary further down. |
| Net per Pro → pool | + $1.90 | + $0.08 | What each Pro actually contributes to the shared pool that funds fixed AWS hosting + free tier + reinvestment. This is the number that matters for the next table. |
Sales tax on your purchase (e.g. 6.25% MA sales tax if applicable to your jurisdiction) is added by Stripe at checkout, collected from you, and remitted directly by Stripe to your state. It doesn't show up in our cost ledger because we never see the money — pass-through.
2. The fixed AWS bill (paid from the shared pool)
These costs exist whether we have 1 paying subscriber or 1,000. Compute, storage, bandwidth — fixed per deployment, not per tenant. The pool from Table 1 has to clear this number every month before anything funds the free tier or reinvestment. Lines without an explicit "today" number are zero today and only show up at the next growth tier.
| Line | Today | At scale | What it covers |
|---|---|---|---|
| Prod compute (EC2) | $15.20 | $50–$300 | Today: t3.small at $0.0208/hr ($15.20/mo) handles a small user base. Mid-scale: t3.medium / t3.large ($30–$60/mo). Scale: ALB ($22/mo) in front of a small fleet ($60–$150/mo across 2–3 instances). Grows in steps, not smoothly. |
| Staging compute (EC2) | $7.60 | $25–$50 | t3.micro today. Bumps when prod does — staging needs enough headroom to mirror prod load tests. Not user-facing, but it's the difference between "we ship safely" and "we ship a crash to every tenant on Sunday." |
| Database | $0 | $50–$300 | Today SQLite lives on the prod EBS volume — zero incremental cost. Once concurrency hurts or we need point-in-time restore: RDS Postgres (db.t3.small ≈ $25 single-AZ; Multi-AZ doubles it; db.t3.medium with read replicas $100–$300). Biggest single jump in the arc. |
| Storage (EBS gp3) | $5 | $40–$150 | Disk for both instances + everyone's photos. $0.08/GB-month at the gp3 baseline. This is the line that defines how big the free tier can be — every free user holding 100 MB adds $0.008/mo. |
| Bandwidth (egress) | $5 | $30–$200 | Thumbs + photos on every grid view + container pulls. First 100 GB/mo free, then $0.09/GB. At scale we'll move static asset delivery to CloudFront ($0.085/GB + request fees). |
| Static IPs (Elastic IP) | $0 | $0–$15 | Free while attached, ~$3.60/mo each when detached. ALB needs its own EIP per AZ once we scale out. |
| Notifications (SES) | $0 | $1–$30 | Invites, share notifications, quota warnings, backup-failure alerts. $0.10 per 1,000 emails — rounding error today; real line item at thousands of users. |
| Free-tier archive (B2 cold) | ~$0 | $1–$10 | Zipped + cold-stored data of free accounts inactive 180+ days (see below). Separate budget from the active B2 line in Table 1 — archive growth doesn't cannibalise active-backup headroom. |
| Total fixed / mo | ~$33 | $200–$1,000+ | Today's number is small; at scale it's bigger but funded by a much larger paying base. The arc is in Table 3 below. |
3. Putting it together: when the pool clears
Each Pro contributes a net to the pool (Table 1). The pool has to clear the fixed bill (Table 2) before anything funds free-tier capacity or reinvestment. Here's how that math plays out at each scale tier — using $1.90/Pro typical net and $33/mo fixed for the "today" row, then scaling proportionally.
| Stage | Fixed bill / mo | Pros to break even | What surplus funds |
|---|---|---|---|
| Today (small) | ~$33 | ~18 Pros at typical net | Past breakeven, every additional Pro contributes ~$1.90 to surplus. A free user costs ~$0.01/mo, so each Pro past breakeven funds roughly ~190 free users in theory. Practically, at 25–30 Pros we cover fixed + a generous free pool + a small reinvestment buffer. Below ~18 Pros, the operator absorbs the gap personally. |
| Mid (~100s of users) | $80–$200 | ~45–110 Pros at typical net | Same per-Pro economics; fixed bill is higher because we've moved to t3.large / ALB / CloudFront. Free pool grows roughly in step with paying base once breakeven is cleared, but the breakeven line itself stepped up. |
| Scale (~1000s of users) | $300–$1,000+ | ~160–530 Pros at typical net | RDS Multi-AZ + read replicas + larger fleet. At this scale the per-Pro fixed slice gets small fast (well under $1/Pro), free pool grows faster than fixed cost, reinvestment buffer becomes real. |
"Net per Pro" assumes typical AI + labor usage from Table 1. Heavy AI months compress the net toward $0.08; quiet months push it toward $2.31 (light AI + light labor). Breakeven Pro counts above are ranges over typical-month economics, not contractual guarantees. Scale-out happens in steps — each step lands on a new floor and the ledger gets updated.
How the free tier is funded
Right now: 97 of 100 free slots open. (3 taken.) Each slot is 100 MB on EBS — the operator scales the pool up when the active-Pro base + EBS volume grows, scales it down only by closing new signups (existing free accounts are grandfathered, see below).
The free tier is not magic. Every free user occupies disk + serves bandwidth + costs the same B2 backup pennies as a Pro user. That cost has to come from somewhere — and the only "somewhere" is active subscribers.
- What a free user actually costs: 100 MB on EBS at $0.008/mo plus a B2 backup slice of ~$0.0006/mo, plus a small bandwidth share. Round to ~$0.01/mo per free user — cheap individually, linear in aggregate.
- Where the funding comes from: only the surplus of the Pro pool after fixed costs. Until paying membership clears the breakeven count for the current stage (~18 Pros today), the free tier is funded by goodwill — the operator absorbing the gap personally. Past breakeven, each additional Pro net (~$1.90) covers a lot of free users (~190 at $0.01/mo each).
- What "free tier shrinks" actually means: if paying membership ever drops below the breakeven count and stays there, we can't silently absorb the gap. That's how products end up shutting down their free tier with two weeks' notice (Encircle, December 2025). Instead we'd shrink the per-tenant cap for new signups and post the math here first.
- Existing free accounts stay grandfathered — as long as they stay active. If the operator has to shrink the per-tenant cap for new signups (because vendor costs moved, or the paying base shrank below what current cap supports), existing free accounts keep their original cap. The pool the operator squeezes is the new-signup pool, not yours.
If we ever need to change the free-tier numbers, we'll post the new math here first. If a vendor cost moves (B2 raises storage pricing, Anthropic changes a tier), you'll see it reflected in the tables above before it's reflected in the cap.
100 MB is real household scope. Most people inventory specific zones — the garage, the basement storage, the workshop, the moving-day stack, the kids' bins, the holiday decorations — not every drawer in every room. At typical phone-photo sizes that's a few dozen items per zone; drop the resolution and it's hundreds. The real bottleneck isn't item count, it's photo bytes: a high-res phone shot runs 3–6 MB. AI surfaces (item detection, tag suggestions) prefer higher-res inputs but still work on lower-res — accuracy drops gracefully, not catastrophically. Trade-off is yours.
The one inactivity trade. Free accounts inactive for 180 days get archived: the tenant's data is zipped + uploaded to B2 cold storage (on a separate budget from the active-tier EBS line above) and the local slot freed for new signups. Archived accounts are recoverable — sign back in, the operator triggers restore, your data comes back exactly as you left it. Pro accounts are never archived for inactivity. This is how the free pool stays a real resource rather than silently calcifying into accounts no one's used in years.
If a free user wants more storage, the right answer is Pro. If they can't or don't want to pay, the answer is to delete older photos or re-upload at a lower resolution to make room — same model as a phone's photo library. Either way: your data, your choice, no hostage situation.
Who runs Stash
Today the staff is small. We're transparent about who's behind the rails so when something breaks you know which kind of human to expect on the other end.
| Role | Scope | What they do |
|---|---|---|
| Maintainer | One tenant | Customer-side role. Full edit access to one household's inventory: create boxes, accept items, invite read-only members, audit, print labels. That's you (probably). |
| Read-only member | One tenant | Customer-side role. Browse access, no edits. Useful for a partner who needs to find things but shouldn't be moving them. |
| Operator | Platform | Day-to-day platform staff: handles support tickets, triages feedback, watches usage meters + cost panels, handles deploys, audits the system, helps customers with billing questions or data exports. Never reads tenant content unless explicitly invited by a maintainer. |
| Admin | Platform | Business operations: billing setup, vendor contracts, legal, hiring, policy decisions, public communications. Same access constraints as an operator — admin authority is organizational, not data-read. |
Operators + admins are platform-level roles backed by an explicit allow-list (STASH_OPERATOR_EMAILS env var in deploy). Today these collapse to a single human; we're documenting the structure now so when we hire the seam is already there. Spec § "Roles · Operations matrix" describes the access boundaries in code.
Why be this transparent?
Three reasons.
- It's how we'd want a service we paid for to behave. The SaaS-pricing default is to obscure the cost stack ("starts at $9!" until you blink twice). We'd rather show our work.
- It keeps us honest about scaling. When the vendor bills are visible on a public page, raising prices requires a public reason. When labor allocation is visible, hiring decisions get scrutinized. Both are accountability mechanisms we want.
- It's a moat that doesn't run out. A competitor can copy our features, our pricing, our copy. It's harder to copy operating in public. We think users will choose the company that shows them the cost ledger over the one that hides it.
What this page doesn't promise
These numbers are illustrative. We're not committing to a specific cost split per dollar of revenue — actual costs vary by individual usage, vendor pricing changes, and growth stage. What we ARE committing to:
- We won't quietly raise prices on existing subscribers. Any price change gets 30 days' notice (per the Terms of Service).
- We won't add an undisclosed sub-processor. Vendor list at /about/sub-processors is the canonical source.
- We won't ship a "premium" tier above Pro that holds essential features hostage. Pro is the top tier; future higher tiers (if any) add capacity, not access to features Pro users already have.