Skip to content

Operating Cost Model

Git-friendly Markdown export of operating-costs-model.xlsx. University-portfolio revenue; Pricing tab benchmarks against Continual Engine (VHEAP) with rural US student-labor economics.

Year-1 P&L

| Year-1 P&L — University Portfolio | | | | | Prepaid university contracts. Operating figures pull from the other tabs; compliance is one-time first-year (see ‘Contract Triggered’). | | | |

CommittedLikelyFull portfolio
Revenue scenarioUTHealth + USD+ UTA+ UT Southwestern
Prepaid revenue55000105000155000
Variable COGS-1858-3547-5236
Fixed opex-24312-24312-24312
Operating income (pre-compliance)2883077141125452
Operating margin %0.52420.73470.8094
Contract-triggered compliance (one-time, year 1)
Low (security-scope SOC 2, lean)-36704464192952
Likely (readiness+audit+platform+pentest) → NET-42170614154452
High (full Big-Four SOC 2)-128170-79859-31548
Net rows = operating income minus that compliance scenario (compliance is one-time; year 2+ keeps the operating income without the readiness/audit spend).
UTHealth $5K PO is BOOKED. USD $50K expected soon. UTA + UT Southwestern ~$50K each, high-probability this year.
University payments are invoiced (ACH/check/wire) — $0 Stripe fees. Paid up front → cash-positive through the year.
UTHealth + UT Southwestern are medical: budget the ‘Likely’ compliance column as spend you WILL incur, and migrate the heavy tier off the home box (10.1.1.4) to EC2 before their security reviews.
Unit cost is a non-issue: at ~$0.20/doc a $50K flat PO covers ~250K docs before COGS. The gate is compliance + delivery capacity, not per-doc cost.

Pricing vs Competitor

| Pricing vs Competitor (Continual Engine) | | | | | | | Benchmark = the AI+human vendor UTRGV chose (offshore labor). We use rural US student labor at $12/hr — Laura runs this team today. Yellow = editable. | | | | | | | BENCHMARK — Continual Engine, published VHEAP rates | | | | | |

Service$/page$/doc (5pg)
PDF — simple1.256.25
PDF — medium210
PDF — complex2.7513.75
STEM / STEAM420
PPT / Excel / ePub210
LABOR MODEL — rural US students (edit yellow)
Automated cost / page (from model)0.04
Student wage ($/hr)12
Loaded labor ($/hr, +25% payroll/OH)15
Std throughput (pages/hr) — Laura: 30 real, plan 1515
Complex/scanned throughput (pages/hr)8
QA / oversight overhead0.15
→ Standard human cost/page (calc)1.19
→ Complex human cost/page (calc)2.2
THEACCESSIBLE — recommended tiers
TierPrice $/pgCost $/pgMargin $/pgMargin %vs Continual Engine
Automated (bulk / self-serve)0.90.040.860.9556beats CE simple ($1.25); ~96% margin — wins the volume
Human-remediated (standard, guaranteed)31.191.810.6033premium to CE medium ($2.00) for US-based + guarantee; room to discount to $2 (still ~40%)
Certified (complex / STEM / scanned)42.21.80.45matches CE complex/STEM ($2.75-4.00)
THROUGHPUT SENSITIVITY — human tier @ $3/page
Pages/hrRevenue/hrLabor $/pg (loaded)Margin/pgMargin %
515300break-even
8241.8751.1250.375
10301.51.50.5
1545120.6667PLAN
20600.752.250.75
30900.52.50.8333Laura: real-world
BLENDED EXAMPLE — one mid-size university, 60,000 pages/yr
Page mixPagesOur priceOur costOur marginCE would charge
Simple (70%) → Automated420003780016803612052500
Medium (20%) → Human1200036000142802172024000
Complex (10%) → Certified600024000132001080016500
TOTAL / year6000097800291606864093000
Blended margin 70% · Our $97,800 vs CE $93,000 · we win the simple bulk on price, premium on the hard docs where human+guarantee adds value.
Throughput per Laura, who runs the student remediation team today: ~30 pages/hr is completely reasonable for the guided final steps; we plan at 15 (scanned handwriting is slower).
At 15 pg/hr and $3/page the human tier is ~67% margin after loaded wage; even after 15% QA it holds ~60%. Break-even is ~5 pg/hr — huge cushion.
No offshore needed. Rural US labor at $12/hr, students doing only the tool-guided last steps. Every tool improvement that turns a ‘fix’ into a ‘confirm’ raises throughput and margin.
$1/page (offshore-style) is unnecessary and leaves money on the table — $2.50-3.00/page with US labor still out-margins the offshore incumbent because our AI carries the bulk.

