BetaThe ClashFree public beta is open. Free 15-day trial, Revit 2023–2027.Get your invite →
  1. Home
  2. How the AI decides

How the AI decides

Judgement you can read, not a black box.

A clash has many fixes that clear it and usually one a senior coordinator would pick. ClashFree gets there the same way they do: list what is possible, rule out what breaks a hard limit, weigh what each change costs on that system, and only then choose. The knowledge is data you can read and tune; the AI chooses and explains; Revit checks the result.

The AI chooses

It reads both runs, the free space, the profile and the scored options, then picks one by id, or proposes its own with millimetres, degrees and a written reason. It never writes a coordinate.

Code builds

Deterministic C# turns the choice into geometry: splits, offsets, drags, reroutes, 45° or 90° fittings, reconnected joints. The same input gives the same model, every time.

Revit verifies

Inside one transaction group: the clash is gone, the clash test's clearance holds, joints are connected, nothing new clashes in the host or links. Then it rolls back and waits for you.

The pipeline

Seven steps between a clash and your Keep.

Five of them are deterministic. The AI does the two things data cannot: read what the tables do not know, and explain the choice in a coordinator's words.

  1. Core

    Context

    Both runs through their fittings, every clash on them, free space, walls, precedents, access zones, the profile and the clash test.

  2. Core

    Options

    Offsets each way at the smallest clearing and preferred distance, whole-run moves, drags, tee moves, shift and stretch and the router's best reroute per side.

  3. Core

    Hard limits

    Ceiling lines, structure, gravity falls, slab spans and links remove options. Each removed one keeps its reason.

  4. Core

    Score

    Fittings, added length, distance, zone, walls, low points and precedents, at the system class's factors.

  5. AI

    Choose and explain

    Picks by id (usually the best scored), or overrides a soft cost with a logged reason, citing the profile entries that decided it.

  6. Revit

    Verify

    Applied, checked and rolled back. A failure sends the reason back; the next option is tried, up to three.

  7. You

    Keep or revise

    Preview it, keep it as one undo step, reject it, or ask for a change in plain words.

Change the inputs

Same clash, different project. Watch the choice change.

A DN100 cold-water pipe crosses a beam. Four fixes clear it. Toggle what the model and the project profile say, and see which options survive the hard limits and which one scores best.

Why this fix

fittingsadded lengthdistance movedwallsprecedent bonus

Lower is better. Base weights: fitting 300, added length 1 per mm, distance moved 0.25 per mm, new wall crossing 5000, precedent −800 within 50 mm of the neighbours' level.

Who gives way

The cheaper change moves. Not a category list.

Coordinators know a small pipe gives way to a big duct because rerouting the duct changes airflow and may need a recalculation, while the pipe is cheap to bend. ClashFree writes that knowledge down: every run resolves to a system class with a change cost, scaled by its size.

The ruledisruption = class cost × size factor. The size factor is the run's size over 200 mm, held between 0.5 and 3. On a tie the smaller run moves, then the cheaper class, then a fixed key: the report's order never decides.
Size factor against run size: 0.5 up to 100 mm, then rising linearly to 3 at 600 mm and flat above 0123 0100200400600size, mm 200 mm = 1 DN50 = 0.5 600 mm and up = 3

Size factor = size ÷ 200 mm, clamped to 0.5…3 (ClashFree base, ADR 0024).

System class (base)Change cost at 200 mmRe-check tags
Gravity drainagesanitary, vent, stormhands offfallflag_owner
Smoke extract ductby system name3 · fit ×2.5pressure_lossrated
Kitchen exhaust duct"kitchen", "grease"3 · fit ×2.5pressure_lossgreaserated
Medical gas pipe"medical", "oxygen"3rated
Sprinkler pipefire protection2.5 · fit ×2.5hydraulic_calc
Air ductsupply, return, exhaust2 · fit ×2pressure_loss
Condensate · steamsloped lines2fall
Hydronic pipechilled, heating water1.5head_loss
Domestic water pipecold, hot1head_loss
Cable tray1 · fit ×1.5bend_radius
Conduit0.5 · fit ×0.5bends
Other systemunknown, the context says so1

Start values from general practice, shipped as start values and measured by the evaluation set. A project profile can override any member of any class, or add classes of its own (for example, promote sprinkler mains to hands off).

Score terms

What a fix costs, term by term.

Every option carries its score and the terms behind it, so "why not down?" always has an answer. Weights are the base profile's; a project or your preferences can change the soft ones. Class factors multiply the terms of the run being changed.

300 per fittingfittings

Every added elbow or transition

× 2 on an air duct, × 2.5 on sprinkler, smoke and kitchen ducts, × 1.5 on tray, × 0.5 on conduit.

1 per mmlength

Added length

