Every loadable family can carry other families inside it — nested, sometimes shared, sometimes never placed, invisible until you open the family itself. Nest lists every loadable family in the model with an honest usage verdict, opens any of them to reveal what nests inside — to any depth — shows how host parameters drive the nested ones, and totals what Revit's own Purge Unused confirms is dead weight.
Opening the family is the only way to see them — Revit's browser and schedules simply cannot.
Nest is read-only until the one write you explicitly ask for. It works on a project or on the open family, and its usage verdicts lean on Revit's own purge engine — never a guess.
The opening scan is one read-only pass: every loadable family — annotation families included — with one of four verdicts: In use, Referenced, not placed, Unused — or the honest fourth, Can’t tell, when the evidence cannot settle it. Unused is only ever asserted when Revit's own Purge Unused engine agrees, because a family kept alive by a family-type parameter is not junk — and calling it junk once is how a tool loses its word.
Revit's tags do not derive from FamilyInstance, so a count that walks only family instances reports zero placed for every tag family in the model — and a purge list built on that count would delete the annotation families the drawings are made of. Nest therefore runs four more collectors after the instance pass, one for each tag class Revit models separately: IndependentTag, RoomTag, AreaTag and SpaceTag. The wording it then uses admits what it did: the evidence behind an In use verdict reads “412 placed instances / tags in the project”, never “instances” alone. The four families below are the ones an instance-only count would have condemned.
Expand a family and Nest opens it with EditFamily — the only API that sees nested-but-unplaced families — and reads its whole subtree in one pass, to any depth, opening each shared family once. Every node carries its badges: Shared or not, how many times it is placed in its parent, and the association ratio — 2/5 linked — that says how much of it the host actually drives. The opened documents close without saving.
Opening a family with EditFamily is not a purge query, so no node below a root is ever stamped Unused, however empty it looks. A nested family with no instance placed gets Referenced, not placed the moment Nest finds a host family-type parameter pointing at it — and it finds them by reading every type in the host's type table, not the current one, because those parameters are per-type and a family kept alive by a type nobody has selected today is still mandatory. Where no reference turns up, the verdict stops at Can’t tell and says why: “no placed instance and no host-parameter reference seen here — can't confirm it is unused (a reference may live in geometry or a family we did not open)”. Only the roots, which go through Revit's own Purge Unused, are allowed the harder word.
Select a nested family and the detail card spells its wiring out: which of its parameters the host drives — TYPE driven by host “Handle Style” → Lever-01 — and which host parameters feed the nested ones. The denominator is honest: only parameters Revit could actually associate are counted, so “2 of 5 linkable” means exactly that. And on a project root family, one link selects every placed instance in the model.
The opt-in sweep opens every loadable family with a cancellable progress dialog, measures each one's real bytes, and persists the structure baseline per project — so the next session, and Lens, already know the tree without opening anything. Cancel mid-sweep and the partial result is kept and said out loud: Analyse cancelled — 61 of 128 families opened.
The cleanup card totals the truly-unused set — 12 families never used · 4.2 MB once sizes are measured — and Copy unused list puts the names on the clipboard under a header that states its ground truth: “Unused loadable families (safe to purge — confirmed by Revit's Purge Unused):”. Nest never deletes anything; the purge stays your gesture, in Revit, with the evidence in hand.
The one thing Nest writes: each placed shared nested instance's direct host, into a text instance parameter you choose — as Family or Family : Type, with the host's id in brackets. Only shared nesting exists as instances that can carry a value, and the card says so before you ask. The preview counts every cell first — Will write 34 value(s) into “Host Family” · 6 already correct · 2 read-only — then one transaction, “BIMIO Misc — Nest”, writes them; a rollback reports that nothing was written.
Nest floats, so you keep working in Revit while it is open — and the moment you activate a view in another model it notices, before you touch anything. Analyse all, Write and Copy unused list go grey, and the header becomes a plain admission: element ids do not carry across models, so the tree, the counts and the Copy-unused list still describe the scanned model, not this one. That last one is the reason for all of it — the export is headed “safe to purge — confirmed by Revit's Purge Unused”, and that claim must never be made about a model no longer in front of you. The pause is reversible: switch back and the status line reads “Back on the scanned model — Nest resumed.” Re-run Nest from the ribbon on the other model instead, and it closes the paused window and scans the one you are actually in.
Nest registers its inspector with the suite at startup, so selecting a family instance in Lens gets the dossier without opening Nest: the structure from the persisted baseline, the usage recomputed live for that selection. And during the deep sweep Mold grades each family Nest opens — Clean, Minor or Needs work — and the grade goes into the baseline, so Lens can put it on one combined line: “nested 3 levels · Mold grade: Minor · Bloat: 42.3 MB”. Nest's own tree never shows it. When an app is absent, its clause simply drops.
Nest sits on the Family Editor panel of the BIMIO tab, beside Mold — and works on projects too. Scan, expand, and clean up with Revit's own evidence. Revit 2024–2027, full trial, no card.