Appearance
User Disambiguation
How VERA identifies a user when a tool needs a target person.
Resolution order
When a tool receives a user reference, VERA resolves it in this order:
- Slack mention (
user_slack_idorpm_slack_id) — always resolved via mention-matching, never name-matching - Internal ID (
user_id) — direct integer lookup - Name string (
user_name,pm_name,vendor_name,person,current_name) — exact-match or dialing menu
Mention forms (Rule A — bulletproof)
When the message contains any of the following, VERA extracts the Slack user ID directly and looks up the user without any name matching:
| Form | Example |
|---|---|
| Standard mention | <@U0ADQ6UAVKR> |
| Mention with label | <@U0ADQ6UAVKR|alice> |
| Bare Slack user ID | U0ADQ6UAVKR |
| Markdown profile link | [@alice](https://workspace.slack.com/team/U0ADQ6UAVKR) |
| Bare profile URL | https://workspace.slack.com/team/U0ADQ6UAVKR |
| At-handle | @alice (requires Slack API lookup) |
| Email mention | <mailto:alice@example.com|alice@example.com> (requires Slack API lookup) |
If the Slack user ID is extracted but that person is not registered in VERA, the error is exact: "that Slack user (UXXXXXXXX) isn't registered in VERA yet." VERA never falls back to a name search.
Name-based resolution (Rule B — exact or menu)
When a plain name is provided (e.g. user_name: "Alice"), VERA applies a two-step process:
Step 1 — Exact match (case-insensitive) If exactly one user's name matches the query, VERA proceeds without confirmation. If two users have the same name, a dialing menu is shown for both.
Step 2 — Fuzzy candidates (always a menu, never auto-pick) If no exact match is found, VERA collects candidates via:
- Substring match (query contains stored name or vice versa)
- Word-overlap match (any word in the query matches a word in a stored name)
- Levenshtein distance ≤ 2 and ≤ 30% of the longer string
Even if only one fuzzy candidate is found, VERA shows a numbered menu. It never auto-picks a near-miss.
Dialing menus
When VERA cannot auto-resolve a name, it returns a numbered list:
Multiple matches for "Al". Reply with the number:
1. Alice (owner)
2. Alan (user)Reply with the number (e.g. 1). VERA resumes the original action immediately — no re-paraphrase, no re-confirmation.
The pending action expires after 10 minutes. If you send any other message in the meantime, the pending action is discarded.
No match
If no candidates are found at all, VERA returns:
❌ Failed: no user named "Zephyr" exists. Check the spelling or add them first.
Use list users to see the current roster.