You set the rules. Every price follows.
Products & Pricing is the catalog and pricing engine inside WasteOS. Describe what you sell once — container services, recurring services, one-off jobs, add-ons — write your price rules the way your tariff sheet already reads, and every quote, ticket, agreement, and invoice line on the platform resolves from the same place.
Your catalog is what you sell. Not every combination of it.
Pricing tools in this industry love to explode: every waste type times every size times every frequency becomes its own “product”, and adding one glass container means scrolling a list of thousands. Products & Pricing keeps the catalog at the size of your actual offer — a product is the thing you would say on the phone: Glass 240L. Container delivery. An extra pickup.
Four product types keep the list honest, and each type carries its own form: a container service knows its physical facts; a one-off job doesn’t ask for any of them.
- The type decides the form. A container product always knows its six physical facts — waste type, container size, pickup schedule, weight, volume, billing rhythm — so no half-described container ever reaches a route.
- Portal decisions live on the product. Visible in the customer portal, price shown or hidden, self-service ordering on or off — switches on the product, not a separate system.
- A working table, not a viewer. Sort, segment by type, filter by fraction, container or pickup schedule — and import or export the whole catalog as a file.
One question per step. No dead ends.
“What are you selling?” Four cards, in plain words. From there the wizard adapts: pick the waste type and it offers only the matching container types; weight and volume derive from the container itself. Anything missing along the way — a waste type, a container type, a pickup schedule — is created inline. You are never sent to another module to come back later.
The price step separates the two billing streams a container really has: a base fee billed per period, and a price per pickup that lands as a rule in your price list — where it can later vary by zone or customer type without touching the product. Add-ons skip the list entirely: they price on the product and charge alongside whatever they accompany.
The last step runs a live price check against the real engine before anything is created — in the product’s own words: “Verified with the same engine that prices real orders.”
One rule prices everyone. Until you say otherwise.
A price list is a set of rules: this product, for this slice of the world, costs this much. Leave a condition open and it reads “any” — so a single wildcard rule prices a product for everybody, and you add sharper rows only when reality demands them: a zone, a customer type, who holds the service responsibility.
That is how a real tariff already works — a base rate and its exceptions — and it is why the catalog stays short: differences in price never have to become new products.
- Draft, scheduled, active. Give a list an effective date and it activates itself on the day — with an audit row that says so.
- Rules with memory. Every price knows when it last changed and what it was before — and bulk adjustment reprices a whole selection in one move.
- The same wizard, pre-aimed. “Add product to this list” opens the same guided flow with the list pre-selected.
Most specific wins. Every time. Explainably.
When any part of WasteOS needs a price, the engine gathers the candidate rules for that product from the active price lists and scores them against the facts of the case — zone, customer type, service responsibility. A blank condition matches anything; a contradicting one disqualifies the row outright; the most specific surviving match wins. Ties break to the lower price, then the earlier rule — the same question always gets the same answer.
On top of the winning base, the engine layers the rest of your tariff, each as its own line: materials — part and material costs priced per unit and quantity; add-ons set to attach automatically; the service level’s surcharge, per-product overridable; and the date’s surcharge window — holiday, weekend, or seasonal, fixed or percentage.
Ask the price before a customer does.
Price Check runs the real engine, interactively — no order created, nothing persisted. Pick a product, a customer type, a zone, and read the answer as line items, not a mystery total. It is the same computation every other part of the platform makes, so what you verify here is what a customer would be charged.
It is also how surprises surface early: the example here is a genuine resolved preview from a development run — a 123.50 base rule plus a seasonal surcharge nobody typed into the check, exactly as the engine would price it in July.
- Built into the wizard too. The review step runs the same check the moment a product is created — every product is born verified.
- The winning rule shows its work. The breakdown carries the match score of the base rule and the reason behind every surcharge, line by line.
The same product, priced across town.
Zones make geography a column in your tariff instead of a reason to clone products. Draw urban, suburban, rural, or fully custom areas on the map, and reference them from price rules — Glass 240L stays one product whether it is emptied downtown or twenty kilometres out.
- Types organize; the zone prices. A rule matches the specific zone — urban or rural is classification, never a hidden pricing input.
- Overlap checked as you draw, against the zones you already have.
- Wildcards still apply. A rule with no zone prices every zone; the zoned rule wins only where it genuinely matches.
The price on an agreement is never stale.
When a container is ordered, the ticket arrives with the engine’s price already on it — a suggestion, not a verdict. The back office can accept or edit it, and an edit is recorded as exactly what it is: an override, with the engine’s original kept alongside.
From then on, the agreement doesn’t hoard a copy of the price — it resolves it from your active price lists when asked. Change the tariff and every agreement answers with the new truth the moment it applies. No snapshot rot, no reconciliation project.
- Suggested, then decided. The engine proposes; a human confirms or overrides — and the record shows which happened.
- Billing asks for a date. The agreement answers as of that date — price history included, so a backdated run bills what was true then.
- One agreements table. New catalog agreements and legacy ones live side by side during migration — no second screen to check.
Opinionated defaults. Auditable everything.
A new company opens the module already standing: the four standard product types and the standard service levels are seeded automatically, and the Standard price list creates itself with your first product — never empty, because a price list without anything in it helps nobody.
Everything structural lives behind one Setup page — product types with their locked field schemas, service levels, materials, surcharge rules, units, and History, the audit trail every entity writes to. In the product’s own words: “Products and prices work without any of this — add these when you need them.”
One model. Both sides of the tariff.
Municipal fee schedules and commercial price books are the same shape underneath: a base rate, its exceptions, and the discipline to show where every number came from. Products & Pricing speaks both dialects on the same engine.
For municipalities and public companies
- Publish the fee schedule as data — product, zone, customer type — resolved the same way for every household
- Self-service ordering in the portal against the same engine: the resolved price, never a hand-typed one
- Every fee change on the record — drafts, scheduled activations, and per-entity history
- Seasonal and holiday surcharges declared once, applied only while their window is live
For haulers and private operators
- Price books per market: wildcard base rates with zone, customer-type and responsibility exceptions
- Deliberate overrides for the deal that needs one — recorded as overrides, not silently edited rows
- Materials itemized on every quote — locks, liners, transport lines priced per unit, not buried in the base
- Base fee and per-pickup price kept apart, so operational pricing varies without touching subscriptions
No export. No re-typing. No second system.
Pricing usually lives in a spreadsheet next to the operational system, and the two drift apart. Products & Pricing is a native part of WasteOS: the catalog you define here is what tickets order, what agreements bind to, what the portal shows, and what billing reads — one source of truth, resolved live.
Catalog
- Four product types with locked, type-specific field schemas
- Guided wizard with inline-create — waste types, container types, pickup schedules
- Weight and volume derived from the container type, never re-typed
- Import, export, sort, segment and filter the whole catalog
Price
- Price lists with a draft → scheduled → active lifecycle — dated activation is automatic and audited
- Wildcard rules across zone, customer type and service responsibility
- Surcharge windows — fixed or percentage — for holidays, weekends and seasons
- Materials per unit and quantity; bulk price adjustments across a list
Verify
- Price Check: the real engine, interactively, as line items
- Live price check on the wizard’s last step — every product born verified
- Match scores and surcharge reasons printed on the breakdown
Sell
- Engine-priced tickets with explicit, recorded overrides
- Agreements that resolve their price at read time — as of any billing date
- Portal visibility, price display and self-service ordering as product switches
- Add-ons that attach automatically and price as their own line
Govern
- Auto-seeded defaults that never price anything by themselves
- History on every entity — who changed what, and when
- Legacy agreements alongside new ones — migration without a cliff
Bring your gnarliest tariff sheet.
The one with the exceptions to the exceptions. Watch it become a catalog, a price list, and a price check that answers in seconds.
30 minutes · your own tariff if you want · no slideware · no obligation.
Prefer email? hello@wastehero.io