Read Me

Operating Cost Model — Strategic Habits Consulting, LLC
Built 2026-09-04. Opens in Apple Numbers (File > Open, .xlsx imports natively).
IMPORTANT — where these numbers came from
I do not have access to your AWS, Cloudflare, Mathpix, Supabase or Stripe billing data.
Every dollar figure here is either (a) a published list price with the source noted on the
’Rate Sources’ tab, or (b) a PLACEHOLDER volume I invented so the formulas have something
to chew on. Treat the whole ‘Est.’ column as a strawman to be overwritten, not a forecast.
Color code
Blue text = hardcoded input or rate. Safe to change.
Black text = formula. Do not overtype, or the model stops recalculating.
Green text = pulls a value from another tab.
Yellow fill = a cell you should replace with your real number.
How to use it
1. Fill in the Assumptions tab first — document volume drives most of the COGS lines.
2. On ‘Operating Costs’, put your real invoice amounts in the ‘Your Actual $/mo’ column.
Leave the Est. column alone so you can see how far off the estimate was.
3. ‘Cost per Document’ is the number that tells you whether an unlimited-processing
enterprise tier is safe. Check it before you quote UTHealth or answer the TEA RFP.
4. ‘Contract Triggered’ is spend a signed university deal causes. It is not run-rate.
Tabs
Assumptions — volume, token, and unit-rate inputs feeding everything else
Operating Costs — the full monthly/annual list, split COGS vs Fixed
Cost per Document — unit economics and gross margin at three price points
Contract Triggered — SOC 2, pen test, insurance: one-time and annual
Rate Sources — every published rate used, with URL and date checked
Not tax or accounting advice. Confirm the Texas franchise tax and SaaS sales tax
treatment with your CPA before you use any of this in a quote.

Assumptions

| Assumptions & Rate Inputs | | | | | Blue = edit me. Yellow = placeholder, definitely replace. | | | | | Updated by Claude 2026-09-04 — cost lines grounded in the actual stack; volume & revenue are FLAGGED ESTIMATES (no billing/throughput data available). Yellow cells still need your real numbers. | | | |

InputValueUnitNote
Volume drivers
Documents processed per month2000docsESTIMATE — 2,000/mo steady state; onboarding a university backlog could spike this 5-10x for a few months (COGS is tiny per doc, so it barely moves the P&L).
Average pages per document5pagesSet to 5 — real corpus (catalogs, parking maps, operations manuals, housing surveys) skews long.
Total pages processed per month10000pagesCalculated
Paying customers4accounts4 university accounts: UTHealth $5K (BOOKED PO), USD $50K (expected soon), UTA ~$50K + UT Southwestern ~$50K (high-probability this year). Paid up front.
Blended annual contract value38750$/yrBlended across the 4. Note: $5K + three ~$50K deals. If UTA/UTSW slip, drop to 2 customers / ~$55K.
Annual recurring revenue155000$/yrCalculated
Monthly revenue12916.6667$/moPrepaid annual. If any PO is one-time (not renewing), year-2 ARR is lower — track renewal separately.
LLM inference (AWS Bedrock)
Input token rate3$/M tokensBedrock on-demand Claude verified 2026-09-04: Sonnet-class $3/$15, Opus-class $5/$25, Haiku 4.5 $1/$5 per MTok. All vision now routes through Bedrock (ZDR/DPA).
Output token rate15$/M tokensOpus-class vision is $5/$25 — blend up if equations/figures are tagged with Opus.
Input tokens per page3500tokensVision image ~1.5-1.6K tokens + system prompt (cached). Set 3500; confirm with count_tokens on a real page.
Output tokens per page2500tokensTagged HTML/structure per page; set 2500. Measure on a real job.
Prompt cache / batch discount0.35% savedYou cache the system prompt and can batch — 35% assumed. Verify via usage.cache_read_input_tokens.
Per-unit vendor rates
Mathpix PDF page0.005$/pageList, 0-1M pages/mo tier
Mathpix Files API (bulk)0$/page$1.50 per 1,000 pages, async bulk route
Marker / Datalab0$/pageBeing retired — set to 0 once the last invoice clears
Cloudflare R2 storage0.015$/GB-moR2 charges no egress fee, which is why this stays small
Storage per document0.05GBPLACEHOLDER — source PDF + HTML + output PDF
Lambda GB-second0$/GB-sStandard x86 rate
Lambda GB-seconds per page4GB-sPLACEHOLDER — measure one real job
Stripe percentage fee0.029% of chargeCard. ACH is far cheaper on a $40K invoice
Stripe fixed fee0.3$/txnPer transaction
Transactions per month8txnsWorkshop registrations + subscription charges; set 8.
Capital / amortization
Employee Tech Allowance180$Per month

