Methodology
FitAppliance is a practical sizing tool. Its job is to compare a measured space with appliance dimensions and show products that are plausible fits. This page explains what is calculated, what is inferred, what comes from project data files, and what the site deliberately does not calculate.
How we calculate fit
The main fit calculation is implemented in public/scripts/search-core.js. A user enters cavity
width, height and depth in millimetres. The search code converts those values with toMm, rejects
missing or invalid dimensions, and then evaluates products in the chosen category. A product only enters the
candidate pool when at least one usable cavity dimension has been provided.
The calculation is intentionally simple. For each axis that the user supplied, the tool compares the cavity
size with the appliance size plus the clearance mode currently being used. Width uses both side clearances, so
the side value is doubled. Height uses the top clearance. Depth uses the rear clearance. The score for each axis
is calculated as (cavity - appliance - clearance) / cavity and clamped between -0.05 and 0.5. The
product's fit score is the tightest axis. If that score falls below the user's tolerance threshold, the product is
excluded from the results.
The tolerance slider is not a promise that an appliance will fit after bending the rules. It is a measurement buffer. In the current code, a 5 mm tolerance means the threshold can move slightly below zero relative to the smallest supplied cavity dimension. That helps users explore products that are close to the measured boundary, but it does not override manufacturer clearance guidance. Products that only fit because of tolerance are marked as tight rather than treated as exact matches.
Why we filter to retailer-verified products by default
The public search now favours products that have verified Australian retailer links. In
public/scripts/search-core.js, searchWithFacets keeps rows with a non-empty
retailers array by default, then applies the user's brand, price, star and availability facets.
This is a deliberate usefulness trade-off. A catalogue can contain hundreds of dimension matches, but many of
those rows may be obscure models that are difficult to buy from major Australian retailers. Showing a shorter
list from JB Hi-Fi, Harvey Norman, The Good Guys, Appliances Online and Bing Lee is more honest for a shopper
trying to make a purchase today.
The full catalogue is still available. Users can turn off the retailer filter in the interface, or open a
shared URL with ?showAll=1. When no retailer-verified product fits a measured cavity, FitAppliance
tries the same search against the full matching pool and clearly labels those fallback rows as products without
retailer information. At the time this page was reviewed, 66 of 2,188 raw catalogue products had verified
retailer product-page links, with 177 reviewed retailer links in total. This filter will become more useful as
the retailer backfill expands.
Clearance modes and manufacturer guidance
FitAppliance now separates physical fit from installation advice. The search pipeline recognises three
clearance modes. Physical uses 0 mm on every side and answers the narrow question "does the box
physically fit inside the cavity?" Practical is the public default and uses 5 mm on each side,
20 mm above and 10 mm behind the appliance. Manufacturer reads the brand-specific values from
public/data/clearance.json and is available for users who want to inspect the strict manual-based
interpretation.
The default is practical because many common Australian cavities are built around 600 mm nominal appliance widths. Treating the strictest manufacturer ventilation note as a hard search filter can hide products that are physically plausible candidates. A 595 mm fridge in a 600 mm cavity, for example, should not disappear before the user has a chance to see the trade-off. The default result list therefore uses the practical buffer to build a useful shortlist, then shows manufacturer guidance on each card as advisory information.
Two examples show why manufacturer guidance still matters. In the current fridge clearance data, Samsung uses 50 mm side clearance, 50 mm rear clearance and 100 mm top clearance. Haier uses 25.4 mm on the sides, rear and top. LG uses 50 mm side and rear clearance but 20 mm top clearance. Those figures are not used as the default public filter. They appear on matching product cards so a user who is worried about warranty, heat build-up or a very tight cavity can manually check the installation manual before buying.
Clearance differences exist because brands use different cabinet designs, compressor layouts, ventilation paths and installation assumptions. FitAppliance does not claim that one brand is better because it needs more or less space. The tool turns the data into a shortlist and a warning surface. The final installation decision still belongs with the buyer, installer and manufacturer documentation.
Door swing inference
Door swing is handled separately from the main search pipeline. The inference rules live in
scripts/infer-door-swing.js. Some appliance categories have simple physical behaviour. Dryers are
treated as 0 mm lateral swing in this model because the door opens forward. Dishwashers are treated as 0 mm
lateral swing because the front panel opens downward. Front-loading washing machines are also treated as 0 mm
lateral swing for the side-clearance calculation.
Fridges are more varied. The current inference rules set 0 mm lateral swing for configurations such as chest,
side-by-side, French door and bottom-mount entries where the model does not need a single wide side arc in the
same way as a top-mount or upright single-door fridge. The script also handles type code 7 as an
upright freezer case and treats very wide upright entries at 880 mm or more as physically unlikely to be a normal
single-door fridge in the source data. For upright and top-mount fridges where a swing still needs an estimate,
the second pass can infer door swing from the product width when that width is at least 400 mm.
In the product data, inferred values are marked with inferred_door_swing. That flag matters. A
measured manufacturer value and an inferred value should not be read as the same kind of evidence. The site keeps
the flag so the UI and future audits can tell which values came from rules and which values were already present
in the source document.
Doorway delivery check
The homepage includes an advanced field for the narrowest doorway width. That check is implemented in the page
script, not in search-core.js. The current logic compares the user's doorway width with the smaller
of a product's width and depth. If that delivery width is more than 50 mm beyond the supplied doorway width, the
product is excluded from the visible results. This is a conservative screening rule for the catalogue search, not
a substitute for measuring turns, stairs, packaging and installer access.
FitAppliance also has generated doorway pages that explain common doorway widths, but delivery remains site-specific. Handles, carton size, hallway turns and lift doors can all matter. The purpose of the doorway field is to stop obviously awkward options from being mixed into the same result list as products that are easier to deliver.
Dwelling type filter
The dwelling type field currently affects one public rule: dryers in apartments. In index.html,
when the selected category is dryer and the dwelling type is apartment, products marked as vented are excluded.
The page also displays a notice explaining the National Construction Code 2022 context for venting into cavities
in multi-unit dwellings. Houses and townhouses do not currently trigger extra search exclusions beyond the same
dimensional and clearance calculations.
This is deliberately narrow. FitAppliance does not try to model every apartment by-law, strata rule or laundry ventilation layout. It applies the product field it has, explains the reason, and leaves final installation suitability to the user, installer and manufacturer documentation.
Facets, sorting and saved state
After the fit pool is built, applyFacets filters it by brand, price bounds, energy stars and
availability. Facet counts are based on the dimension-matched pool, not the whole catalogue. That means a user can
see how many Bosch, LG or Miele models remain after the cavity has already been applied. Sorting is handled by
sortMatches with options for best fit, price ascending, price descending, popularity and star rating.
URL state is serialised through serializeSearchState and restored through
parseSearchParams, so searches can be shared without a user account.
Data sources and catalogue fields
The public catalogue files under public/data/ contain product dimensions, brand, model, category,
energy star rating, annual energy usage where available, door swing values, display names, readable specifications,
availability flags and retailer rows where a retailer feed has supplied a link. The current retailer row shape
uses short keys such as n for retailer name, url for the retailer URL and p
for a retailer price when present. Many retailer price fields are null, which is why FitAppliance does not present
current prices as a complete price comparison engine.
Energy star values come from Australian energy-rating source data used by the project. The site avoids wording
that would imply government endorsement of FitAppliance itself. Brand alias handling is recorded in
data/brand-canon.json. At the time this page was reviewed, that file normalised 24 brand-name
collisions and intentionally kept drop_brands empty.
What we do not calculate
- We do not calculate government rebate eligibility or payment amounts.
- We do not show current stock status.
- We do not maintain a complete current retailer price feed.
- We do not publish product reviews or assign editorial scores.
- We do not claim that a result overrides manufacturer installation instructions.
Publication and review cadence
Generated pages, sitemap output and validation reports are rebuilt by repository scripts. The project also has tests that check sitemap coverage, schema validity, copy claims, date stability and search behaviour. Scheduled workflows exist for specific maintenance tasks, but that does not mean every public field is refreshed on a fixed user-facing promise. When a field is stale, unknown or not maintained as a live feed, the site should use cautious wording.
The project source is public at https://github.com/fitappliance/fitappliance. If this methodology page and the code disagree, the code is the source to inspect first and the page should be corrected.
Limits of precision
FitAppliance works with catalogue dimensions, not a laser scan of a home. A product listed as 600 mm wide may still have handles, hinges, packaging, floor slope or installation constraints that matter on delivery day. A cavity that measures 600 mm at the front may not measure the same at the back. The tool also cannot know whether a wall is plumb, whether a skirting board intrudes into the cavity, or whether a laundry door can be removed during installation.
For that reason, the result list should be treated as a shortlist for checking, not as a final installation approval. The safest workflow is to measure the cavity in more than one place, measure the access path, check the manufacturer's manual, and then use FitAppliance to remove products that are clearly outside the space.
Last reviewed
This page was last reviewed on 26 April 2026. Material changes should be visible in the GitHub commit history.