Skip to content

Onboard a new pilot (Option A)

As of 2026-06-22 this is fully automated via the Apps Script + bridge approval flow. Used for first ~5 pilots. After ~5 pilots, switch to Option B (shared number + Diversion header).

The 6 things you need from the trade

Before submitting their row, get these answers on the call:

  1. Mobile — the phone Polly will catch missed calls from (E.164 or 07-prefixed UK)
  2. Mobile network — Vodafone / EE / O2 / Three / Sky / Tesco / GiffGaff / iD / Lebara / VOXI (informational; doesn't change MMI now we use the 5s no-answer code)
  3. Business name — exactly as Polly should say it (this is what callers hear)
  4. Callback name — the trade's first name as Polly should refer to them
  5. Email — for the welcome confirmation & quality reports
  6. Urgent keywords — anything beyond "gas leak / smell of gas / CO" that should trigger their safety carve-out (boiler-pressure-zero, water-coming-through-ceiling, locked-out, no heat in winter, etc.)

End-to-end flow (automated)

flowchart LR
  A[Katie's call → YES] --> B[Fill Sheet row]
  B --> C[🚀 YE Provision → Send for approval]
  C --> D[Matt's audit email → tap Approve]
  D --> E[Bridge auto-provisions ~60s]
  E --> F[Trade welcome SMS sent]
  F --> G[Trade taps vCard links → Polly ON]
  G --> H[Pilot live]

Step-by-step

1. Fill the Call Log row

Open the Call Log Sheet, on the active row complete the 7 provisioning columns:

Column Value
Business name Exact name (Polly will say it verbatim)
Callback name Trade's first name
Mobile UK mobile, 07… or +44 7…
Network Vodafone / EE / O2 / Three / MVNO name
Urgent keywords Comma-separated extras, blank for default
Callback email Their inbox for the trade's records
Status Leave empty — bridge writes back here

2. Send the row for approval

Click 🚀 YE Provision → Send active row to Matt for approval (Apps Script menu).

You should see a toast "Row queued — Matt has been emailed". The Status column changes to queued.

3. Matt approves

Matt receives an email at hello@yourevenings.com titled "Pilot ready for approval: " with Approve / Reject buttons.

  • Approve → bridge runs the executor:
  • Clones the Polly UK base assistant with token substitution ({{business_name}}, [business], [name])
  • Buys a UK Twilio mobile number on the reusable regulatory bundle
  • Binds the number to the cloned assistant via Vapi
  • Sends the trade their welcome SMS (two vCard contact-download links)
  • Writes live + the YE number back into the Sheet row
  • Reject → records rejected in the Sheet, no resources created.

Typical end-to-end time on approve: ~45 seconds.

4. The trade's setup (their action)

The welcome SMS reaches the trade's phone within seconds of approval. They:

  1. Tap each vCard link → scroll down → Create New Contact → Done (works on iOS & Android — see Forwarding codes for details).
  2. Open Contacts → tap "Polly ON" → green phone icon → carrier confirms "Call forwarding activated".
  3. Done — they're live.

5. Verify (do this yourself first time per pilot)

From any phone other than the trade's:

  1. Ring the trade's normal mobile.
  2. Do not pick up — let it ring out.
  3. After ~5 seconds the call diverts → Polly answers in her UK voice using the trade's business name.
  4. Play a fake job (name + postcode + callback + brief issue).
  5. Hang up. Within ~20 seconds the trade receives an SMS on their mobile from their dedicated YE number with the job details.

If steps 3-5 all work, the pilot is live.

6. Add the pilot to your radar

  • Bookmark the Pilots dashboard for this trade.
  • Set a calendar reminder for Day 6 to send the payment text — see Pricing.

7. Day 6 — payment close

See Pricing for the SMS template + Stripe flow.

When something goes wrong

Symptom Likely cause Fix
Approval email never arrives INTERNAL_REVIEW_EMAIL env or SMTP creds Check /api/provision-pilot/queue returned 200; check bridge logs
Status stuck at queued Bridge crashed mid-execute Check https://bridge.yourevenings.com/api/provision-pilot/status/<id>; rerun approve link (executor is idempotent per step)
Trade's friend gets voicemail instead of Polly They tapped Polly ON but their carrier didn't process the MMI Trade dials *#61# to check current forward target; should be their YE number. If empty, tap Polly ON again.
Polly answers but says wrong business name Token replacement failed at clone time Open the clone in Vapi dashboard, fix the system message, save (no need to re-buy the number)
No job SMS to trade after Polly hangs up Vapi webhook failed Check the Pilots dashboard → the call should appear with sms_failed flag and the error message; usually a Twilio balance or auth issue
Trade reports vCard contact won't save Very rare on modern iOS/Android Have them manually create a contact called "Polly ON" with phone field **61*<their_YE_number_in_07_form>**5#. Same for "Polly OFF" with ##002#

What changed vs the original plan (2026-06-21 → 22)

  • Provisioning is fully automated (was: Matt manually clones in Vapi dashboard + buys Twilio number by hand)
  • Forwarding is delivered via vCard contact downloads (was: trade types MMI codes from SMS)
  • A single 5-second no-answer rule is used (was: three separate codes for no-answer/unreachable/busy at default ring time, which lost to carrier voicemail)
  • End-of-call SMS-to-trade is wired (was: only Telegram to Matt, no SMS to the trade at all)
  • All operational logs persist to the bridge (was: Vapi dashboard only, 14-day retention)