Research date: 2026-07-14
Currency: USD except where explicitly noted
Evidence policy: Current vendor prices and limits are sourced to official primary documentation. Local deployment status is based on repository documentation and configuration. Workload quantities remain estimates until pilot telemetry exists.
Accounting boundary: Software, infrastructure, API and third-party vendor costs only. Human labor, founder time, onboarding labor, support labor, service delivery and overhead are excluded.
1. Executive finding#
The prior LTA-shaped $503/month figure was arithmetically consistent with its assumptions but economically misleading. It bundled optional services, unverified runtime allowances and future recovery/AI choices into a read-only pilot.
The verified LTA read-only target stack is:
Cloudflare Workers account minimum $ 5.00
R2 Standard storage $ 3.45
R2 Class A writes $ 9.00
Supabase Pro organization / Micro after credit $25.00
All other activated base services $ 0.00
------
Known raw monthly COGS $42.45
× 1.20 operating buffer × 1.15 vendor contingency
Known buffered monthly COGS $58.58
The known-cost subtotal is $0.49/property/month for 120 properties. At an 80% software gross-margin target, the known-cost revenue floor is $292.91/month.
Five exposures are deliberately excluded from that priced subtotal and remain visible as unresolved matrix rows:
- actual shared Hostinger VPS invoice allocation;
- Streamline partner/API entitlement and fee;
- Breezeway multi-client partner entitlement and fee;
- direct Airbnb/Vrbo partner terms and fee;
- RevA/Reva vendor identity, license and API/export rights.
Unknown does not mean zero. Each must be priced, passed through or made a written contract exclusion before a fixed-price commitment.
2. Architecture and deployment evidence#
The product direction remains a modular monolith with Postgres and object storage, immutable evidence, canonical operating data, client portability and read-only-first delivery.
Current evidence distinguishes deployed capabilities from intended platform components:
- Tahoe currently runs as a
workspace_id-scoped tenant inside the shared Roam Free Supabase project, not a separate database. - Roam Free uses Cloudflare Workers/Pages, but no acceleration-platform Queue or R2 binding is evidenced in local configuration.
- The current Python/browser runtime is a shared Hostinger VPS. Its actual plan/invoice is not documented in the repository.
- Nango, WorkOS, Sentry, Langfuse, Document AI and a real-data acceleration model route are not evidenced as deployed dependencies.
- The frozen MVP requires deterministic processing and keeps real client/source-response data away from reachable model routes.
Therefore the matrix uses five deployment states: CURRENT, TARGET, OPTIONAL/DEFERRED, CLIENT-PAID/PASS-THROUGH, and UNRESOLVED.
3. Model method#
3.1 Selected LTA workload#
- 120 properties
- one workspace
- seven source systems
- four incremental syncs/day
- 2.52 million captured-event proxy/month
- 27,600 API/application request proxy/month
- 100,800 job-envelope Queue messages/month, or 302,400 write/read/delete operations
- 240 GB R2 evidence proxy
- 4.8 GB Postgres proxy
- 36 GB Supabase egress proxy
- no AI/document processing in the frozen MVP
- no PITR, Nango, paid observability, enterprise SSO, SMS or payment processing
3.2 Cost equations#
known raw software COGS = sum(company-paid priced matrix rows)
buffered known software COGS =
known raw COGS × (1 + operating buffer) × (1 + vendor/API contingency)
known-cost pricing floor =
buffered known COGS ÷ (1 − target software gross margin)
Base policy inputs are 20% operating buffer, 15% vendor/API contingency and 80% target software gross margin.
Shared account allowances are applied once to the portfolio/account, not once per client. Pass-through and unresolved rows do not enter the company-paid subtotal.
4. Verified atomic cost matrix#
| Cost item | Status | LTA raw | What it buys / why | Decision |
|---|---|---|---|---|
| Workers Paid | Current/required | $5.00 | Edge API/control minimum | Keep once per account |
| Workers requests | Included | $0 | Dynamic API/webhook requests | Included under 10M |
| Workers CPU | Included | $0 | Lightweight routing/validation CPU | Included under 30M ms |
| Queues | Target/included | $0 | Job-level async envelopes | Batch by job/page; do not queue each record |
| Workers Logs | Included | $0 | Sampled structured edge logs | Use included seven-day logs |
| R2 Standard storage | Target/required | $3.45 | 240 GB immutable evidence stock | Implement evidence vault |
| R2 Class A | Target/required | $9.00 | Rounded write/mutation blocks | Instrument actual verbs/dedupe |
| R2 Class B | Target/included | $0 | Reads/metadata | Below allowance |
| Supabase Pro organization | Current/required | $25.00 | Paid org, canonical Postgres, backups/auth/API allowances | Keep |
| Supabase Micro compute uplift | Included | $0 | Micro compute covered by org credit | Start Micro and measure |
| Supabase DB/egress overage | Included | $0 | Usage above allowances | Below allowance |
| Supabase PITR | Deferred | $0 | Second-level recovery | Enable only from RPO/write trigger |
| Existing shared VPS | Unresolved | excluded | Current Python/systemd/browser runtime | Obtain invoice and measured allocation |
| Dedicated worker | Deferred | $0 | Client-isolated always-on compute | $25 activation baseline |
| Nango Starter | Deferred | $0 | Commodity OAuth/token refresh/proxy | Activate at $50 only for selected supported source |
| Gemini input/output | Frozen MVP | $0 | Later helper/scorecard model use | Meter after policy/evals |
| Document AI Layout | Frozen MVP | $0 | Later layout-aware parsing | Explicit processor selection |
| Cloudflare Access | Current/included | $0 | Protected cockpit login | Free through 50 users |
| Supabase Auth | Available/included | $0 | Future product-native accounts | Use before WorkOS |
| WorkOS SSO | Deferred | $0 | Enterprise IdP | $125/client connection add-on |
| Sentry Team | Deferred | $0 | Shared error triage | Free/native logs first |
| Langfuse Core | Deferred | $0 | AI traces/evaluations | Activate after real AI route |
| Transactional email | Free/deferred | $0 | External auth/operational email | Start free; $20 Pro trigger |
| SMS | Deferred | $0 | Critical text alerts | Explicit client need only |
| Domain/DNS | Current/included | $0 | Existing subdomain/DNS | New TLD only after naming decision |
| Support software | Free/deferred | $0 | Shared inbox/history | Email or free tier first |
| Stripe | Revenue-dependent | $0 | Collect invoices | Formula tied to receipts, not fixed allowance |
| Source subscriptions | Client-paid | $0 | PMS/ops/pricing/comms systems | Never silently absorb |
| Partner/API access | Mixed unresolved | excluded | Multi-client rights, quota and derived-data permission | Written discovery gate |
The complete row-level descriptions, prices, allowances, workload quantities, formulas, payer, deployment status, triggers, confidence, research date and official URLs are in the workbook's COGS Matrix sheet.
5. Vendor verification#
5.1 Cloudflare edge#
Workers Paid is $5/account/month and includes 10 million requests and 30 million CPU milliseconds. Overage is $0.30/million requests and $0.02/million CPU milliseconds. Static assets are free and subrequests are not separately billed. Workers pricing
Queues includes one million operations, then $0.40/million. A successful message normally incurs write, read and delete operations; retries and messages over 64 KB add operations. Queues pricing
The prior workbook queued every captured event, generating 7.56 million operations and $2.624 of overage. The corrected architecture queues one job envelope per property/source/sync, generating 302,400 operations and $0 overage. This is a workload correction, not a price change.
Workers Logs includes 20 million events and seven-day retention, then $0.60/million. Workers Logs
5.2 R2 evidence plane#
R2 Standard is $0.015/GB-month, $4.50/million Class A and $0.36/million Class B, with 10 GB, one million A and ten million B included. Internet egress is free. Cloudflare rounds usage up to billing units. R2 pricing
For the LTA proxy:
storage: (240 − 10) × $0.015 = $3.45
Class A: ceil(2.52M) = 3M; 3M − 1M free = 2M × $4.50 = $9.00
Class B: under 10M = $0.00
R2 raw = $12.45
The captured-event-to-write relationship remains an estimate. Instrument actual Put/Copy/List/multipart/lifecycle verbs, retained bytes/day, object count, dedupe ratio and rebuild reads.
R2 lacks S3 bucket versioning; immutable content-addressed keys and optional bucket locks must provide evidence versioning. S3 compatibility · bucket locks
5.3 Supabase/Postgres#
Pro is $25/month per organization, not per project. One $10 compute credit is shared by the organization. Billing
Micro is approximately $10/month; Small approximately $15/month. Small provides more memory/connections/I/O but does not create the isolated Postgres instance—each project already has its own instance. Compute billing · compute specifications
The modeled 4.8 GB database plausibly fits Micro; capacity must be proven through CPU, RAM, I/O, query latency, connection and ingestion-duration telemetry.
Pro includes seven retained daily database backups. Seven-day PITR costs $0.137/project-hour, roughly $100/month, requires Small and replaces daily backups. It protects Postgres—not R2 or Supabase Storage objects. Backups · PITR
PITR is a recovery-policy choice, not an LTA capacity requirement.
5.4 Runtime#
The current runtime is a shared Hostinger VPS. The exact plan/invoice is absent, so the workbook refuses to invent an allocation. Public KVM prices are useful alternatives, not evidence of the current bill. Hostinger VPS
Verified future options include:
- Cloudflare Containers included allowances plus usage meters for restartable stateless jobs. Containers
- Render Standard worker at $25/month for 2 GB/1 CPU. Render
- Cloudflare Browser Run with ten browser-hours included and $0.09/hour afterward. Browser Run
Dedicated compute activates only from measured queue lag, missed job windows, CPU/RAM pressure, browser isolation, SLA/residency or a client-purchased dedicated environment.
5.5 Nango and connector platforms#
Nango Starter begins at $50/month with 20 connections and multiple separate proxy/run/compute/log/record/webhook meters. A connection is one authorized external account. Nango pricing
Nango is not deployed and the current catalog does not provide OwnerRez, Streamline, Breezeway, Conduit or PriceLabs as prebuilt sources. Base COGS is therefore $0. Keep Nango as a commodity-auth option for supported Google/Notion/Slack-class integrations; keep STR semantics, evidence, pagination, reconciliation and source policy direct.
5.6 AI and document processing#
The old $26.76 projection is correct only for:
19.2M Gemini 2.5 Flash input × $0.30/M = $5.76
3.6M output/thinking × $2.50/M = $9.00
1,200 Layout Parser pages × $10/1,000 = $12.00
total = $26.76
Gemini pricing · Document AI pricing
It is not OCR-only. Enterprise OCR would be $1.80 for 1,200 pages; Layout is $12; Form Parser/custom extraction is $36. Processor choice must be explicit.
Batch Gemini is 50% lower for offline work. Batch API
Base cost remains $0 because no real-data model route is reachable in the frozen MVP. Heavy agents must have a tenant cap and pass-through/add-on economics.
5.7 Identity#
Cloudflare Access is free through 50 users and currently protects the cockpit. Supabase Auth is included through 100,000 MAU under Pro. Cloudflare plans · Supabase pricing
WorkOS AuthKit is free through one million active users, but WorkOS enterprise SSO and Directory Sync each cost $125/connection/month at the first tier. Custom domain is $99/month; audit-event storage is $99/million stored events; SIEM streaming is $125/connection. WorkOS pricing
Use Access for the founder pilot, Supabase Auth for initial product accounts and WorkOS only from a signed enterprise requirement.
5.8 Observability#
Sentry Team is $26/month annually. Sentry Developer is sufficient for a founder pilot. Sentry pricing
Langfuse Core is $29/month with 100,000 units; Hobby includes 50,000 units and 30-day access. A unit can include each trace, observation and score. Langfuse pricing · billable units
Neither vendor is integrated locally. Base COGS is $0; use native structured logs and free tiers before paying. Self-hosting either system is uneconomic at pilot scale.
5.9 Commercial software#
The prior $25 placeholder is removed.
- Transactional email can begin on Resend Free; Pro is $20/month for 50,000 messages. Resend
- SMS is not required for the read-only pilot. Existing Quo automated messages are $0.01/outgoing segment; a dedicated Twilio/A2P program has separate number, registration, campaign and carrier fees. Quo · Twilio
- Existing Cloudflare DNS/subdomains have $0 incremental query cost. DNS FAQ
- Help Scout Free provides a small shared inbox before paid support tooling is needed. Help Scout
- Stripe must be modeled from collected revenue: cards 2.9% + $0.30; ACH 0.8% capped at $5; Billing adds 0.7% of recurring volume. Stripe · Billing
5.10 Source-vendor access#
Client subscriptions remain client expenses unless bundled/resold.
| Source | Economic treatment | Critical boundary |
|---|---|---|
| OwnerRez | Client-paid; optional 120-property Listing Content add-on example $152/month | Verify endpoint entitlement; 300 requests/5 minutes/IP. API · fees |
| Streamline | Quote/partner fee unresolved | Written multi-client rights, quota, webhooks, retention and partner fee. Partner X |
| Breezeway | Client-paid; partner expansion fee unknown | Multi-client scopes/grant must be written. Pricing |
| Airbnb | Direct partner price/quota unpublished | Partner-specific terms must permit retention, derivation and monetization. API program |
| Vrbo | Direct access gated/unknown | Prefer certified PMS/connectivity provider. Connectivity |
| Conduit | $1,499/month through 120 listings, client-paid | Not our COGS unless bundled/resold. Pricing |
| PriceLabs | $1/listing/month Customer API, or $120 at LTA size | Pass-through only if direct API is deliberately chosen. API |
| Notion/Google/Slack | Client subscription and published quotas; no base per-call price | Monitor distribution/quotas and Google Drive's announced future excess charging. Sheets · Slack |
| RevA/Reva | Unresolved vendor identity | No cost or contract assumption until identified. |
PMS-first connectors are both the economic and contractual default.
6. Corrected scenarios#
| Portfolio shape | Buffered known COGS | Per property | Known-cost floor at 80% GM |
|---|---|---|---|
| Roam Free proving tenant | $41.40 | $10.35 | $207.00 |
| LTA current read-only pilot | $58.58 | $0.49 | $292.91 |
| 25-property utility client | $45.87 | $1.83 | $229.36 |
| 100-property utility client | $82.32 | $0.82 | $411.59 |
| 500 properties / 5 shared clients | $267.56 | $0.54 | $1,337.79 total |
| 2,000 properties / 20 clients | $1,404.10 | $0.70 | $7,020.52 total |
The named 10,000-property row remains an aggressive-sync/heavy-agent stress case and is not a base forecast.
These totals exclude unresolved invoices/contracts and client-paid systems. They are formula-driven known-cost subtotals, not commercial rate recommendations.
7. Failure and contingency economics#
The model retains a 20% operational buffer and separate 15% vendor/API contingency on priced company-paid rows. It does not convert unknown contracts into percentages.
Instrument and test:
- retry storms and poison messages;
- full-resync reason, rows, bytes and source quota impact;
- R2 duplicate puts, lifecycle transitions and export/rebuild reads;
- Postgres logical dump, daily backup and replay restore duration;
- source/API termination and export windows;
- AI retry/tool-loop caps and batch/cache behavior;
- client export and vendor migration bytes/time.
8. Required cost instrumentation#
Minimum dimensions: tenant_id, workspace_id, property_id, source_id, connection_id, job_id, contract_version, environment, payer, purpose, occurred_at.
Meters:
- source request, quota, 429, retry-after, page, row, byte, webhook lag and contract entitlement;
- Workers request/CPU and Queue operation/byte/retry/DLQ;
- R2 retained/new/deleted bytes, object count, Class A/B verb, dedupe, lifecycle and rebuild/export reads;
- Postgres CPU/RAM/I/O/connections, DB size, egress, backup/PITR and restore duration;
- model/provider/snapshot, uncached/cached/output/thinking tokens, batch share, processor pages and retries;
- error/log/span/unit, sample rate, retention and high-cardinality fields;
- vendor plan, allowance, overage unit, invoice, payer and pass-through flag;
- Stripe payment rail, invoice amount, Billing/Invoicing fee, dispute and refund.
Human time may be instrumented in Taylor's separate operating model but must not enter this workbook's COGS formulas.
9. Upgrade and activation gates#
| Item | Trigger |
|---|---|
| Workers/Queues | Pay measured overage; no plan upgrade from normal LTA volume |
| R2 | >1M account mutations; track billing-block rounding and dedupe |
| Supabase Small | CPU/RAM/I/O/connection/query pressure or PITR requirement |
| PITR | Non-rebuildable writes, RPO <24h or failed replay RTO |
| Dedicated runtime | SLA/isolation, OOM, queue lag, missed job window or client purchase |
| Nango | Supported production commodity OAuth source intentionally selected |
| AI/document processing | Policy/evals approve a real-data route and tenant budget |
| WorkOS | Signed SSO/SCIM/SIEM requirement passed through to client |
| Sentry | Multi-operator triage, >5k errors or >30d history |
| Langfuse | >50k units, >2 users or >30d AI history |
| Paid email | >100/day, multiple domains or deliverability/support need |
| Source API add-on | Written entitlement and client/pass-through commercial treatment |
10. Review status#
The workbook was rebuilt around an atomic COGS Matrix and independently checked for:
- current vendor source fidelity;
- deployed versus candidate classification;
- formula integrity and cross-sheet ties;
- R2 billing-unit rounding;
- Queue workload granularity;
- Supabase plan/compute/PITR separation;
- zero human/service COGS;
- pass-through and unresolved-cost visibility;
- scenario and pricing-floor recalculation.
Automated validation shows zero formula errors. The model intentionally reports unresolved exposures rather than manufacturing false precision.