Operating Costs

| Monthly & Annual Operating Costs | | | | | | | | | Est. columns are list-price strawmen. Put real invoice amounts in column G. | | | | | | | |

CategoryLine ItemCost TypeBasis / RateEst. $/moEst. $/yrYour Actual $/moNotes
VARIABLE — scales with documents processed (true COGS)
AWSBedrock inferenceCOGStokens/page x page volume3123744Bedrock Sonnet-class $3/$15 (recomputed). At 2,000 docs x 5 pages this is your largest variable cost but still tiny vs revenue. Opus-class vision = $5/$25; prompt caching 35% assumed.
AWSLambda computeCOGSGB-s/page x page volume0.66678Does not cover the heavy tier that exceeds Lambda limits — see EC2 below.
AWSSQS + S3 + CloudWatch logsCOGSusage25300Lowered to ~$20 estimate at current volume. CloudWatch log retention still creeps — set a retention policy.
AWSData transfer outCOGSGB egress10120Lowered to ~$5 — you serve files from R2 (no egress fee), so S3 egress is minimal.
AWSEC2 — heavy processing tierCOGSinstance hours00$0 — heavy tier still on the home box (10.1.1.4). With UTHealth signed and UTHealth/UTSW being medical, plan the EC2 migration NOW (before their security review). When you migrate, add cost here and zero the colo line.
MathpixPDF page conversionCOGS$/page x page volume50600Bulk Files API route is ~70% cheaper per page if you can batch asynchronously.
DatalabMarkerCOGS$/page x page volume00Being retired. Keep the row at 0 so the savings show up in the year-over-year.
CloudflareR2 storage + operationsCOGSGB stored x $/GB-mo1.518Storage accumulates — this line grows every month even at flat volume.
StripePayment processingCOGS2.9% + $0.30 per txn37.2446.4University POs pay by invoice/PO (ACH/check/wire) and incur ZERO payment-processing fees — confirmed, they do not go through Stripe. This ~$37/mo line is ONLY workshop + individual-plan card volume. On $155K of university revenue, payment fees = $0 (vs ~$4,500 if it were run through Stripe card).
PLATFORM — fixed monthly regardless of volume
SupabasePro planFixedper project / mo25300One Pro project = $25. You run multiple Supabase projects (converter, org-chart, audit, tagzen build-counter) — if more than one needs Pro/compute add-ons this is $50-75+.
CloudflareWorkers / Pages paid planFixedper mo560Still $5 despite 15+ Pages sites + the api Worker — Pages are free; Workers Paid is one flat $5. Watch Workers/R2 usage as traffic grows.
CloudflareZero Trust / WAFFixedper mo00Zero if on free tier. University security reviews may push you to paid WAF.
EmailTransactional email serviceFixedper mo20240Resend / Postmark / SES. Convert-by-email and webhook notifications depend on this.
AudioTTS for The Tag TreeFixedper mo22264ElevenLabs-class creator tier. Scales if the podcast cadence increases.
AudioPodcast hostingFixedper mo15180Transistor / Buzzsprout class.
DomainsRegistrations (amortized)Fixedannual renewals / 1235420Bumped to ~$35/mo — you hold many registrable domains (gevell.com, anglinai.com, adatags.com, tagaudit.ing ~premium TLD, anglin.com, flipbook, etc.).
TOOLING & LICENSES
AnthropicClaude Max 5x subscriptionFixedper mo2002400Bumped to Max 20x ($200/mo) — heavy daily Claude Code usage (Opus, fast mode). Drop to $100 (5x) if usage fits. R&D, not COGS.
AdobeAcrobat Pro — 1 seatFixedper seat / mo24288You need one seat to verify against the product you are replacing.
TestingJAWS commercial licenseFixedannual / 1280960PLACEHOLDER — home licenses are ~$95/yr but a commercial license is required for business use. NVDA and VoiceOver are free.
TestingGrackleFixedper mo30360PLACEHOLDER. You are already using it to check pipeline output.
Testingaxe DevTools ProFixedper seat / mo40480PLACEHOLDER.
DevGitHubFixedper seat / mo448Team tier, 1 seat.
DevError tracking (Sentry)Fixedper mo00$0 — you self-host Loki + Promtail + Grafana (@anglinai/logger) + a custom errors→Telegram pipeline, not Sentry. Add back only if you adopt hosted Sentry.
DevUptime / status monitoringFixedper mo00$0 — you self-host Uptime Kuma (free). Universities still ask for a status page; Kuma covers it.
OfficeGoogle WorkspaceFixedper seat / mo283362 seats — you and Laura.
OfficePassword managerFixedper mo896Required control if you ever pursue SOC 2.
BUSINESS OVERHEAD
FinanceBookkeeping softwareFixedper mo30360QuickBooks / Xero.
FinanceCPA — annual return + advisoryFixedannual / 121501800PLACEHOLDER. Ask specifically about Texas sales tax on SaaS: Texas treats it as a taxable data processing service with a partial exemption. Affects how you quote.
LegalAttorney — contracts & MSAsFixedannual / 122002400PLACEHOLDER. University redlines, the operating agreement, and the rebrand trademark work all land here.
LegalRegistered agentFixedannual / 1210120Texas LLC.
TaxTexas franchise taxFixedannual / 1200Likely $0 while revenue is under the no-tax-due threshold, but a No Tax Due report may still be required. Confirm with your CPA.
InsuranceE&O / professional liabilityFixedannual / 121501800PLACEHOLDER. Required by most higher-ed procurement.
InsuranceCyber liabilityFixedannual / 121001200PLACEHOLDER. UTHealth-class contracts specify minimum coverage — get the required limits before you price the deal, not after.
FacilitiesBusiness internet + phoneFixedper mo1001200Reduced to ~$100 — partial allocation; the Hamilton home lab / personal line carries the rest.
FacilitiesServer power / colo (10.1.1.4)Fixedper mo30360Currently carries the heavy processing tier (home box). Do NOT double-count with the EC2 line above until you actually migrate.
CapitalLaptop (amortized)Fixedpurchase / 36 mo00Amortize rather than expensing in one month or your unit economics look wrong.
CapitalOther hardware refresh reserveFixedper mo50600PLACEHOLDER. Monitors, networking gear, test devices.
SALES & MARKETING
MarketingConferences (AHG, CSUN, AHEAD)Fixedannual / 125006000PLACEHOLDER. Booth plus travel for two is the real number; a table at Accessing Higher Ground alone can run several thousand.
MarketingIAAP membershipFixedannual / 1220240Plus CPACC / WAS exam fees when you certify.
MarketingCRM + marketing toolingFixedper mo50600CRM runs in Supabase today (no separate SaaS). This $50 is really email-marketing/outreach tooling — zero it if you’re not paying for any yet.
MarketingRebrand — design & trademarkFixedone-time / 121001200PLACEHOLDER. New master brand, logo, trademark search and filing.
TOTAL — Variable (COGS)436.36675236.40
TOTAL — Fixed2026243120
TOTAL — All operating costs2462.366729548.40
Monthly revenue (from Assumptions)12916.6667
Monthly operating margin10454.3
Operating margin %0.8094
Note: ‘Contract Triggered’ spend (SOC 2, pen test, insurance minimums) is NOT included above.

