How We Build and Check Our Calculators
The reference values behind the numbers, the automated checks that run before anything goes live, and the things we deliberately will not publish.
Last updated August 21, 2026
Why This Page Exists
Most flooring calculators online are a coverage formula in a box, with no way to tell where the numbers came from or whether anyone checks them. If you are about to order thousands of dollars of resin, or send a client a fixed price, that is not good enough.
This page sets out how Trade Epoxy tools are built, which figures are computed rather than typed in by hand, and what runs automatically every time we ship a change. It also says plainly where our numbers stop and your product data sheet takes over.
Who Builds These Tools
Trade Epoxy is built by a small team working with practicing epoxy and concrete flooring contractors. The tools come out of real jobs: quoting a garage floor, sizing a flake system, working out whether a grind is priced to make money.
We publish under the Trade Epoxy name rather than a personal byline. Nothing on the site is attributed to an invented expert, a stock photo persona, or a set of credentials we do not hold. If a figure on this site is right, it is because it was checked, not because someone signed it.
Every calculator carries a Feedback button. Corrections from working contractors are the main way these tools improve, and several calculators exist because someone asked for them.
Where the Numbers Come From
Each calculator draws on one of three kinds of input, and we keep them separate on purpose:
- Your inputs. Area, film build, product coverage rate, crew size, hourly rate. Anything specific to your job or your business is something you enter, never something we assume.
- Industry standard reference values. Published coverage rates, typical grinding production rates by pass, grit sequences, cure and recoat windows. These are starting points that match how the trade actually works, and every one of them is editable where the product varies.
- Arithmetic we can defend. Waste allowances applied before kit round up, overhead spread across billable days, margin applied as margin rather than markup. The order of operations in a quote changes the answer, so we pin it.
Prices are the one thing we will not invent. Material costs, labor rates and machine rates are yours to enter, because they move by region, supplier and week. Where a calculator needs a rate to work, it asks for it rather than guessing on your behalf.
What Runs Automatically Before Anything Ships
The honest answer to "how do you know these numbers are right" is that the site refuses to build if they are not. Sixteen automated checks run against the real code, not against a copy of it:
- Pricing engine: 212 checks across 8 hand calculated fixtures. Each fixture is a complete job priced by hand first, then priced again by the live engine, and the two have to agree to the cent. Three of them are real quality assurance estimates taken from actual jobs. The set also covers the invariants that quietly break: changing the machine count changes the duration but not the money, waste percentage applies before kit round up, and the same physical floor costs the same whether it was entered in square feet or square meters.
- Published hour figures: 18 checks across 3 pages. The polished concrete guides print specific labor hours for a 1000 square foot floor. Those hours are not written down anywhere. They are outputs of the live polish engine, and the check recomputes all four of them and fails if the published prose has drifted. It also pins what the prose derives from them, including the cost per square foot and the widths of the bars in the chart.
- Quote documents: 24 checks. Pro quotes render as real PDFs, then get read back and inspected. The client facing quote is checked to confirm it carries none of your internal cost figures, and each of those figures is confirmed present on the internal document first, so a renamed label fails loudly instead of quietly weakening the check.
- Published cost examples: 74 checks across 3 jobs. The epoxy flooring cost pages work three example jobs through in prose, roughly forty dollar figures in all. Every one of them is an output of the live cost engine rather than a number someone chose, and the check recomputes all three jobs, formats each figure the way the copy formats it, and fails if it can no longer find it where it is published. It also pins the two comparisons the writing actually argues from, and the bar widths in the chart.
- Published moisture bands: 19 checks across 2 pages. Whether a slab is clear to coat, needs a barrier, or should not be coated at all comes down to six numbers. Those numbers live inside the concrete moisture calculator, and they are also printed as prose on the guide that explains the decision and in the FAQ on the barrier calculator. The check reads the bands out of the live tool and fails if either page has drifted from them. It also pins the argument both pages make, that the very worst readings are a reason to go and find the moisture source rather than a specification for a heavier barrier. A drift that renumbers a band is easy to spot on review. A drift that inverts the advice is not, and that one had already happened before this check existed.
- Published margin bands: 30 checks across 3 pages. The profit margin calculator reads every result against four bands and tells you whether the margin is healthy, worth a second look, or a warning. Those bands, and the target ranges quoted alongside them, are printed as prose on the calculator page and on the guide that explains the pricing. Until this check existed the two disagreed with each other about commercial work by a full ten points, and part of the range one page called normal was a range the tool itself flagged. The check also recomputes the margin to markup conversion the guide is built on, independently of the calculator, so the arithmetic cannot quietly stop matching the words around it.
- Published quartz rate: 22 checks across 3 pages and the post generator. How much quartz a floor takes comes down to a single seeded rate. That one number decides what a contractor orders, and it is printed on the calculator page, on the guide that explains single against double broadcast, and inside the images our own social posts are generated from. Nobody proofreads a generated post against a guide, so that last one is where a drift would go unnoticed longest. The check recomputes all four published worked examples, confirms the metric and imperial figures still describe the same rate, and asks the post generator for a card to make sure it agrees with the pages.
- Published flake rate: 63 checks across 6 pages, 2 diagrams and the post generator. A decorative flake floor is sized off one seeded coverage rate, and this site had two of them. The calculator that sizes the flake layer on its own and the one that sizes the whole three layer system disagreed by 14%, which works out as a different number of boxes on four floors out of five. Neither page was wrong about its own arithmetic, and no amount of proofreading either page would have surfaced it. Only holding the two engines up against each other did. This check now requires them to agree, recomputes every published worked example on both sides, confirms the metric and imperial figures still describe the same rate, asks the post generator for a card, and verifies that each of the three flake calculators still links to the guide written to explain it.
- Published preview cards: 57 checks across 15 pages. Most guides on this site show a small mock of the calculator they are about, pre-filled with example inputs. Those mocks are typed by hand, and until this check existed nothing compared them back to the tool they depict. Two were wrong at once. One showed a grinding rate that already had the number of passes folded into it, on a tool that then multiplies by the passes again, so the guide demonstrated twice the real prep time. The other advertised a humidity warning and filled the field with a humidity too low to trigger it, so following the guide exactly produced no warning at all. The check now reads the seeded values out of each live engine and requires every card that shows them to agree, and it confirms the humidity in the worked example still trips the warning the card promises. It also recomputes the worked examples these guides publish, including the point at which a garage measured six square feet larger needs another whole kit of barrier material, which is found by walking the engine rather than written down.
- Published dew point rule: 58 checks across 8 surfaces. Whether a slab is warm enough to coat today comes down to the gap between the concrete and the dew point of the air, and the industry minimum is 5°F. Until this check existed the moisture calculator judged that gap against a threshold that refused the job at exactly 5°F, while the FAQ on its own page told you 5°F was the rule. The tool and the page directly contradicted each other on a safety verdict, and every figure on both was internally consistent, so proofreading either one would never have found it. There is now a single dew point engine that both calculators import rather than two copies that can drift, and this check confirms the tool still passes a reading at the published minimum, that no page has quietly re-added a private copy of the engine, and that the reference table still shows the thing it exists to show: above roughly 85% humidity the rule cannot be met by heating the slab at all, because the concrete would have to be hotter than the room.
- Internal link graph: 5 checks. Every link this site makes to itself is declared in a registry, and until this check existed nothing read those registries back. The result was a fault that recurred silently four separate times: a page and the calculator it was written to explain would stop pointing at each other, and nobody could see it by reading either page. The check now confirms that every declared link resolves to a page that exists, that none of them points at a URL we have since moved, that every page we ask search engines to index is reachable from at least two others, and that a page naming a calculator is named back by at least one of them. It found seven real breaks on its first run, including two guides that had never linked to their own calculator and a tool reachable from nowhere but the sidebar. What it does not do is judge whether a link is a good one; that is an editorial call and is left to a person.
- Film thickness and coverage: 44 checks. How far a coating goes is decided by two things: how much of what is in the tin stays on the floor, and how thick you lay it. The arithmetic that connects them is a unit conversion rather than an industry estimate, so this check rederives it from first principles rather than trusting the constant in the code, and confirms the imperial and metric versions still describe the same physical quantity. It also recomputes the whole generated coverage chart, 168 cells across two tables that are calculated when the page is built rather than typed by hand, and it pins the arguments the writing rests on, including the point that a product at 40% solids needs two and a half times the material of a 100% solids one to build the same floor. The plain published figures for this cluster are not checked here at all: they are declared in the shared figure registry below, because two separate guards on one number can disagree with each other and the disagreement looks exactly like a real problem.
- Diamond tooling life: 16 checks. How long a set of diamonds lasts decides both what a grind costs and how much tooling has to be on the truck, so two calculators need the same number. They read one shared constant rather than seeding it twice, and this check asks both engines for it and fails if they ever disagree. It also pins the reasoning behind the figure itself, which is deliberately conservative rather than an average, so the number cannot quietly drift out of the argument that justifies it.
- Published figure registry: 149 figures. Pages added from here on declare any figure they take from a calculator in one shared registry, and a single check recomputes all of them rather than each cluster growing a script of its own. It was deliberately empty until 2026-08-22, because every figure published before then was already covered by one of the checks above and pinning a number twice would mean two guards that can disagree with each other. The film thickness pages were the first to use it, and they are the model for everything built from here: the plain figures go in the registry, and only the things a registry cannot express, such as a derivation or an argument the writing rests on, get a script of their own. It also now covers the worked examples on the epoxy coverage calculator, which is where it caught a real one: a published example told you to order two kits of a product whose kit is smaller than the record claimed, so anyone following it turned up a kit short. The check is nonetheless proved on every build against a deliberately drifted test figure, so it cannot quietly become a check that passes because it is looking at nothing. The polyaspartic system pages are the newest to use it. Some things a registry cannot express, so that cluster also carries three claims checked the moment its code loads, which means a failure stops the build rather than waiting for a check to run: that a floor priced in feet and gallons comes to the same answer as the same floor priced in meters and liters, that the material a floor needs scales exactly inversely with how much of the tin stays on the floor, and that a wastage allowance changes how much you buy without ever changing how thick the finished floor is.
- Calculator unit defaults: 22 checks. Every calculator on this site used to open in square feet, whoever was looking at it. Thirty four of the forty tools carry a unit toggle, thirty six settings in all, and every one of them started in imperial, so a contractor in the UK or Australia met square feet on all thirty four and had to correct each one separately. They now open in the units of the country the visitor is actually in, and one correction anywhere is remembered across the whole site. This check confirms that no calculator has quietly gone back to being imperial only, that every setting still offers both an imperial and a metric option, and that a reset button restores the right units instead of forcing square feet back. It also pins the one place where two parts of the site describe the same fact about the same country: the United Kingdom is metric for area but drives in miles, and the supplier finder already said so, so the two are required to agree rather than trusted to.
- Page copy. A style gate parses the prose on every guide and calculator page and fails the build on house style breaches, so wording stays consistent across the whole site as it grows.
Each of those checks is itself calibrated. Before a check is trusted, it is proved that it can still detect the fault it exists to catch. The hour check was proved by deliberately changing a production rate in the engine: it reported nine mismatches across four published surfaces, then reported none once the change was reverted. A check that always passes is worse than no check, because it reads as evidence.
Why Published Figures Are Computed, Not Typed
The failure mode we design against is not a wrong calculator. It is a right calculator sitting next to a paragraph that was written when the calculator worked differently.
So where a guide quotes a number that the tools can produce, that number is treated as an engine output and tied back to the engine by a check. If someone tunes a production rate, the guide that quoted the old figure breaks the build rather than silently becoming untrue. It is a small discipline that stops the written pages and the working tools drifting apart over months.
Always Confirm Against the Product Data Sheet
This matters more than anything else on the page. Every result is an estimate based on the values you entered and the reference rates described above. Coverage, pot life, recoat windows and cure times vary by product, batch, substrate, temperature, humidity and technique.
Before you order material or start applying it, confirm the critical figures against the manufacturer's Technical Data Sheet for the exact product you are using. Where a TDS and a Trade Epoxy default disagree, the TDS wins, and the calculator is built to let you type the TDS value straight in. Our disclaimer covers the full position.
What We Will Not Publish
Some numbers are left out on purpose, and it is worth saying which:
- Made up market rates. Contractors regularly ask what the going rate is for concrete grinding. We do not publish one, because we do not have a defensible source for it. A confident number with nothing behind it is the most damaging thing a pricing site can print, because people quote against it.
- Invented prices in worked examples. Where an example needs a price, it is labeled as an example input, not presented as what things cost.
- Fabricated authority. No invented author credentials, no unearned certifications, no press logos we have not actually appeared in.
When we do not know something, the honest answer is to leave the gap visible rather than fill it.
How Pages Are Kept Current
The "Last updated" date on a page is the date that page's content actually changed, taken from the project's own revision history. It is not the date the site was last deployed, and it does not move because an unrelated page was edited. A date that quietly updates itself tells you nothing, so ours is wired to the content and nothing else.
Found Something Wrong?
Tell us. Use the Feedback button on any page, or the contact page, and say which calculator and which figure. Reports that include the product and the numbers you expected get fixed fastest.
You can also read more about what Trade Epoxy is, browse the guides, or go straight to the calculators.

