← Corpus / augment-it / issue

The Org Workbench can't create an organization — and creation must sit behind a 'be sure there is no match' gate

The workbench can only find orgs that exist. Creation must sit behind the same show-every-match gate that already governs adding a person.

Path
issues/Org-Workbench-Needs-Create-Organization-Behind-A-No-Match-Gate.md
Authors
Michael Staton
Augmented with
Claude Code on Claude Fable 5
Tags
Issue · Usability · Augment-It · Org-Workbench · Organizations · Candidate-Gate

Create an organization from the Org Workbench — behind the gate

The gap

The Org Workbench opens with OrgSearch — find an existing org, load its card. If the org isn’t in the canonical layer yet, the operator’s only paths are indirect: the CSV/record-resolution flows, or (since today) creating one as a side effect of promoting a bio link ([[Person-Bio-Pages-Are-Affiliation-Signals-Not-Just-Identity-Links]]). There is no first-class “create an organization” in the workbench itself.

The rule: try to be sure there is no match

Creation is the dangerous half of match-or-create — a casually-minted org is tomorrow’s duplicate. The gate discipline that already governs persons (AddPersonInline: candidates ALWAYS shown, create is an explicit choice past them) applies verbatim:

  1. Operator types a name (+ optional domain/URL).
  2. Candidates surface from every signal the resolver already scores — slug (100), domain via D4 domains[*].domain (90), fuzzy name (60), aliases — not just the autocomplete’s name-contains.
  3. Zero candidates still gates: an explicit “No match — create ‹name›” action, never a silent create on submit.
  4. Create seeds the thin row the existing paths seed (name → slug, client_access, and — per today’s promotion work — a domain when one was given, so the new org is domain-matchable from birth).

Existing machinery (nothing new server-side, probably)

  • resolveOrgRow(action:'create') — the create verb half, already defends against slug races and (since today) seeds domains[].
  • findCandidates — the scored candidate path (resolver.candidates); searchOrgs is the lighter autocomplete. The gate wants the scored one.
  • AddAffiliationInline — shipped today; its gate → create shape is the closest UI precedent. An OrgCreateInline (or a mode of OrgSearch’s empty-result state) is the org-first sibling.

Open questions

  • Where does it live — OrgSearch’s “no results” state growing a gated create, or a standing ➕ beside the search box, or both?
  • Does workbench-create take a domain up front (recommended — it powers the strongest match signal AND seeds the new row)?
  • Minimum viable row: name + domain + client — or also kind/notes?