Cost per Document

| Unit Economics — Cost per Document | | | | | The number to check before quoting an unlimited-processing enterprise tier. | | | |

Component$ per doc$ per pageNote
Bedrock — input tokens0.03410.0068Vision input dominates. Caching the system prompt is the cheapest win.
Bedrock — output tokens0.12190.0244Tagged HTML output per page.
Mathpix conversion0.0250.005Switch to the bulk Files API rate to cut this.
Marker / Datalab00Retiring.
Lambda compute0.00030.0001Excludes the heavy tier.
R2 storage (first month)0.00080.0001Recurs every month the file is retained.
Overhead allocation (SQS/S3/logs/egress)0.01750.0035Fixed AWS ancillaries (SQS/S3/logs/egress) spread across the month’s documents — rises sharply if volume is low.
TOTAL COST PER DOCUMENT0.19960.0399Everything variable. Does not include fixed platform or overhead.
Break-even volume check
Fixed costs per month2026
Monthly revenue12916.6667
Contribution after variable cost12517.5
Documents/mo that eat all revenue64718.1626HUGE headroom under flat pricing: at $0.20/doc, a $50K flat PO covers ~250,522 docs before COGS alone eats it. Universities won’t approach that — so flat/annual university pricing is SAFE on unit cost. Your real gate is compliance overhead, not per-doc cost. Still meter to catch abuse.
Gross margin at three price points
Price charged per documentMargin $Margin %Note
10.80040.8004Edit the price in column A.
2.52.30040.9202Edit the price in column A.
54.80040.9601Edit the price in column A.

