QA plan — people search
Pre-reqs: an org with an owner, a coach without Sales access, a coach with an
own-scope Sales grant owning one lead, members in several statuses (active,
cancelled, pending invitation), a Hebrew-named member, archived and
unarchived leads, and a phone stored as +9725…. Name embeddings indexed
(POST /admin/ai/person-names/reindex).
Golden path (owner, in Spotter)
- New conversation, type
050-123-4567→ a person card answers at once, with no prose. Spotter’s usage footer shows no spend for the turn. The conversation is titled050-123-4567. - New conversation, type a lead’s email → the lead’s row.
- New conversation, type a first name → members & staff and leads, no prose below the card.
- “Last First” finds the person whose names live in two fields.
-
0501234567,+972 50 123 4567and a partial050-12all find the person stored as+972501234567. - A Latin spelling of a Hebrew name (and the reverse) finds them with a “Similar name” badge, listed after literal matches.
- A cancelled member shows “Cancelled”; an archived lead shows “Archived”.
- Picking a member opens their profile; picking a lead opens its sheet. The Spotter sheet closes.
- Nonsense name → “No one matches that.”
- Mid-conversation, when Spotter asks for a phone number, answering with a number continues that flow — it does not turn into a person search.
- “How much revenue this month?” still answers revenue.
Visibility
- Coach without Sales access: members & staff only, never leads — also via
“search for …” phrasings that use
search_anything. - Coach with an own-scope grant: only their assigned leads.
- No result ever comes from another org.
i18n
- Hebrew: tool label, badges and empty state are Hebrew; emails and phones stay left-to-right.
- Russian: same in Russian.