A 45° offset of 300 mm adds 248 mm; the same offset at 90° adds 600 mm. A fix that shortens the run saves.

0.25 per mmmove

How far the run moves

The smallest distance that clears, at the clash test's clearance, wins over a generous one.

1 per mmleave_zone

Leaving the trade's zone

Each millimetre outside the trade's height zone on that level. Sideways inside the zone usually wins.

5000 per crossingwalls

A new wall crossing

A last resort, more on a fire-rated wall (damper or firestop). Crossings the run already makes are not new.

1000 per pointhigh_low_point

A new high or low point

On pressurised pipe it needs a vent or a drain; × 3 on kitchen exhaust (grease).

0.5 per mmverb

Moving a whole run

The length of the run carried along, so a short local fix beats moving everything.

−800 bonusprecedent

Matching the neighbours

Within 50 mm of the level at which runs of the same system and size already pass the obstacle.

28 judgement calls

What ClashFree knows before it moves a millimetre.

Each one is general practice, written as data or as a check, guarded by tests and never shaped around one model. The source says where the rule lives: the built-in base, your project profile, or the clash itself.

28 cases

AIR DUCT 800DN50 DCW0.5 moves · 6 stays
Who gives waybase

A small pipe gives way to a large duct

Both reroutes clear. Two elbows on a 50 mm water pipe cost 0.5; on an 800 mm air duct they cost 6 and need an airflow and pressure re-check.

pipe movespressure_loss avoided
CHW MAIN 300 · 2.25duct 200 · 2.0
Who gives waybase

A big main outweighs a small duct

A tier list would always move the pipe. By cost, a 300 mm chilled-water main (1.5 × 1.5 = 2.25) outweighs a 200 mm air duct (2 × 1 = 2): the duct moves.

duct moves2.0 vs 2.25
SPRINKLER DN65 · 1.25DCW · 0.5
Who gives waybase

Domestic water gives way to sprinkler

Sprinkler pipe is hydraulically calculated: its class costs 2.5 and its fittings 2.5×. Same size, the domestic pipe is the cheaper change.

domestic moveshydraulic_calc avoided
TRAY 900 · 3.0duct 250 · 2.5
Who gives waybase

A wide tray outweighs a small duct

A 900 mm tray (1 × 3) costs more to bend than a 250 mm duct (2 × 1.25): the duct moves, and its fix carries the pressure-loss note.

duct moves3.0 vs 2.5
SANITARY · 1:50tray moves up
Hard limitbase

Gravity drainage is hands off

Sanitary, vent and storm lines are never moved: no option, no override. The other run gives way, or the clash is flagged to the drainage owner.

never movedflag_owner
PLAN✕ up · ✕ downsideways only · fall kept
Hard limitbase

Condensate and steam keep their fall

A line with a fall never moves up or down: vertical offsets and drags are refused, and a reroute holds its lanes level. Sideways is the only way out.

no vertical movesideways
SMOKE EXTRACT · RATEDcost 3 · fittings ×2.5 · fire engineer
Cost and re-checksbase

Life-safety ducts move last

Found by system name, a smoke-extract duct costs 3 to change and its fittings 2.5×. Any fix on it carries the "rated: fire engineer's approval" note.

ratedpressure_loss
grease trap · NFPA 96KITCHEN EXHAUST
Cost and re-checksbase

Kitchen exhaust gets no low point

A low point collects grease. On kitchen exhaust the high/low-point term counts 3×, and a fix that adds one says so, citing NFPA 96.

greaselow point ×3
air ventdrain valve
Cost and re-checksbase

A new high point needs a vent

A pressurised pipe that goes over an obstacle traps air; one that dips under traps water. Each new point costs 1000 and the bill names the vent or drain to add.

high_low_point1000 each
Σ bends ≤ 360° between pull points
Cost and re-checksbase

Conduit counts its bends

Conduit is the cheapest to move (0.5, fittings 0.5×), but cable must still be pulled: a fix lists the bends it adds against 360° between pull points.

conduit moves firstbends
min. bend radiusfittings ×1.5 · bend_radius
Cost and re-checksbase

Cable tray keeps its bend radius

Tray fittings cost 1.5× a pipe's, and every fix that bends a tray carries the cable bend-radius check for the electrical engineer.

bend_radius×1.5 fittings
ceiling 2700 (project · hard)
Project profileproject

The ceiling line is never crossed

A ceiling height per level or room is a hard entry (limits.down_max_mm). The drop that would break it is removed before scoring, and the AI's own parameters are checked against it too.

removedhard
HVAC zonePlumbing zoneElectrical zone−1 per mm outside
Project profileproject

Each trade keeps to its zone

Height zones per trade and level are soft: every millimetre outside costs 1. That is why a sideways move inside the zone usually beats a drop out of it.

