Thnkrr — What Our Amazon (AWS) Services Cost, and What We'll Spend
What this is: every Amazon Web Services (AWS) service Thnkrr uses, what each one does for us, and what it costs — first as a monthly total, then part by part. Written for anyone; no technical background needed. Technical specifications are at the end.
Prices: checked on 16 September 2026 from Amazon's own price pages (US East region, US dollars). The video parts were checked on 29 September 2026. Where a number is our own estimate rather than a published price or a measurement, it says so.
Two words used throughout:
- Credits: Amazon has given us about $5,000 in AWS credits. Most Amazon charges come out of these instead of our bank account, until the credits run out or reach their end date. A few things are excluded (for example, buying a web address). After that, the same amounts become real bills.
- Expected month / busy month: our estimate of normal pilot use, and a heavy month. For video that means about 300 videos a month (expected) or 1,000 (busy).
- Pilot size we assume: up to 10,000 users, about 1,500 on a given day, about 2,000 posts and messages to check a day, and videos averaging 1.5 minutes (2 minutes in a busy month). Real numbers replace these in the first month.
In one minute: what we'll spend each month
Short answer: in cash, about $0 — everything runs on Amazon from day one, and our credits pay for it — plus one price we don't know yet (the Thorn or Hive quote, below). From our free Amazon credits: about $40–65 a month, or about $100 with the automatic picture check on videos.
Paid from our AWS credits:
| Expected month | Busy month | |
|---|---|---|
| Running the app: one server and the database | $27 | $27, or $39 if video needs a second server |
| Storing photos, sending emails, nightly backups (rounded up for safety; under $2 once sign-ups settle) | $3–6 | up to about $10 |
| Storing and playing videos (a year in, if originals are deleted after 30 days) | $5–20 | $100–130 |
| The AI check on everything students write (the option we recommend) | $4–11 | about the same |
| Total from credits | about $40–65 | about $135–190 |
| Optional: Amazon's picture check on photos (recommended) | $1–4, plus about $2 per 1,000 post photos | same |
| Optional: Amazon's picture check on videos (not built yet) | add $54 | add $240 |
- Keeping original videos forever (what happens today) adds about $11–16 a month by the end of the first year ($50–72 in a busy month).
- One-off: about $25–45 from credits when everyone first signs up (emails, plus the photo check if approved).
Paid in real money (credits can't cover these):
| Cost | Note | |
|---|---|---|
| Spotting grooming in messages, and new child-abuse material (Thorn or Hive) | Price on request — the one open price | Mentor messaging stays off until one of them is live. Thorn's smallest published plan is $30,720 a year, sized far beyond us. Google has a free option for images and video if we're approved. |
| The AI writing check, if we stay on today's supplier (Anthropic's Claude) instead | About $80–400 a month | At the same usage as the $4–11 figure (2,000 posts and messages a day), depending on which Claude model; less if students write less. A side-by-side test decides. |
The biggest cost isn't on any bill: reviewers' time. If we pay reviewers, it becomes our biggest cash cost. A person checks every photo and video post, and anything the automatic check isn't sure about. Plan for about 1–3 hours a day on writing (our research estimate), more for photo posts (not yet estimated), and about 18–25 minutes a day on videos (1–1.7 hours a day in a busy month).
How long the credits last: at about $100 a month (the expected month with the picture check on), about four years. If every month were busy (about $400 a month), about a year. Two things to check on our credit grant: its end date — credits usually expire, often before they're used up — and that it covers Lightsail (see "Where the app runs").
The Amazon services, in one table
| Service | What it does for us, in plain words | Status |
|---|---|---|
| S3 (storage) | Keeps every uploaded file: profile photos, banners, post photos, videos, and a nightly copy of the database. | In use |
| CloudFront (delivery) | Sends photos and videos to people's browsers quickly, from computers near them, so our own server doesn't have to. | In use |
| SES (email) | Sends every automatic email: "verify your email", password resets, and the parental-consent emails to guardians. | In use |
| Rekognition (automatic picture check) | Can flag nudity, violence, weapons, drugs, hate symbols and text written in a picture — for photos, and for stills taken from videos. | Not switched on. In the pilot a person checks every image and video. Costed below so we know the price of turning it on. |
| Lightsail (server + database) | Runs our app and its database for a flat monthly price. The same server also converts uploaded videos and writes captions from speech. | From day one (see "Where the app runs"). |
| Bedrock (a rented AI model) | Would run the AI check on what students write, with Amazon set never to keep the text. | Recommended, not switched on. A side-by-side test decides (docs 20–21). |
Nothing else, on purpose. We use the plainest Amazon services, so we could move to another company without rebuilding anything (doc 19 explains the way out for each).
What each part of the app costs
1 — Signing up and account emails → SES
When a student signs up we send a "verify your email" message; later they may reset a password. For an under-18, the consent process adds a few more: the request to their guardian, reminders if it goes unanswered, a note confirming the guardian's answer, and notices if consent is withdrawn. Newer emails go to school staff who haven't checked a guardian's details yet, to school counsellors about a student at risk, and to our team when a school has nobody set up to check guardians.
- Price: $0.10 per 1,000 emails.
- Per student: 1–2 emails for an adult, about 3–5 for an under-18. Well under a tenth of a cent.
- Whole pilot: 10,000 sign-ups ≈ $3–5 in total, then well under $1 a month.
- What matters more than price: the guardian email is the legal consent, and its link expires after 7 days. Emails landing in spam is the real risk, not cost (doc 19).
2 — Uploading a profile photo or banner → S3
The photo goes straight into a private, locked area of storage. After a person approves it, our server makes small web-ready copies (about 200 KB in total) in the public area. The locked original is deleted after 30 days.
- Price: $0.023 per GB stored per month, plus tiny per-file fees (1,000 uploads cost half a cent).
- Whole pilot: even if all 10,000 users uploaded both images in the same month, about $3 that month, falling to $0.10–0.50 a month once the originals are deleted.
3 — Seeing profile photos around the app → CloudFront
- Price: 1 TB (1,000 GB) of downloads and 10 million file fetches every month are free, forever. After that, $0.085 per GB.
- Whole pilot: $0. 10,000 active users would use about 300 GB a month — well inside the free amount.
4 — Automatic check of uploaded photos → Rekognition (not switched on)
Costs $0 today, because a person checks every image. If we turn it on:
- Price: $0.001 per photo for the picture check. Reading text in a picture (useful for banners) is another $0.001.
- Profile photos and banners: about $20–40 once for 10,000 users' sign-up images, then $1–4 a month as people change them.
- Photos in posts: the same price — about $2 for every 1,000 post photos with both checks.
- (The moderation brief, doc 21, says about $11 because it assumed 5,000 sign-up images; this assumes 10,000 users with two each.)
5 — Nightly database backup → S3
A second safety copy of the whole database, every night. The database service keeps its own backups too.
- Whole pilot: about $0.03 a month. Even at a size far beyond the pilot, under $1 a month.
6 — Uploading and processing a video → S3 + our own server
The video uploads in pieces straight into the locked storage area. Our server then rebuilds it (so hidden location data from the phone can't survive) and makes:
- two copies for playing: a smaller one for the feed and a sharper one for full screen;
- a poster (the still shown before it plays);
- a storyboard (30 stills from across the video, for the reviewer);
- a written transcript of the speech.
After a person approves the post, the files are copied into the public area.
- Storage:
- The playable copies came to about 22 MB per minute of video in our test; a phone's original is about 90–130 MB per minute.
- Playable copies: about $2.75 a month after a year (busy: about $12).
- Originals, if deleted after 30 days (recommended): about $1–1.40 a month (busy: $4–6).
- Originals, if kept forever (what happens today): about $11–16 a month by the end of the first year, and still rising (busy: $50–72).
- Processing: on our own server, so no extra bill.
- On a laptop, the whole job took about 1 minute of computing per minute of video. We estimate 2–3 minutes on our slower server.
- That's about 5–8% of the server's steady capacity in an expected month, and 24–36% in a busy month.
- Cost: $0 extra. If long videos ever slow the site, we add a second $12 server (see "Where the app runs").
7 — Watching videos → CloudFront
The feed plays the smaller copy silently as people scroll; full screen plays the sharper one. Nothing but the poster downloads until a video starts playing.
- Our estimate: 1,500 people a day, each seeing a few videos play briefly and watching about half of one → about 0.85 TB a month (busy month: about 2 TB).
- Price: the same free 1 TB a month, then $0.085 per GB.
- Cost: $0–15 a month (video alone fits in the free 1 TB; with photos it can go slightly over). Busy month: about $85 for video alone, up to about $110 with photos. Video is the first thing that can realistically go past the free amount.
8 — Checking videos → our own server (+ Rekognition, if turned on)
A person watches every video in full before anyone else sees it. The automatic checks around that person:
| Check | Runs on | Expected / busy month | Status |
|---|---|---|---|
| Speech-to-text — writes the captions, and lets the writing check read what's said | Our own server | $0 | Built |
| or Amazon's speech-to-text (Transcribe) | Amazon | about $3–11 / $12–48 (see note) | Not used, so no student's voice leaves our server |
| Picture check — Rekognition on one still per second, pictures and on-screen text | Amazon | about $54 / $240 | Not built |
| or one still every 2 seconds | Amazon | about $27 / $120 | Not built |
| or free software on our own server | Our own server | $0 | Not built; spots nudity only |
| Matching against known child-abuse videos | Child-protection groups (one list is checked on our own server) | $0 — free once our applications are accepted | Not built |
Note on Transcribe: Amazon's own worked example uses $0.006 a minute; older price lists say $0.024. We haven't confirmed which applies, so the table shows both ends.
Running these checks on our own server costs nothing per video. The one possible extra is the second $12 server.
The bottom line
| Cost | |
|---|---|
| Per student, once (sign-up emails and photo uploads) | Under a tenth of a cent |
| Per student, per month (keeping and showing their photos) | About a hundredth of a cent |
| Whole pilot, per month, before video | $3–6 for the parts above (worst month about $10), plus $27 for the server and database → about $30–37 |
| Video, expected month | $5–20 to store and play; $60–75 with Amazon's picture check |
| Video, busy month | $100–130; $340–370 with the picture check. Add $12 if video needs a second server. |
| AI check on writing (recommended, on Amazon) | $4–11 a month |
| Paid in cash | The Amazon bill is $0 in cash, because credits pay it (see "In one minute" for how long they last). The only cash cost is the Thorn or Hive quote. |
Not in this table, because it isn't Amazon: the AI writing check if we stay on Anthropic's Claude instead (about $80–400 a month; reading video captions and speech adds under $1 a month); the Thorn or Hive quote for grooming and child-abuse detection (price on request); an error-tracking service (not priced here); and reviewers' time — the biggest cost of all.
Why the Amazon bill is this small: photos are tiny once processed; CloudFront's free 1 TB covers almost all delivery; each person gets only a handful of emails; and our computing is one small flat-price server, which also does the video conversion and speech-to-text, so we pay no Amazon service for those. The costs that grow with use are video delivery past the free 1 TB, the optional picture check, the AI writing check, and — most of all — people's time reviewing.
Where the app runs: the plan is Lightsail
Our app and its database run on Amazon's Lightsail from day one, paid by our credits. We won't use any other host. (Lightsail isn't on Amazon's list of things credits can't be used for, but check our specific grant before launch.)
One fact about our app shapes the choice: it runs all the time, with background work (like the review queue) checking for new jobs every few seconds. So any service that "sleeps when nobody's visiting" doesn't fit.
| Option | Per month | Paid with | In plain words |
|---|---|---|---|
| Lightsail — the plan (one rented server $12, plus a database Amazon looks after and backs up, $15) | about $27 | Credits | Simple, flat price. We look after software updates, the site's security padlock, and restarts ourselves. |
| Render (not Amazon) | $13–45 | Cash | Not used. It looks after itself, but credits can't pay for it. |
| Amazon's bigger setup (Fargate + RDS) | about $60–77 | Credits | Far more moving parts than we need. The next step if one server ever isn't enough. |
| App Runner | about $70–82 | — | Ruled out: it slows almost to a stop between visits, which would stall our review queue. |
| Aurora Serverless (database) | at least $44, database alone | — | Ruled out: it only saves money when idle, and our database never is. |
Video changes what the server does, not the plan. Since video was added, the same server also converts videos and writes captions from speech. It needs about 600 MB of memory at most (the steps run one at a time). Lightsail's server sizes:
| Size | Memory | Steady speed it can hold | What it means for us |
|---|---|---|---|
| $12 (the plan) | 2 GB | 20% of full speed, with short bursts of full speed that it saves up while quiet (this isn't money) | Enough. Video uses about 5–8% of it in an expected month. |
| $24 | 4 GB | Same as $12 | Only helps if we run short of memory, not speed. |
| $44 | 8 GB | 30% | Only if one server has to do everything in a busy month. |
If video ever slows the site, we add a second $12 server that does only the background work (videos and captions), so the main server stays quick. The warning sign is Lightsail telling us the server's saved-up burst speed is running low. One code change comes first either way: videos get their own work queue, so a long video can't make photo uploads wait (doc 23, section 7.2).
The call: Lightsail. With the credits, every Amazon option costs us nothing in cash while the credits last, so the choice is about simplicity, and Lightsail is the simplest. What credits don't pay for is our time looking after the server. Doc 19 lists how we keep that small, and what would make us move up to Amazon's bigger setup. Moving in any direction takes days, not weeks.
For engineers: the technical specs
- Lightsail $12: 2 vCPU (20% baseline each, burstable), 2 GB RAM, 3 TB transfer. Managed Postgres $15: 1 GB RAM, 40 GB storage, automated backups. Steady allowance ≈ 290 vCPU-hours a month. Video processing: 16–24 h (expected) / 70–105 h (busy) of processor time, from laptop timings × 2–3 (doc 23 §6.4).
- Render (compared, not used — D-70): $7 (0.5 GB) – $25 (2 GB) compute; $6 (256 MB) – $19 (1 GB) Postgres + $0.30/GB. Zero-ops, but cash-only.
- Fargate + RDS: ≈ $29 container (1 vCPU / 2 GB, ARM) + $17–22 load balancer; RDS db.t4g.micro ≈ $14 – small ≈ $26. Adds IAM, task definitions, security groups, alarms.
- App Runner throttles CPU to near zero between requests — our in-process pg-boss workers would stall. Aurora Serverless v2 is $0.12/ACU-hour and never pauses under pg-boss polling.
- Video pipeline (D-69): browser → S3 multipart (16 MiB parts) into quarantine;
ffmpeg rebuild with a tag allowlist, SD 480p + HD 720p (never upscaled), poster,
30-frame storyboard; whisper.cpp (
whisper-cli,ggml-base.bin, 148 MB) for captions and transcript. Self-hosted picture model estimate: ≤ 6 h (expected) / 25 h (busy) of processor time a month, not measured. Full record: doc 23. - Rekognition: off in the pilot (D-9: every image and video goes to a person). Apply the AWS Organizations AI-services opt-out before the first image is sent, and deny the face APIs (docs/20 §10.2). Post photos (D-66) are reviewed with their post.
- Free tier: AWS replaced per-service free tiers in July 2025. Permanently free regardless of credits: CloudFront (1 TB + 10M requests a month) and the first 100 GB a month of data transfer out. S3 and SES have no free tier for accounts created after 15 July 2025.
- Portability: every AWS touchpoint sits behind our own interfaces (
storage,mailer,imageScreen,transcriber); the app speaks SMTP to SES and the S3 protocol to storage. The web app's static files would be served from the same S3 + CloudFront. AWS from day one, with Lightsail as the host, is D-70 (superseding docs/04 §11's Render choice). - AI writing check: the recommended setup and the side-by-side test are in docs/20 and docs/21; the cost range per model is docs/15 §2.4.
Why each service was chosen, and what we'd switch to if we ever left Amazon: 19-aws-why-and-alternatives.md.