01 / Workload contract
Describe demand before choosing products.
The common input is a demand envelope: monthly requests, active CPU per request, end-to-end wall time, memory, inbound and response payloads, object storage retained, storage reads and writes, plus a traffic model. Provider-specific controls only describe the architecture needed to price that same demand.
Same workload
Request, storage and delivery quantities do not change when the user changes provider tabs. An adapter may convert units, but it cannot quietly shrink the workload.
Explicit architecture
Endpoint choice, instance count, capacity benchmark, concurrency and minimum instances are visible inputs because they materially change whether a stack fits.
No inferred services
The engine does not turn a request count into an invented database, queue, cache or observability bill. Missing scope is named as an exclusion.
02 / Traffic and time
Monthly volume and peak shape answer different questions.
A model month contains 720 one-hour buckets. Flat,
business_hours and global shapes
begin as 168-hour weekly vectors normalized to mean 1.0,
then repeat through the month. The engine allocates the entered
monthly request total across those buckets and derives average
RPS, peak RPS and the peak-to-average ratio.
The spike multiplier concentrates more of the existing monthly requests into its selected hours; it does not create extra requests. If launch traffic is additive, increase monthly requests as well. This keeps a shape experiment separate from a volume forecast.
Serverless request, compute, storage and transfer charges depend on the integrated quantity. Shape therefore should not change a linear monthly bill when volume stays fixed. Shape does change the hourly peak used to qualify fixed capacity and the per-hour ALB LCU integration. Monthly growth compounds the request total and reruns the same adapters for each projection month.
03 / Billing semantics
CPU, duration, bytes and money keep their own units.
Active CPU is not wall time.
Cloudflare Workers uses requests × active CPU milliseconds. Lambda uses memory-weighted wall time rounded to 1 ms. Cloud Run uses request wall time rounded to 100 ms for both configured vCPU and memory. EC2 and Hetzner price selected fixed nodes, then test their capacity against the traffic peak.
Retained data and operations stay separate.
GB-month is modeled as a constant monthly average. Reads and writes are supplied independently and map to each provider's published object-operation classes. Binary-unit tariffs receive an explicit GB-to-GiB conversion.
Public delivery remains visible even at $0.
Public response transfer is monthly requests × average response KB ÷ 1,000,000, yielding decimal GB. Inbound bandwidth is not charged as egress; inbound request bytes still affect API Gateway request units where applicable.
Greenfield and marginal are different questions.
Greenfield assumes recurring account- or project-wide allowances remain unused. Marginal assumes another workload has consumed shared allowances. Promotional setup credits are excluded in both modes.
Prices are exact rational microdollars.
Price books store an integer numerator, denominator and bundle size. Quantities use fixed-point integers. Each line is rounded half-even once to an integer microdollar, and a provider total is the sum of those stored line-item costs. No binary floating-point currency is accumulated.
04 / Eligibility and warnings
A low total is not allowed to outrank a workload it cannot serve.
For EC2 and Hetzner, usable capacity is
nodes × user RPS benchmark × target utilization
. It must meet or exceed the highest hourly RPS.
HA profiles also require their minimum topology. An
underprovisioned or incomplete estimate is excluded from
winner selection even if its displayed list-price total
is lowest.
The modeled path is priced and eligible for comparison.
A self-managed or fixed-capacity reference that fits the entered assumptions and remains eligible.
Selected capacity misses the modeled peak. Total stays visible; winner eligibility does not.
A required capability or pricing dimension is unsupported. The model refuses to fill the gap with $0.
Warnings travel with the estimate and its line items. They cover shared allowances, benchmark assumptions, input normalization, capacity shortfalls, storage gaps, provider memory ceilings, unsupported configurations, payload limits and contact-sales tiers. A warning is part of the answer, not optional explanatory copy.
05 / Provider mapping register
Stable IDs make every transformation challengeable.
The IDs below are emitted on the corresponding bill lines. They identify the mapping rule; the dated rate itself lives in the price-book ledger.
Workers Paid + R2 Standard
Cloudflare
Complete when the entered workload fits the modeled Workers and R2 path, including the 128 MiB isolate ceiling.M-CF-001 Workers account, requests and active CPU
Add one Workers Paid account minimum in greenfield mode when requests are non-zero, then net recurring request and CPU allowances. Requests multiply directly; CPU milliseconds equal monthly requests × active CPU per request. Wall time spent waiting on I/O is not substituted for CPU time. Workloads above Workers' 128 MiB per-isolate memory limit are incomplete and cannot win.
M-CF-002 R2 Standard storage and operations
Map stored GB-month to R2 Standard, storage writes to Class A operations and reads to Class B operations. Greenfield mode nets the recurring storage and operation allowances; marginal mode does not.
M-CF-003 Explicit zero-price Internet egress
Multiply monthly responses by average response payload to retain the real transferred GB quantity, then emit it as a visible $0 R2 Internet-egress line. Zero is evidence here, not an omitted component.
Lambda x86 + HTTP API or Function URL + S3
AWS serverless
Complete only when the selected endpoint and payload fit the modeled buffered-request path.M-AWS-LAMBDA-001 Lambda requests and wall-time compute
Map each workload request to one Lambda invocation. Round wall time up to the next millisecond, multiply by configured memory in GiB and requests, then net recurring request and GB-second allowances in greenfield mode. This includes I/O wait; active CPU milliseconds do not replace duration. Memory above Lambda's 10,240 MiB configuration maximum makes the stack incomplete.
M-AWS-APIGW-001 Function URL or HTTP API ingress
A Function URL adds no separate endpoint fee. HTTP API maps each incoming request to at least one 512 KB request unit, using inbound request payload—not response egress—and applies the published request tiers.
M-AWS-S3-001 S3 Standard object storage
Map decimal GB-month, storage writes and reads to S3 Standard storage, PUT-class requests and GET-class requests. Delivery is direct; CloudFront, transfer acceleration, replication and lifecycle retrieval are outside this model.
M-AWS-NET-001 Shared allowance and tiered Internet transfer
Derive public egress from response bytes. Greenfield mode nets the account-wide recurring transfer allowance, then distributes billable GB through the public AWS tiers. Usage beyond the last public tier is flagged as contact-sales and shown provisionally, never presented as a quote.
Fixed c6a.large fleet + gp3 + optional ALB + S3
AWS EC2
A capacity-qualified reference. Underprovisioned or structurally incomplete selections cannot win.M-AWS-EC2-001 Fixed instance capacity and base infrastructure
Bill the selected Linux On-Demand c6a.large nodes for a 720-hour month and their gp3 root volumes. HA includes two public IPv4 addresses for its internet-facing ALB; the node toggle adds one public address per node. Capacity is nodes × the user's RPS-per-node benchmark × target utilization, compared with the highest hourly workload RPS. A workload above the c6a.large's 4 GiB memory is incomplete.
M-AWS-ALB-001 Application Load Balancer and LCU integration
In HA mode add 720 load-balancer hours. For every hourly traffic bucket, compute the LCU maximum across new connections, active connections, processed bytes and paid rule evaluations, then sum those hourly maxima.
M-AWS-EC2-002 Operations remain an explicit exclusion
Emit a zero-price assumption line for patching, observability and engineering work. The zero means no public tariff can be inferred from workload volume; it does not claim operating an instance fleet is free.
M-AWS-S3-001 / M-AWS-NET-001 Shared object-storage and transfer rules
The EC2 reference uses the same S3 Standard mapping and AWS Internet-transfer tiers as the serverless stack, so compute architecture changes without quietly changing the storage or delivery workload.
Cloud Run request-based + Cloud Storage Standard
Google Cloud Run
Complete for concurrency 1, zero minimum instances and wall time that includes weighted startup overhead.M-GCP-RUN-001 Request-based CPU, memory and requests
Round wall time up to 100 ms, then multiply by requests and configured vCPU for CPU-seconds, and by workload memory for GiB-seconds. Greenfield mode nets recurring CPU, memory and request allowances. The selected CPU and memory must be a supported Cloud Run pairing; concurrency above 1 or minimum instances above 0 is marked incomplete rather than guessed.
M-GCP-STORAGE-001 Cloud Storage units and operations
Convert the workload's decimal GB-month to binary GiB-month, then map writes to Class A and reads to Class B operations for Standard storage. Greenfield mode nets the modeled recurring storage and operation allowances.
M-GCP-NET-001 North America Premium Tier transfer
Convert public response delivery from decimal GB to GiB, net the recurring allowance in greenfield mode, and apply the published Premium Tier egress bands for the us-central1 reference.
Fixed CPX22 nodes · self-managed
Hetzner
A capacity-qualified reference with explicit storage and operations gaps.M-HETZNER-001 Fixed nodes, addresses and backups
Bill the selected 4 GiB CPX22 nodes for a server-month, add primary IPv4 when selected, and price optional server backups as the documented percentage of server subscription. Capacity uses the user's benchmark and target utilization, not a vendor throughput promise. A per-request memory requirement above the node's memory makes this fixed reference incomplete.
M-HETZNER-002 Included local storage is not object storage
Expose 80 GB of node-local storage per selected node as included. If the workload exceeds it, mark the estimate incomplete; do not invent an extra disk price or treat unreplicated local storage as equivalent to managed object storage.
M-HETZNER-003 Included outbound traffic and overage
Multiply the documented traffic inclusion by selected nodes, subtract it from public response delivery, and price only the positive overage using the published unit.
M-HETZNER-004 Self-managed labour is not silently free
Emit a visible $0 list-price line for the OS, runtime, TLS, scaling, monitoring, backups and incident response. Those costs are excluded because they depend on the operator, not because they are economically zero.
06 / Known exclusions
What the total does not claim.
No databases, caches or queues
The current comparison covers HTTP compute, object storage and public response delivery. It does not infer RDS, D1, DynamoDB, Cloud SQL, Redis, queues or event buses from request volume.
No CDN or private-network path
Object delivery is direct in the modeled stacks. CloudFront, Cloud CDN, cache hit ratios, NAT gateways, inter-zone transfer, private links and origin shielding need a separate architecture model.
No commercial adjustments
Taxes, VAT, support, promotional credits, negotiated discounts, commitments, reservations, Savings Plans, spot capacity and currency conversion are excluded unless a line explicitly says otherwise.
No automatic service equivalence
A list-price total does not price latency, durability, operational burden, regional coverage, support or failure modes. Reference and warning labels remain part of the result and should travel with any screenshot or report.
No inferred idle or concurrent lifetime
Cloud Run concurrency above one and non-zero minimum instances need arrival overlap and idle-lifetime data. The v1 engine returns an incomplete estimate instead of multiplying an aggregate by a convenient guess.
No unlimited payload assumption
Known endpoint or response-size violations produce capability warnings and an incomplete result. Streaming and alternative delivery designs are separate models.
07 / Reproduce a result
The audit trail is deliberately mundane.
- Record the workload. Keep every visible input, traffic control and provider-specific architecture setting.
- Record each book version. The result displays the immutable version used by each provider adapter.
- Follow line-item sources. Each line carries its mapping ID, official URL, recorded verification date and exact cost in microdollars.
- Keep the warnings. Completeness and capacity status are required context for the total.