Contract Triggered

| Contract-Triggered Costs | | | | | | Not run-rate. This is what a signed university deal causes — price it into the deal. | | | | |

ItemLowLikelyHighNote
SOC 2 Type II — audit fee (year 1)120002500060000UTHealth/UTSW are medical centers — security review will be stringent. Budget the SOC 2 readiness even if the full Type II audit waits for year 2.
Readiness assessment + remediation50001000017000Gap-fixing found during readiness. Highly variable.
Compliance automation platform75001200025000Vanta / Drata / Sprinto class, annual. Nobody should pay list.
Penetration test50001200025000Often contractually required annually. A single web app at seed scale runs less.
Cyber liability at university minimums150030006000Annual premium at the limits higher-ed procurement typically specifies.
HECVAT / AI questionnaire prep030008000Mostly your time, but a consultant shortens it. UTHealth needs this now.
VPAT 2.5 INT authoring / review020006000You can self-author; third-party review carries more weight with buyers.
Legal review of university MSA1500400010000University paper is rarely negotiable but always needs reading.
TOTAL — first year if all triggered3250071000157000
Portfolio math: ~$155K prepaid university revenue this year at ~70% gross margin = ~$108K contribution — this now COVERS the ‘Likely’ $71K first-year compliance column. UTHealth + UT Southwestern are MEDICAL: expect HECVAT + strong security posture (likely SOC 2 or a serious readiness effort). Treat the ‘Likely’ column as spend you WILL incur, not optional.
Deal size needed to absorb the ‘Likely’ column in year one
Assumed gross margin on the contract0.7
Minimum contract value to cover it101428.5714If this exceeds the deal you are chasing, the compliance spend has to be amortized across several customers before it is worth doing.

Rate Sources

| Published Rates Used | | | | | Checked 2026-09-04. Verify against your own invoices — list price is not your price. | | | |

ItemRate usedSourceChecked
Claude Pro / Max subscription$20 / $100 / $200 per moanthropic.com pricing (Pro $20, Max 5x $100, Max 20x $200)2026-09-04
Claude API — Sonnet class$3 / M in, $15 / M outAnthropic published API rate card2026-09-04
Claude API — Opus class$5 / M in, $25 / M outAnthropic published API rate card2026-09-04
Mathpix PDF conversion$0.005 / page (0-1M tier)mathpix.com/docs/convert/billing2026-09-04
Mathpix Files API (bulk)$1.50 / 1,000 pagesmathpix.com/blog/files-api2026-09-04
Mathpix API setup fee$19.99 one-timemathpix.com/pricing/api2026-09-04
SOC 2 Type II audit fee$12K-$60K, small SaaS $12K-$30KAggregated 2026 pricing guides (Drata, Secureframe, boutique CPA firms)2026-09-04
SOC 2 compliance platform$7.5K-$25K / yrVanta / Drata published startup tiers2026-09-04
Penetration test$5K-$25K2026 SOC 2 cost guides2026-09-04
Cloudflare R2 storage$0.015 / GB-mo, no egress feeCloudflare R2 pricing page — CONFIRMnot verified
Supabase Pro$25 / mosupabase.com/pricing — CONFIRMnot verified
AWS Lambda$0.0000166667 / GB-secondAWS Lambda pricing — CONFIRMnot verified
Stripe card processing2.9% + $0.30stripe.com/pricing — CONFIRMnot verified
Adobe Acrobat Pro~$24 / seat / moAdobe pricing — CONFIRMnot verified
JAWS commercial licensePLACEHOLDERFreedom Scientific — commercial license required for business usenot verified
Rows marked ‘not verified’ are from memory of list pricing, not checked today. Confirm before using in a quote.