SPEC-016 · How to use

Teach Maya — operator guide

Change how Maya sounds, not how she books. Coach a draft, preview a traveler turn, then publish. Live WhatsApp and web chat pick up the new voice without a Git PR.

This walkthrough is for the native Mac app (Apple Intelligence on this Mac). Android operators can install Teach Maya from Google Play, use the signed Mac DMG (Sparkle updates after first install), or the web studio (Mac Mini AI).

  1. Coach prompt
  2. Apple Intelligence on this Mac, or Mac Mini AI
  3. Check the draft
  4. Publish → eval gate
  5. Live Maya hot-reloads

1. Open the studio

Get Teach Maya (Play & Mac)

On Android, install from Google Play. On a Mac with Apple Intelligence, install the signed app from the download page, or build from source:

cd ~/src/maya-travel-ai/maya-nl-studio
./scripts/run-macos.sh

Or open build/macos/Teach Maya.app. In Xcode, destination My Mac — not an iPhone. Designed for iPhone on a Mac does not get Foundation Models.

Operators without a Mac can stay on this site: maya.suherman.net/teach.

Teach Maya macOS studio with live pack loaded, coach prompt, and preview fields
Native Teach Maya on macOS. Left: live pack and voice. Right: coach and on-device preview.
Same studio with numbered callouts on each control
Studio map — numbers match the table below.
#ControlWhat it is
1–2StatusGreen means Apple Intelligence is on this Mac. Grey means Mac Mini AI will coach and preview.
3Live pack chipVersion WhatsApp is using right now.
4Operator tokenRequired only if the API has MAYA_OPERATOR_TOKEN.
5Publish / RollbackPromote the draft, or restore the previous live version.
6–7CoachDescribe the voice you want, then rewrite the pack.
8Preview MayaSandbox reply. Never books.

2. Connect to the API

Apple Intelligence available, live pack 2026-09-13.0, API base field
Wait for a live pack chip and a Loaded … footer before coaching.
  1. Confirm the notice is green. If not: System Settings → Apple Intelligence, wait for the model, then Reload pack.
  2. Set API base to http://127.0.0.1:8787 (local Debug) or https://maya.suherman.net (production).
  3. Paste the operator token if your environment requires it.
  4. Wait for Live pack …. Coach, preview, and publish stay disabled until the pack loads.

3. Read the live voice

The left column is a draft. Until you publish, WhatsApp still uses the live pack.

Persona voice and CTA fields showing the live Indonesian-first Maya voice
Persona voice and CTA — edit by hand or let coach rewrite them.
FieldMeaning
Persona voiceWarmth, language mix, length.
CTAHow every reply should end — one refine CTA or Ya, book, not a stack of questions.

4. Coach: ask for a voice change

Coach prompt filled with a warmer-voice instruction and Rewrite with Apple Intelligence button
One clear instruction, then Rewrite with Apple Intelligence.

Footer apple-foundation means on-device. mlx is Mac Mini. The rewrite is still a draft until you publish.

Prompts that work

You typeWhat should change
Make Maya a bit warmer and more conversational, still concise, Indonesian first.Voice warmer; still short; still ID-first.
Pakai “kamu”, jangan kaku. Tetap jangan sebut harga kalau belum ada di facts.Friendlier address; never invent prices.
Shorten the CTA to one line: refine cheaper/direct, or **Ya, book**.CTA only.

Prompts to avoid

You typeWhy it is a bad idea
Always quote a typical Jakarta–Singapore fare.Invents prices. Do not publish.
If they say book, just book — skip confirmation.Book / pay / cancel stay CONFIRM. Publish fails eval.
Call the traveler Joanna.Invented name.
Paste this real WhatsApp thread…No traveler PII in packs. Use synthetic examples.

5. Preview: pretend you are the traveler

On-device Maya preview with traveler message Cari tiket ke Bangkok tanggal 5 Oktober
Default eval line — Bangkok on 5 October. Preview never creates a booking.

Click Preview Maya. Check Preview: apple-foundation or mlx.

Worked example — Bangkok search

Traveler: Cari tiket ke Bangkok tanggal 5 Oktober

Good Maya

Oke, aku bantu ya. Tujuan Bangkok, berangkat 5 Oktober. Aku cari yang sesuai policy dulu, lalu kasih rekomendasi singkat. Kalau sudah ada opsi, kamu bisa minta yang lebih murah/direct, atau Ya, book kalau tawaran sudah jelas.

Bad Maya — do not publish

Siap Joanna! Meeting bisnismu di Bangkok minggu depan, cuaca 26°C, tiket sekitar 3 jutaan ya.

Invented name, purpose, weather, and price.
Also tryYou should see
Maya, gue minggu depan ada meeting 3 hari di Singapore.Indonesian; destination Singapore; no fake flight number.
Book Surabaya ke Denpasar tanggal 12New route (intake), not confirm-booking.
ya, bookCONFIRM restatement only if a pending offer exists.

If the preview invents a price, name, or flight, do not publish. Tighten the voice, coach again, or Reload pack.

6. Publish or roll back

  1. Click Publish live (web: same action on this studio).
  2. Footer should read Live Maya now … and the live pack chip updates.
  3. Send a new WhatsApp or workspace message. Do not reuse an old turn.

Rollback restores the previous live version. Use it if Maya got too chatty or drifted into invented facts.

Publish runs an eval gate. A 409 means the pack broke a locked rule — live Maya is unchanged.

Locked rules

  • Never invent prices, flight numbers, hotel names, visa rules, policy outcomes, or ticket status.
  • Inventory / policy / visa claims must come from facts or tools in that turn.
  • Book / pay / cancel / reschedule stay CONFIRM (never AUTO).
  • Preview must not call book/pay tools.
  • No traveler PII in the pack.

Apple Intelligence vs Mac Mini

Apple IntelligenceMac Mini AI
WhenGreen status on native Mac / iPhone / iPadGrey status, or this web studio
Coach + previewOn-device Foundation Models/api/capability-packs/coach and /preview
PublishAlways the backend eval gate

Troubleshooting

What you seeWhat to do
Grey Apple Intelligence noticeEnable it in System Settings; use My Mac, not an iPhone destination.
API 404 / could not connectWrong API base, or the pack API is not on that host. Debug default is http://127.0.0.1:8787.
Coach / Preview / Publish disabledPack not loaded — fix the API, then Reload pack.
Preview looks great, WhatsApp does notYou did not publish, or you are looking at an old turn.

Native app source: maya-nl-studio. Same guide in the repo: docs/user-guide.md.