Prototype · internal review

Every refill is a bottle that never got made.

Set a basket and a subscription length to see the plastic, carbon and water a Refill customer keeps out of the system. Counted conservatively, sourced line by line, and ready to drop into checkout.

Your subscription

Basket
Plan
Count bottles as basis

How long they stay 12 months
1 mo12 mo24 mo36 mo
Home sets floor area and bathrooms

Occupants sets laundry and dishes

Cleaning help sets how often

Bottles that never get made
77 bottles

Virgin plastic avoided 3.9 kg
Carbon avoided 12.8 kg CO₂e, cradle-to-gate incl. moulding
Process water avoided 391 L Blue water in plastic production
Also saved on price AED 960

That carbon, in other terms

  • 53 kmnot driven in an average car
  • 0.21tree-years of carbon uptake
  • 1,065phone charges

Comparisons use US EPA equivalency factors, so they are illustrative rather than UAE-specific.

Why it matters here

Per-capita bottle use is a Bee'ah industry estimate; the recycling rate is from Heriot-Watt University research.

Drop-in checkout module

This is the compact version, sized to sit directly beneath the order summary. It reads from the same engine, so the number on the confirmation screen can never disagree with the calculator.

Copy that stays defensible

  • Lead with bottles. It is the number a customer can picture and the one we can prove.
  • Say "never get made", not "saved from the ocean". We prevent production, we do not clean up waste.
  • Always show the horizon the number is based on, e.g. "over 12 months of refills".
  • Keep a "How we count this" link to the method page on every surface.
  • On the mobile impact screen, one number leads and everything else is subordinate to it. A phone has room for a single headline, not four competing ones.
  • Icon-led is the chosen treatment. The type-led screen is kept as a reference for the point at which the bottle grid stops being a real count — see the note below.
Checkout

Your Impact — account dashboard

The post-purchase view. Once someone is subscribed the number stops being a projection and becomes a receipt, which is a far stronger retention lever than the checkout estimate. It shares the Calculator's basket and units, but it always counts whole delivered baskets, so it will read higher than a checkout estimate shown on the consumption basis. The two are not interchangeable.

Prototype controls
Your Impact This month

You have kept 35 bottles out of the system

Every empty you hand back is one that never has to be made again.

35 Bottles never made
5.8 kg CO2e avoided
178 L Water saved
6 Refills delivered

Your impact over time

+7 this month

Next milestone

50 bottles

Share your impact

The same figures on a phone

Most subscribers will never see the layout above — they will see this. It is the icon-led treatment from the Checkout UI tab, driven by the dashboard's own numbers rather than the Calculator's, so the tiles, the window selector and the months-subscribed slider all move it.

  • It reads the window selector. The three figures follow This month / This year / All time exactly as the tiles do, and the screen states which window it is showing. A monthly figure must never be mistakable for a lifetime one.
  • The milestone is always lifetime, from the shared thresholds — 25, 50, 100, 250, 500, 1,000, 2,500 — so the phone and the badge row above it can never name different next badges, whatever window is selected.
  • Whole baskets, like the rest of this screen. The bottle grid draws only bottles that have actually been counted; there are no empty slots implying a target nobody was given.
My account

Do not ship this without

Does the basket fit the household?

One basket delivers one of each product. Whether that is the right amount depends on three things, not one: how many people live in the home, how large the home is, and how often it gets cleaned. Affluent Dubai homes are large, and floor cleaner is consumed per square metre — so a 4BR villa gets through roughly three times the floor cleaner of a 2BR apartment with the same family in it.

Home
Occupants
Cleaning help
Basket

What one monthly refill actually delivers

Every bottle in the basket is replaced on refill day regardless of what is left in it. This is what that means product by product for this household.

Product Used per cycle Bottles needed Supplied One bottle lasts Used by refill day Top-up required

Inside one delivery cycle

Cycle length

Which products drive top-ups

What to recommend at checkout

Scaling with home size

