Full architecture as scoped (no phase deferred), estimated against a one-jurisdiction, one-client pilot — scaled 5× on every usage assumption for a conservative safety margin, including data archival and tutorial-video production, plus a separate scope (§7) for running ≥3 clients simultaneously. For Luisa, Cristian, Pablo.
If neither button does anything (some sandboxed viewers block downloads/clipboard), the raw CSV is also printed in full, selectable, at the very bottom of this page — select all, copy, paste into a new .csv file.
Every number below is detailed and sourced further down (section references in the last column). Baseline = the realistic estimate before any margin. ×5 = the safety-margined figure this document budgets against throughout — shown side by side everywhere from here on, not just at the top, so the gap is always visible.
| Category | 1 client | 3 clients | § | ||
|---|---|---|---|---|---|
| Baseline | ×5 | Baseline | ×5 | ||
| Fixed infrastructurehosting, DB, orchestration, observability | $308/mo | $829/mo | $602/mo | $2,239/mo | 3 |
| Variable usageClaude, Voyage AI, storage overage | $18–37/mo | $252–427/mo | $55–112/mo | $756–1,281/mo | 4 |
| Document ingestionparsing + embeddings + content generation | $13–31 | $325–775 | $39–93 | $975–2,325 | 4 |
| Video/image — Option Arecommended narrated-diagram approach; the figure counted in subtotals below | $57–88 | $285–440 | $171–264 | $855–1,320 | 5 |
| Video/image — Option Balternative, not in subtotal — AI avatar presenter instead of Option A | $500–1,500 | $2,500–7,500 | $1,500–4,500 | $7,500–22,500 | 5 |
| Video/image — Option Calternative, not in subtotal — full generative video, not recommended | $3,000–7,500 | $15,000–37,500 | $9,000–22,500 | $45,000–112,500 | 5 |
| Multi-tenant isolation engineeringpaid once, ever — not per client, not applicable to a single tenant | — | — | $33,000–56,400 | $165,000–282,000 | 7 |
| Cost per additional client, beyond first 3a rate, not a scenario total — what onboarding a 4th, 5th, etc. client costs, once the isolation architecture above already exists | n/a | n/a | $4,200–7,200 | $21,000–36,000 | 7 |
| Recurring subtotalFixed infra + Variable usage; Option A only | $326–345/mo | $1,081–1,256/mo | $657–714/mo | $2,995–3,520/mo | |
| One-time subtotalIngestion + Video Option A + (3-client only) isolation labor | $70–119 | $610–1,215 | $33,210–56,757 | $166,830–285,645 | |
Everything the documented architecture calls for. Nothing deferred to a later phase — per the decision to build the full stack for the pilot rather than a trimmed version. Pay-per-use services now show the estimated figure from §4 (5×-margin scenario, with ingestion's further ×5 contingency applied), not just their billing model — so this list totals to a real number on its own.
Recurring across this list: $20+120+60+500+100+29 fixed + $252–427 usage ≈ $1,081–1,256/mo. One-time: ingestion $325–775 + video/image production $285–440 ≈ $610–1,215. Matches §6 — this list is just the same total broken out per account instead of per cost category.
Every usage assumption from the original scenario (500 pages / 50 trainees / 10 Q&A each) multiplied by 5, per Pablo's request to be conservative. Swap in real numbers once a pilot client is confirmed.
Trainee count and Q&A-per-trainee were each multiplied by 5 — so total Q&A query volume is 250 × 50 = 12,500 queries/month, which is 25× the original 500 queries/month, not 5×. That compounding is why the Q&A line in §4 jumps so much more than everything else.
These run regardless of how much the pilot is actually used. Supabase's compute tier is bumped (not mechanically ×5'd) since at 25× query volume the base tier would genuinely risk hitting its limits; DigitalOcean, Vercel, Temporal, and Langfuse are priced at baseline × 5.
| Service | Purpose | Baseline | ×5 margin |
|---|---|---|---|
| Vercel Pro1 seat — likely still fits 1TB bandwidth, text-based app; not margined | Frontend hosting | $20 | $20 |
| DigitalOcean Droplet2vCPU/4GiB — replaces Render | Backend hosting (FastAPI) | $24 | $120 |
| Supabase ProMedium compute — bumped for load, not a clean ×5 | Postgres + pgvector | $35 | $60 |
| Supabase PITR1 window baseline → 5 windows (35-day retention), see flag below | Audit & archival recovery | $100 | $500 |
| Temporal Cloud Essentialsfloor holds regardless — not margined | Workflow orchestration | $100 | $100 |
| Langfuse Core~25–37K units/mo at 12.5K queries — still under the 100K included, not margined | Observability | $29 | $29 |
| Fixed subtotal | $308 | $829 |
Supabase's Point-in-Time Recovery is priced per 7-day retention window ($100/mo each). One window is enough to recover from an accidental delete; it says nothing about how long you actually want to retain audit trails for an electoral-compliance product. Applying the same ×5 safety margin here gives 5 windows = 35 days of point-in-time recovery, at $500/mo — a real, defensible number for a product whose stated moat includes audit logs and regulatory change history, but genuinely a choice the team should make consciously, not something to default into. Dial it down to 1–2 windows ($100–200/mo) if 35 days is more retention than the pilot needs.
Separately, accumulated data growth (audit logs, Q&A transcripts, document version history) adds modest storage overage beyond the 8GB/100GB included on Pro — see the "Data storage overage" line in §4.
$100/mo of the fixed total is still Temporal Cloud's minimum floor — it's priced as "the greater of $100/mo or 5% of consumption," so it costs the same $100 whether the pilot runs 10 workflow actions or 100,000 this month. Even at the 5×-margin scenario, a single pilot client's task volume won't cross into where the 5%-of-consumption side of that formula overtakes the floor.
The architecture doc itself marks Temporal as "Phase 3+" — appropriate for orchestrating change-detection across many jurisdictions at scale, not something a single-client pilot's light task volume structurally needs yet. Including it now is the direct, quantifiable price of building the full stack up front rather than deferring it — worth the team seeing that trade-off as a number, not just a phasing note.
Scale with the 5×-margin assumptions in §2 — shown as one-time (ingesting the client's documents) vs. recurring (ongoing generation and Q&A). Per Pablo's follow-up, the two one-time/ingestion lines carry a further ×5 on top of that (25× the original baseline) as extra contingency — covering things like multiple parsing passes per page (text + table/form analysis), reprocessing, and OCR retries that a single linear pages×rate estimate doesn't capture. Cost column shows the new figure with the original baseline in parentheses.
| Item | Basis | Est. cost |
|---|---|---|
| Document parsingAWS Textract, ~2,500 pages, mixed text/tables — 5× pages, plus a further 5× contingency buffer (25× total) | one-time | $250–625 (baseline $10–25) |
| EmbeddingsVoyage AI (voyage-multilingual-2), ~2.5–3M tokens/mo — priced on paid usage (~$0.12/1M), not the free allowance, since Pablo expects we'll outgrow free-tier volume once this isn't just one pilot; ×5 margin applied on top | monthly | $1.50–1.80 (paid baseline $0.30–0.36) |
| Content generationClaude, ~100 modules × quizzes/simulations — 5× module count, plus a further 5× contingency buffer (25× total) | one-time | $75–150 (baseline $3–6) |
| Real-time Q&AClaude, 250 trainees × ~50 questions = 12,500 queries/mo — 25× volume, see §2 callout | monthly | $200–300 (baseline $8–12) |
| Regulatory change scansClaude, periodic re-check of a 5× larger source doc set | monthly | $25–50 (baseline $5–10) |
| Data storage overageSupabase, accumulated audit logs/Q&A transcripts/doc versions beyond the included 8GB/100GB | monthly | $25–75 (baseline $5–15) |
| One-time subtotal | ~$325–775 (baseline $13–31) | |
| Recurring subtotal | ~$252–427 (baseline $18–37) |
Three genuinely different approaches, priced separately — this is a real fork, not just a cost line, because of what's actually at stake in an accuracy-critical domain like electoral procedure training. All three assume the same content volume: ~100 modules × ~5 minutes each (500 minutes total).
| Item | Basis | Est. cost |
|---|---|---|
| Diagrams/illustrationsIdeogram, ~500 images, ×5 margin | one-time | $75–225 (baseline $15–45) |
| NarrationElevenLabs, ~425K characters, ×5 margin | one-time | $210–215 (baseline $42–43) |
| Option A total | ~$285–440 (baseline $57–88) |
| Item | Basis | Est. cost |
|---|---|---|
| Avatar video generationHeyGen-style API, ~$1–3/min standard-to-premium avatar quality, 500 min | one-time | $2,500–7,500 (baseline $500–1,500) |
| Option B total | ~$2,500–7,500 (baseline $500–1,500) |
Option B is roughly 9–17× Option A's cost but 5–6× cheaper than Option C (full generative video footage, below) — and unlike Option C, it doesn't carry the visual-hallucination risk, since the avatar never generates footage of ballots, polling stations, or procedures. It's a real middle ground: meaningfully more engaging/human than static narrated diagrams, without the accuracy exposure of generated footage. If budget allows, this is a defensible upgrade from Option A rather than a risk to avoid the way Option C is.
| Item | Basis | Est. cost |
|---|---|---|
| Generated video footageRunway/Sora-style, $0.10–0.25/sec across Sora 2 Standard to Runway Gen-4.5, 30,000 sec | one-time | $15,000–37,500 (baseline $3,000–7,500) |
| Option C total | ~$15,000–37,500 (baseline $3,000–7,500) |
Option C is roughly 40–90× Option A and 5–6× Option B, for a result that's riskier for this specific domain, not just more expensive. Recommend Option A as the default, with Option B as a considered upgrade if engagement/production value matters enough to the team to justify the added cost — and Option C only if there's a specific reason to need actual generated footage, which isn't apparent here.
| Fixed infrastructureincl. $500/mo archival policy choice (§3) + $120/mo DigitalOcean backend | $829 / mo |
| Variable, recurring | $252–427 / mo |
| Estimated recurring total | $1,081–1,256 / mo |
| Document ingestion§4, 25× baseline | $325–775 |
| Video/image production§5, recommended approach | $285–440 |
| Estimated one-time total | $610–1,215 |
For reference, the pre-margin baseline (before any ×5) was ~$225–230/mo recurring + ~$15–30 one-time, with no archival, backend-hosting swap, or video line items at all. Roughly half of the new recurring total ($500 of $1,081–1,256) is the archival policy choice in §3 — that's the single highest-leverage number for the team to actually decide on, not just accept by default.
Everything above was scoped and costed for one client with a safety margin — not for multiple clients running simultaneously. Three real clients is a different kind of scaling: almost certainly three different jurisdictions, which needs actual isolation engineering, not just more compute headroom.
If these 3 clients are electoral authorities in different countries, some may have legal requirements that their data physically reside within their own country or region — not just be logically separated in a shared system. This isn't optional infrastructure polish; it can be a hard compliance requirement that determines where each tenant's Supabase project, embeddings, and backups are hosted. Worth confirming directly with each prospective client early, since it can force genuinely separate regional infrastructure rather than a cost/tier decision.
Costed below on the safer, more isolated architecture — a separate Supabase project per client rather than one shared project with row-level filtering — consistent with treating isolation as a real requirement for this domain, and with the ×5 approach used throughout. Variable costs assume each of the 3 clients independently replicates the full 5×-margined single-client scenario from §2 (not 3 clients each at the smaller original baseline) — the more conservative read of "always overestimate."
| Service | Change for 3-tenant isolation | Baseline | ×5 margin |
|---|---|---|---|
| Vercel Pro | Unchanged — one frontend, tenant-routed; not margined | $20 | $20 |
| DigitalOcean | 2 Droplets ($24 each) for capacity/redundancy across tenants | $48 | $240 |
| Supabase ×3 | Separate project per client ($35 compute + $100 PITR baseline each), isolation + data sovereignty | $405 | $1,680 |
| Temporal Cloud | Separate namespace per tenant — likely still fits Essentials; watch if combined workflow volume crosses into Business tier; not margined | $100 | $100 |
| Langfuse | Core baseline → bumped to Pro for compliance reporting across multiple clients (tier upgrade, not a clean ×5) | $29 | $199 |
| Fixed subtotal | $602 | $2,239 |
| Category | Basis | Baseline ×3 | ×5 margin ×3 |
|---|---|---|---|
| Variable, recurring§4's baseline/×5 × 3 clients | monthly | $55–112 | $756–1,281 |
| Document ingestion§4's baseline/×5 × 3 clients | one-time | $39–93 | $975–2,325 |
| Video/image production§5's baseline/×5 × 3 clients — separate curriculum per jurisdiction | one-time | $171–264 | $855–1,320 |
Priced this time, not left as a footnote. Every task below is a one-time architectural build — RLS policies, retrieval filtering, the tenant-scoping middleware, the eval-suite harness, the leakage-test framework. None of it gets rebuilt for the 4th, 10th, or 50th client; it's built once and every future tenant flows through the same isolation layer. The only per-jurisdiction element already folded in here is the eval suite's test content (not its harness) for the first 3 clients — see the smaller, genuinely recurring cost per client beyond that, below. Rate uses a senior backend/security contractor range ($120–200/hr, 2026 US remote market) at a $150/hr midpoint.
| Task | Hours |
|---|---|
| Tenant identity & request-scoping middlewareAuth model, tenant claims, enforcement on every endpoint | 24–40 |
| Database RLS policies~8–15 tables, written and adversarially tested | 32–56 |
| Vector/embedding isolationPer-tenant retrieval filtering — the highest-risk item if missed | 24–40 |
| Separate ingestion pipelinesTenant-namespaced parsing/embedding jobs | 16–24 |
| Per-jurisdiction eval suiteHarness built once (~40–80h), +16–24h per additional jurisdiction × 2 more | 72–128 |
| Cross-tenant leakage test suiteAdversarial tests proving isolation actually holds | 16–24 |
| Per-tenant audit log separation | 8–16 |
| Temporal namespace-per-tenant setup | 8–16 |
| Langfuse tenant tagging/separation | 4–8 |
| Integration testing & security reviewGiven the stakes, a dedicated review pass, not a rubber stamp | 16–24 |
| Total hours | 220–376 |
This dwarfs every infrastructure number in this document — the engineering labor to do isolation properly costs roughly 10–40× more than a year of the actual hosting/API bills. That's the real headline of this section: multi-tenant isolation for an electoral-integrity product is fundamentally a people problem before it's a hosting-cost problem, which is exactly why it's worth a staffing conversation (the CTO role is still open) rather than something to fold into the infrastructure budget quietly.
The isolation build above is a one-time architectural cost — it doesn't repeat for a 4th, 5th, or 10th client. Onboarding each additional client still carries a smaller, genuinely recurring slice of work, since a new jurisdiction means new eval content and a fresh tenant environment, not new architecture.
| Task | Hours |
|---|---|
| Eval suite content for the new jurisdictionHarness already exists — just new test cases | 16–24 |
| New tenant environmentSeparate Supabase project, Temporal namespace, config | 8–16 |
| Tenant-specific leakage/integration test passConfirm isolation holds for this specific client too | 4–8 |
| Total hours, per additional client | 28–48 |
| Baseline | ×5 margin | |
|---|---|---|
| Infrastructurerecurring, year 1 | $7,884–8,568 | $35,940–42,240 |
| Infrastructureone-time | $210–357 | $1,830–3,645 |
| Engineering laborone-time | $33,000–56,400 | $165,000–282,000 |
| All-in first-year cost, 3 clients | $41,094–65,325 | $202,770–327,885 |
Infrastructure recurring is annualized ($657–714/mo baseline, $2,995–3,520/mo margined × 12) to put it on the same footing as the one-time labor cost. Labor is ~80% of either total — infrastructure spend is genuinely the smaller part of what "do this properly for 3 clients" costs, at either estimate.
Guaranteed-to-work fallback if both buttons at the top are blocked by this viewer's sandbox: click inside the box below, select all (Ctrl/Cmd+A), copy, and paste into a blank text file saved as votai_cost_model.csv.
Category,Item,Scenario,CostType,Frequency,BaselineLow,BaselineHigh,MarginedLow,MarginedHigh,Currency,SectionRef,Notes Fixed Infrastructure,Vercel Pro (1 seat),1 client,Recurring,Monthly,20,20,20,20,USD,3,Frontend hosting; never margined Fixed Infrastructure,DigitalOcean Droplet (2vCPU/4GiB),1 client,Recurring,Monthly,24,24,120,120,USD,3,Backend hosting; replaces Render Fixed Infrastructure,Supabase Pro compute,1 client,Recurring,Monthly,35,35,60,60,USD,3,Bumped to Medium compute for load; not a clean x5 Fixed Infrastructure,Supabase PITR (point-in-time recovery),1 client,Recurring,Monthly,100,100,500,500,USD,3,1 window baseline to 5 windows (35-day retention) Fixed Infrastructure,Temporal Cloud Essentials,1 client,Recurring,Monthly,100,100,100,100,USD,3,Minimum floor regardless of usage; never margined Fixed Infrastructure,Langfuse Core,1 client,Recurring,Monthly,29,29,29,29,USD,3,Observability; never margined at this usage level Variable Usage,Voyage AI embeddings,1 client,Recurring,Monthly,0.30,0.36,1.50,1.80,USD,4,Paid usage not free tier per request Variable Usage,Real-time Q&A (Claude),1 client,Recurring,Monthly,8,12,200,300,USD,4,25x volume - trainee count and Q&A-per-trainee both x5 compounds Variable Usage,Regulatory change scans (Claude),1 client,Recurring,Monthly,5,10,25,50,USD,4,Periodic re-check of source documents Variable Usage,Data storage overage (Supabase),1 client,Recurring,Monthly,5,15,25,75,USD,4,Accumulated audit logs/Q&A transcripts/doc versions Document Ingestion,Document parsing (AWS Textract),1 client,One-time,Once,10,25,250,625,USD,4,2500 pages; 25x total incl. extra ingestion contingency Document Ingestion,Content generation (Claude),1 client,One-time,Once,3,6,75,150,USD,4,~100 modules worth of quizzes/simulations Video Production,Diagrams/illustrations (Ideogram),1 client,One-time,Once,15,45,75,225,USD,5,~500 images; recommended approach not full AI video Video Production,Narration (ElevenLabs),1 client,One-time,Once,42,43,210,215,USD,5,~425K characters TTS narration Video Production,Option B - AI avatar presenter (alternative to Option A),1 client,One-time,Once,500,1500,2500,7500,USD,5,"ALTERNATIVE not summed into official totals. HeyGen-style API $1-3/min x 500 min. Same accuracy risk as Option A (delivers reviewed script), replaces ElevenLabs narration if selected." Video Production,Option C - full AI video footage (not recommended),1 client,One-time,Once,3000,7500,15000,37500,USD,5,"ALTERNATIVE not summed into official totals. Runway/Sora-style footage generation. Not recommended: visual hallucination risk for official procedures." Fixed Infrastructure,Vercel Pro (1 seat),3 clients,Recurring,Monthly,20,20,20,20,USD,7,Shared frontend tenant-routed; never margined Fixed Infrastructure,DigitalOcean (2 Droplets),3 clients,Recurring,Monthly,48,48,240,240,USD,7,Capacity/redundancy across tenants Fixed Infrastructure,Supabase x3 separate projects (compute+PITR),3 clients,Recurring,Monthly,405,405,1680,1680,USD,7,Isolation + data sovereignty; separate project per client Fixed Infrastructure,Temporal Cloud (namespace per tenant),3 clients,Recurring,Monthly,100,100,100,100,USD,7,Watch if combined workflow volume needs Business tier Fixed Infrastructure,Langfuse (Core to Pro),3 clients,Recurring,Monthly,29,29,199,199,USD,7,Bumped for compliance reporting across clients; not a clean x5 Variable Usage,Voyage AI embeddings,3 clients,Recurring,Monthly,0.90,1.08,4.50,5.40,USD,7,1-client line x3 Variable Usage,Real-time Q&A (Claude),3 clients,Recurring,Monthly,24,36,600,900,USD,7,1-client line x3 Variable Usage,Regulatory change scans (Claude),3 clients,Recurring,Monthly,15,30,75,150,USD,7,1-client line x3 Variable Usage,Data storage overage (Supabase),3 clients,Recurring,Monthly,15,45,75,225,USD,7,1-client line x3 Document Ingestion,Document parsing (AWS Textract),3 clients,One-time,Once,30,75,750,1875,USD,7,1-client line x3 Document Ingestion,Content generation (Claude),3 clients,One-time,Once,9,18,225,450,USD,7,1-client line x3 Video Production,Diagrams/illustrations (Ideogram),3 clients,One-time,Once,45,135,225,675,USD,7,1-client line x3; separate curriculum per jurisdiction Video Production,Narration (ElevenLabs),3 clients,One-time,Once,126,129,630,645,USD,7,1-client line x3; separate curriculum per jurisdiction Video Production,Option B - AI avatar presenter (alternative to Option A),3 clients,One-time,Once,1500,4500,7500,22500,USD,5,"ALTERNATIVE not summed into official totals. 1-client Option B x3." Video Production,Option C - full AI video footage (not recommended),3 clients,One-time,Once,9000,22500,45000,112500,USD,5,"ALTERNATIVE not summed into official totals. 1-client Option C x3." Engineering Labor,Multi-tenant isolation build (full architecture),3 clients,One-time,Once,33000,56400,165000,282000,USD,7,"Paid ONCE ever, not per client. 220-376 hrs at USD150/hr midpoint (USD120-200/hr range). Covers: tenant-scoping middleware; RLS policies; vector/embedding retrieval isolation; ingestion pipeline namespacing; per-jurisdiction eval suite (harness + first 3 jurisdictions'' content); cross-tenant leakage test suite; audit log separation; Temporal namespacing; Langfuse tagging; integration/security review." Engineering Labor,Cost per additional client beyond first 3,4th+ client,One-time,Once,4200,7200,21000,36000,USD,7,"Paid once PER additional client. 28-48 hrs: new jurisdiction's eval-suite content (harness already exists); new tenant environment (Supabase project + Temporal namespace); tenant-specific leakage test pass. ~13-14x cheaper than the initial build since the architecture itself does not repeat."