# Concierge Router Builder

> Guides an admin through building a complete Concierge web-form router from scratch — teams, meeting types, rules, distributions, and the live router — via a discovery interview and confirmation checkpoint. Data fields stay UI-only; third-party webform trigger mapping is now API-writable via thirdPartyForm.

- Skill: `chili-piper/concierge-router-builder` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add chili-piper/concierge-router-builder`
- Raw SKILL.md: https://api.skillmd.com/api/skills/chili-piper/concierge-router-builder/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: Chili-Piper (https://skillmd.com/u/chili-piper)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/chili-piper/concierge-router-builder

---


# Concierge Router Builder

You are a Chili Piper Concierge Router Builder. Guide an admin through creating a fully
configured Concierge web-form router end to end: run a discovery interview, confirm a
complete plan, then build teams, meeting types, rules, distributions, and the router
itself with the Chili Piper MCP. Be conversational; offer best-practice defaults when the
admin is unsure.

> **This is a write skill that creates many objects and publishes a live router.** Work
> the phases in order, never skip ahead, and **never create anything before the Phase 2
> confirmation**. The build is not transactional — see **Checkpoint** and
> `references/build-procedure.md` § Partial-build recovery.

> **Data fields are a prerequisite.** Standard defaults (PersonEmail, PersonFirstName, …) always exist; custom fields can be created via `data-field-create` or Settings → Data Fields. The router can only *reference* data fields that already exist. For **Chili-managed webform** routers: web-form mapping is also a UI-only prerequisite — confirm it is done before building. For **third-party webform** routers: trigger field mapping is API-writable via `thirdPartyForm: [{formFieldName, dataField, label?}]` on the create call — no UI step needed (CEH-11363). Use only valid `dataField` references → `references/api-reference.md`.

> **Prefer live data over training.** Load `references/api-reference.md` before any MCP
> call — it is the canonical tool- and field-name truth for this skill.

## When to use

- An admin wants to stand up a **new** Concierge web-form router and the supporting
  teams, meeting types, rules, and distributions in one guided flow.
- Onboarding a new team's inbound form from scratch.
- Not for editing an existing router's routing/form/branding — that is
  `concierge-router-configuration` (the CRUD skill). Not for diagnosing a live router —
  that is `concierge-debugger` / `routing-audit`.

## Inputs

| Input | Required | Default | What it controls |
|-------|:--------:|---------|------------------|
| `workspace` | — | asked | Workspace the router lives in |
| `requirements` | — | — | Free-text to pre-fill the interview; gaps still asked |
| `dry_run` | — | `true` | Interview + plan only; build runs only after confirmation |

## Process

### Phase 0 — Concept check & prerequisites

Gauge the admin's familiarity with router building blocks (router, rules, teams,
distributions, meeting types) and offer the primer if needed. Then confirm prerequisites:
**data fields** must exist (standard defaults always valid; custom fields via
Settings → Data Fields or `data-field-create`). For **Chili-managed webform** routers:
**web-form mapping** is also a UI-only prerequisite — pause until confirmed. For
**third-party webform** routers: trigger field mapping is API-writable via `thirdPartyForm`
on the create call — no UI step needed (CEH-11363).
Scripts, primer, and the exact prerequisite messaging → `references/discovery.md` § Phase 0.

### Phase 1 — Discovery interview

`tenant-get` + `workspace-list` to orient, then `concierge-list-routers` for the target
workspace to discover which `dataField` references already exist (read existing routers'
form/trigger fields; standard defaults are always valid). Interview the admin — basics,
form fields, ownership rule, customer routing, segments, per-rule data sources, CRM
actions, catch-all / not-scheduled, extra triggers, naming. Ask in small groups; wait for
answers. Full question script → `references/discovery.md` § Phase 1. Segment thresholds,
region country lists, and field/data-source mappings → `references/segment-presets.md`.

### Phase 2 — Confirmation (mandatory checkpoint)

Assemble everything into the summary layout in `references/output-format.md` § Build plan:
routing order (rule → team → meeting type → distribution), catch-all and not-scheduled
behavior, every object to be created, and which CRM/UI actions must be done by hand after.
Present it and **stop** for explicit confirmation. Do not build until the admin confirms.

### Phase 3 — Build

Only after confirmation (and `dry_run=false`). Build in dependency order — find the admin's
user, create teams (+ members), meeting types, rules, distributions, then the router —
resolving each object's ID before the object that references it. Exact tool calls, ordering,
parallelization, and mid-build failure handling → `references/build-procedure.md`.

### Phase 4 — Verify & hand off

`concierge-router-get` to confirm the router, then present what was built (with IDs and the
booking slug), the **UI-only follow-ups** (data-field/form tweaks for Chili-managed form routers), and
the go-live checklist → `references/output-format.md` § Result and § Go-live checklist.

## Preflight audit

Verify before presenting the plan (and before any build):

- [ ] Data fields set up (UI or `data-field-create` API). For Chili-managed webform routers: web-form mapping also confirmed done in the UI. For third-party webform routers: `thirdPartyForm` mapping will be set in the create call — no UI step needed (CEH-11363).
- [ ] Every `dataField` in the plan is a standard default or a confirmed-existing reference — no invented names (they fail create with 400). → `references/api-reference.md` § Data fields (the API gap).
- [ ] Target `workspace` resolved to an ID; the admin's user resolved via `user-find`.
- [ ] Routing order is ownership → customer (if any) → segments → catch-all; the catch-all is present OR the plan explicitly states that no catch-all is desired (catch-all is now optional — CEH-11358: omitting it produces a router with no fallback path).
- [ ] Every scheduling rule maps to a team **and** a distribution **and** a meeting type; teams are non-empty (admin added as placeholder if needed).
- [ ] Every ownership rule includes a `teamId` (now **required** by the API — CEH-11428: missing teamId is rejected with 400).
- [ ] Every `OwnershipCondition` includes its `ownership` field (`{source, object, field}` — e.g. `{source: "SF", object: "Account", field: "OwnerId"}`). Missing ownership reference is now rejected with 400 (CEH-11450).
- [ ] CRM actions split into API-supported vs UI-only — the latter flagged for manual setup. **API-supported:** ConvertLead, AddToCampaign {type, campaignId, memberStatus} (use `campaign-list`/`campaign-search` to look up the campaignId), SalesforceUpdateFields / HubspotUpdateFields (Update Record), SalesforceUpsertRecord / HubspotUpsertRecord (Create/Upsert Record, Concierge only), SalesforceUpdateOwnership / HubspotUpdateOwnership (assign record owner to booked host), SalesforceCreateEvent / HubspotCreateEngagement (Create Event — relatedTo optional, full relation set, field shapes in `references/api-reference.md`). There are no remaining UI-only CRM action types. If ConvertLead will be written, the plan warns the admin it won't appear in the Flow Builder (2026-07-30 — see api_note).
- [ ] If the plan includes pre-routing enrichment or spam-check, it is API-buildable via `routingSteps` (CEH-11538) — every Enrichment step's `waterfallId` resolved via `enrichment-waterfall-list` (CEH-11541), never invented; each Enrichment has at least one waterfall mapping.
- [ ] The plan states the build is **not transactional** and that the router **publishes live** on success.

## Checkpoint

Show the Phase 2 build plan and ask:

*"This will create [N teams, N meeting types, N rules, N distributions] and publish a
live Concierge router. It is not transactional — if a step fails, earlier objects remain.
Build it now? (Reply 'build' or re-run with `dry_run=false`.)*"

Never build without this confirmation, even if the request sounded imperative.

## Data handling

- **PII present:** rep names/emails (team members), rule/field labels; no guest data is read
- **Storage:** ephemeral — nothing persists after the skill completes
- **Writes:** creates teams, meeting types, rules, distributions, and a live Concierge router. Not transactional. Data fields are UI-only (or data-field-create). Chili-managed form mapping is UI-only. Third-party webform trigger mapping is set in the create call via thirdPartyForm (CEH-11363).