Millilitres per month at each home tier, holding cleaning help constant and using each tier's typical occupancy. Floor cleaner is the line that moves most, because it is the only product dosed per square metre. Laundry and dishwashing barely move across tiers — they follow occupants, not floor area. Dubai's market-wide average transaction is 1,353 sq ft, so every tier from townhouse upward is an above-average home, which is where Refill's target customer lives.

Before this goes near a customer

How every number is worked out

There is no hidden arithmetic. Consumption is always the same five steps: what drives the product, how much one clean takes, how often that clean happens, what that adds up to over a month, and how many bottles that is. Every figure the model uses is listed further down and can be changed — change one and everything on every tab recalculates.

Home
Occupants
Cleaning help
Basket

Worked example, product by product

These are the live numbers for the household selected above. Read each row left to right.

From bottles to impact

The impact figures follow from the same consumption numbers and the weight of the packaging they replace.

Admin

Who may sign in, what each role may change, and a record of everything that has been changed.

Every number the model runs on

None of this is fixed in code. Change a value and every figure in the tool recalculates with it, all the way through to the customer's mobile impact screen. Nine inputs are flagged below as not yet confirmed — the panels explain what would settle each one.

Sourced — a label or a published figure Part sourced — mechanism sourced, size ours Our estimate — no external source
Changing a value here changes the whole app

Every figure in this tool is derived from the inputs below. Change one and the Calculator, Household fit, the per-product table, the worked calculations, the checkout modules and the customer's mobile impact screen all recalculate together. There is nothing to re-read afterwards and nothing to keep in step by hand.

Two things behave differently, by design rather than by omission:

  • The Impact dashboard reports what was delivered, so pack weights move it and doses do not. A dose change does not retroactively change how many baskets were shipped.
  • Household fit reports volumes and shortfalls, so doses and coverage move it and pack weights do not. Plastic weight has no bearing on whether a bottle runs out.

Who can change what depends on who is signed in. Signed out, the tool is read-only. A business account can change the 40 operational inputs; an admin can change all 58, including the 18 that anchor published figures. Every change asks for a reason, is saved for everyone, and is recorded in the change log below. Reset all to default puts a value back to the published figure and is logged in the same way.

How to weigh the bottles4 inputs

Each bottle is modelled as body plus closure, because they are different polymers with different carbon and water factors. That is why there are four inputs and not two.

InputWeigh
1 L pour bottle, bodyEmpty bottle, cap removed
1 L pour bottle, capThe cap on its own
500 ml spray bottle, bodyEmpty bottle, trigger removed
500 ml spray, trigger headThe trigger assembly on its own

Weigh the parts separately. Entering a combined weight into the body field moves mass from PP or HDPE onto PET, which changes the carbon result by a few percent even when the total is identical.

Weigh three of each and enter the mean. Moulded bottles vary between units, and a single sample carries that variance straight into every headline figure.

Use a scale accurate to 1 g. These four values sit at the top of the chain: a 10% error here is a 10% error in every plastic, carbon and water number the tool produces, including the ones a customer would see.

Setting the dishwashing dose1 input

This is the only product in the range with no stated dose. The label says "apply a small amount to a sponge", which cannot be modelled, so 15 ml is inferred from comparable plant-based concentrates that themselves span 3-24 ml.

It is not an analysis gap. Refill has to decide a dose a customer could actually follow, print it on the label, then enter it here. Until then the delivery cadence quoted to most of the addressable market rests on a number we chose rather than one we set.

This input has unusually wide reach — it sets the cadence for every tier below a 4BR villa. The tool handles that automatically; the per-product table, the fit table and the tier outputs all move with it.

The three coverage figures, and why they are the weak point4 inputs

Bucket coverage and the hard-floor share are modelling judgements, not pending measurements. They will not be settled by another literature search, because the literature is what produced the disagreement in the first place.