leave_zonesideways in zone
structural ✕rated: firestop
Hard limitbase

Structural walls block; others cost

A structural or shear wall is hard, like a beam. A new crossing of any other wall costs 5000 with a wall_opening note; a fire-rated one adds a damper (duct) or firestop (pipe, tray, conduit).

structural: hardwall_opening
under the beam
Hard limitbase

A beam is never the fix

No option cuts structure. When nothing else clears, the flag says beam_opening: "beam opening, structural approval" with the size needed, for a person to decide.

never cutflag with size
in the slab spanE · W · N · S
Hard limitbase

A riser stays inside its slab span

Vertical runs move east, west, north or south on the project axes, and every fix stays between the slabs: no new slab opening. A gravity stack is flagged.

no new openingriser frame
at the neighbours' level · −800
Context findingclash

The neighbours show the way

Runs of the same system and size that already pass this obstacle, in this room or the same room on other levels, are evidence and a router target. An option at their level earns −800; never a rule.

precedenttwin rooms
access zonevalves · dampers · terminals · equipment
Context findingclash

Access zones stay clear

The corridor around a run lists its neighbours and the access zones of valves, dampers, terminals and equipment. A fix that blocks one is a poor fix, and the AI is told why.

access keptcorridor
inside the wall → drag it back
Context findingclash

Dragged into a wall? Drag it back.

A run lying inside a wall along most of its length was usually dragged there. It is the first finding shown, and the drag that undoes it stretches the neighbours.

dragneighbours stretch
HOST · your ductLINK (Plumbing) · same size, paralleltwin found → duplicate_b
Context findingclash

A duplicate needs a twin

Your category in another trade's model only nominates B as a copy. With a twin in the host (same system, size, parallel, overlapping) it is flagged duplicate_b; without one, B is a real obstacle.

probable_duplicatetwin checked
needless dip away from B · low_highB is here
Cost and re-checksbase

No dips where nothing needs one

A drag that drops and climbs back away from the obstacle adds a low or high point nobody asked for. It scores low_high and reads as unfinished, so another option wins.

low_high1000
jog removed · −2 fittings
Cost and re-checksbase

A redundant jog is removed

When a drag puts the run where an old jog was taking it anyway, the jog goes: one corner elbow or the run straight on. Fewer fittings, less pressure drop.

fewer fittingsdrag
1 move · 5 cleared
Root causebase

Cost per clash cleared

Grouping is a weighted cover: the run whose change costs least per clash it clears moves first. One 150 mm main across three 100 mm pipes moves once; three small pipes across a big duct move each.

culprit coverfewest fixes
verified and kept together
Root causeclash

An area fix when one move is not enough

When moving your run cannot clear the neighbouring clashes alone, the area fix lists each with its own move. All are verified together and kept or rolled back together.

area fixall or nothing
linked · other trade · read-only→ Coordination
Hard limitbase

Other trades' runs are not yours

Linked models and other trades' elements are obstacles, never targets. When the cheaper change is theirs, the clash goes to Coordination with the reason, for the owner.

never editedCoordination
+25 mm (test)hard test · or clearance test
Verificationclash

Each clash keeps its own test

A Navisworks hard test and a clearance test are different jobs. The clash's test sets the clearance every layer sizes the fix for, and verification holds the fix to it.

criterionclearance kept
o1 · verify failed: new clasho2 · verified ✓o3 · not needed
Verificationbase

Best means up to three tries

"Best" verifies options in score order. A failure sends its reason back and the next is tried, up to three, counted as one failed fix. Then a person is asked, with a limit code.

o2 verified≤ 3 tries
targetalso clearedunchanged
Verificationclash

Judged against both runs

Every fix reports the other clashes on both runs as cleared or unchanged. Only the target and new clashes decide; an unchanged one is a warning with the reason, e.g. "the other element is the culprit there".

also clearedrun_note

Hard edges

What the AI may not do.

Some decisions are not the AI's to make. These are enforced by the validator and the executor, for the scored options and for the AI's own parameters alike.

Trust and data

  • Output coordinatesIt chooses strategies and millimetres; code builds geometry.
  • Commit to your modelOnly your Keep does that, as one undo step.
  • Edit links or other tradesThey are read-only obstacles, flagged to their owner.
  • Cut a beam or a structural wallIt can only flag a beam opening with the size needed.
  • Move gravity drainageHands off in the base; a project can add more classes.
  • Break a fall, a ceiling line or a slab spanHard profile entries remove options outright.
  • Claim engineering resultsIt names what to re-check (airflow, hydraulics, falls), never "it is fine".
  • Override silentlyIts own choice needs an override_reason, logged and shown to you.

Try it on your model

Let it judge your next clash report.

Free 15-day beta. Revit 2023–2027. Nothing is committed until you keep it.