Coverage rests on one top-down calibration against one vendor benchmark for a different country. Bottom-up sources disagree in both directions: commercial damp-mopping practice implies about 49 m² per bucket, a UK domestic calculator about 10.

CoverageHouseholds needing a top-up
175 m² (current)43%
100 m²60%
80 m²65%
49 m²82%

Move the sliders and watch Household fit. This single input moves the commercial story more than any other in the tool, which is why it is flagged rather than presented as settled.

What would settle it: roughly twenty real households, measured floor area, and how long a bottle of floor cleaner actually lasts them. One month of observation would collapse this range.

Live values, published defaults and what-ifsHow the three differ

Three things can drive a number in this tool, and the banner at the top of this tab always says which one is in force.

  1. Published default. The figure the tool ships with, held in the model file. This is what everyone sees until someone changes it.
  2. Live value. A default that a signed-in user has changed, with a reason, for everyone. The row shows who changed it and when, and the change log records the old figure, the new one and the reason. Reverting a row restores the published default and is logged too.
  3. What-if. A private exploration. Anyone can open one without signing in, nothing is saved, nobody else sees it, and the banner says so plainly while it is on.

Changing a published default itself means editing def: in data.js, running qc/run-all.sh and redeploying. That is only needed when a figure has been measured and should become the new baseline for everyone — day-to-day changes belong in the live values above, where they carry a reason and an audit trail.

Who can sign in

An account is created by invitation only; there is no sign-up page. Roles decide what a person may change, and every invitation, role change and account change is recorded under Activity.

Admin — all 58 inputs, plus users and permissions Business — the operational inputs an admin has granted Viewer — read-only, changes nothing

Refill sends the invitation by email and also produces a single-use link. Send the link yourself if the email does not arrive — company mail filters routinely hold these.

What a business account may change

Tick a field to let business accounts change it. Admins can always change everything, so this grid only moves the business line. Each row shows where its current figure came from, because that is what you are handing over.

Fields marked published figure anchor numbers that appear in the spec, the defence brief and the customer-facing impact screen. Granting one to a business account means a figure Refill has published externally can be changed by someone who is not accountable for defending it. The tool will still ask for a reason and still record the change, but it will not stop them.

Activity

Every change to a live value, every invitation, role change and permission change: who did it, when and why. Written in the same transaction as the change itself, so nothing can move without a line appearing here. The log cannot be edited or deleted from this app.

Per-product impact

One refill of each product, against the single-use bottle it replaces. This fills the empty "Safe the world percentage" column in Product Description.xlsx with something you can actually put on a label.

Product Size Packaging replaced Plastic CO₂e Water Per year

Method & sources

Built to survive a challenge under UAE consumer-protection rules. Where two credible methodologies disagree, we claim nothing rather than pick the flattering one.

What we count

    What we deliberately exclude

      On signing off 175 and 100

      The mop-water figures sit in the notes on those two inputs rather than in a separate note, because that is where they will be challenged. Be aware of what the evidence is.

      Every bottom-up source contradicts them. ISSA commercial damp mopping implies 49 m² per bucket; CleanCalcs implies 10. But those are recommended hygiene practice, not what households actually do.

      The top-down check supports them. At 175 and 100, surface-cleaner use comes out at 2.61 and 3.31 litres per person per year — inside the 2.5-3.5 litre benchmark range, while 80 and 49 fall outside it.

      The caveat. That benchmark is a vendor estimate for the Netherlands, not a UAE primary statistic. It is one benchmark against one free parameter.

      Why it is still safe to sign. 175 and 100 are the conservative end. Every lower value increases the share of households needing top-ups, so a challenge on this number strengthens the case rather than weakening it.

      Claims to keep out of copy

        Every factor, with its source

        Factor Source Confidence
        Open item before this goes live: weigh a real 1 L bottle with cap and a real 500 ml bottle with its trigger head, then enter the measured weights on the Configuration tab. The current 45 g and 54 g are category norms, not measurements of Refill’s own bottles, and they are the largest unverified numbers in the impact chain.