Free agents + LAUNCH30: 30% off paid agents until 31 Dec 2026 (one-time purchases only) See free agents
Oarsman AI Sign in

AI Front Desk: AI Phone Receptionist Kit / Docs

AI Front Desk: AI Phone Receptionist Kit: changelog

1.0.7 (2026-11-01)

  • New: a step-by-step setup page (setup-page/index.html, static, works from the download or the product page). It runs in five numbered steps with copy buttons:
  • Your business details, with opening hours and a secret generated in the browser.
  • The Google Sheet link.
  • Fill my workflows, which fills the Config node in all five workflow files at once, in the browser.
  • Test it.
  • The voice agent: a ready vapi/config.json and the free "Talk to Assistant" test call.
  • Test it sends Vapi-shaped test calls from your browser straight to your own n8n, with the secret in a header. It checks:
  • the connection, secret, sheet and hours;
  • that an unknown FAQ question is refused and logged;
  • a booking, then cancelling it from the same number;
  • the call log and the missed-call alert. Each failure gets a plain fix. Test rows are marked "Setup Test". The page has no analytics or storage and makes no calls to Oarsman.
  • Docs: TROUBLESHOOTING.md starts with the top 5 setup problems, matched to what Test it reports. README and SETUP-GUIDE point to the setup page. VIDEO-SCRIPT.md adds a 90-second setup-page walkthrough and a 12-second GIF script.
  • Tests: 8 setup-page unit tests (tests/setup-page/core.test.mjs). 4 browser tests (tests/setup-page/run_page_test.sh) that run the page in Chrome, desktop and iPhone size, against real n8n with the shipped workflows 01 and 02. They check the sheet rows, the alert, the plain error messages, the filled workflow files, and that no request goes anywhere except the page and your n8n. tests/gate_tests.sh runs both.
  • No workflow, script or sheet changes: nothing to re-import if you are already set up.

1.0.6 (2026-11-01)

  • Metadata only (2026-11-01, no version change): listing.json gains access_mode "Download + 3-step setup" and ttfv_minutes 90 for the product bar. Files unchanged.
  • Tests: the unit tests no longer look for luxon in a factory-only folder. tests/unit/package.json now lists it, so cd tests/unit && npm install && node --test works anywhere (or set N8N_MODULES to an n8n node_modules folder). Without luxon, the engine tests are skipped with a message saying how to install it, instead of crashing with MODULE_NOT_FOUND.
  • No workflow, script or docs changes for setup; there is nothing to re-import.
  • Re-tested: 38/38 unit tests (with luxon), 4 pass + 2 skipped with the install message (without luxon), 10/10 setup-script tests.

1.0.5 (2026-11-01)

  • Workflows: one overview note and one section note per workflow, and a named no-op on two IF branches that ended nowhere (Other event: nothing to log; Calendar off: skip run). No logic changes; re-importing is optional.
  • Docs: What you need, Quick setup, AI disclosure and limits, TROUBLESHOOTING.md with FAQ, SPEC.md, SUPPORT.md.
  • Removed the paid done-for-you install and the separately sold agency licence. The licence now allows one install per client business. Support is the docs plus versioned updates.
  • Re-tested on n8n 2.45.6: 38/38 unit, 38/38 end-to-end, 10/10 setup.

1.0.4 (2026-10-30)

  • Docs: SETUP-GUIDE.pdf is a print-ready PDF of the setup guide (4 pages, A4) for offline setup and client handover. The workflows, scripts and tests are unchanged from 1.0.3, so there is nothing to re-import.

1.0.3 (2026-10-27)

Two bugs found in a live test on n8n Cloud 2.44.7 with a real Google Sheet, Google Calendar and Vapi. - Fix (workflow 04, Calendar Mirror): with calendar_id = primary (the default), Create event failed with "Calendar parameter's value is invalid. This is likely because the URL entered is incorrect". Cause: the Calendar field used the resource-locator mode By ID. In n8n's Google Calendar node, that mode only accepts email-style calendar IDs (it runs an email regex on the value after the expression is filled in), so primary was rejected before Google was ever called. The Calendar field now uses mode From list with the same expression. That mode passes the value through unchanged, so primary and full IDs (<you>@gmail.com, …@group.calendar.google.com) both work. - If you imported 1.0.2 or earlier, re-import workflow 04. To fix it by hand instead, open Create event and Delete event, and in the Calendar field switch the mode dropdown from "By ID" to "From list". Keep the expression {{ $('Config').first().json.calendar_id }}. - Fix (workflow 04): a Google Calendar failure is no longer silent. Before, the node's "continue on error" made the run look successful while nothing was saved. Now, when Google refuses a create or delete: - The booking row gets a new calendar_sync_error column with the reason. It clears itself after the next successful sync. - You get a Slack and email alert. A repeat of the same error every 5 minutes is not re-alerted; a new error is. - A delete for an event that is already gone (404/410) counts as done. - Fix (workflow 02, Call Events): a call where only the greeting played and the caller hung up without speaking was logged as outcome transferred, with outcomes transferred,escalated. Cause: outcomes were found by searching the whole message list for result codes. A real Vapi end-of-call report includes the system prompt in that list, and the prompt mentions TRANSFER_OK and NO_HUMAN. Outcomes now come only from actual tool results (tool_call_result / tool messages, including JSON-wrapped results). The ended reason also counts as a transfer only for a forwarded call, not a failed transfer. A call where the caller never spoke is now logged as outcome no_conversation, summary "Hang-up: the caller did not speak", with no callback alert. - Re-import workflow 02. It has no node parameter changes; the fix is in the Code nodes' shared library. - Sheet template: new Appointments column calendar_sync_error. On an existing sheet you don't have to add it; n8n adds the column the first time it writes an error. - Simulator: simulate_call.py end hangup sends a greeting-only hang-up. Every Vapi end-of-call payload now includes a system message, like the real ones. - Tests: - 8 new unit tests: greeting-only hang-up, including one with the shipped prompt; only tool results drive outcomes; calendar success, failure and alert dedupe; calendar delete 404/410; and a check of the Calendar field against n8n's own validation rule. If n8n is installed, that last check also runs n8n's real extractValue code on the real Google Calendar node, and confirms the 1.0.2 setting throws the exact live error. - 1 new live-webhook check (21b). - 5 new scheduled checks (31–35): calendar outage logged and alerted, no repeat alert, recovery. - tests/e2e/e2e.py now finds the simulator in the kit layout (scripts/) as well as the repo layout. Before this, the end-to-end suite only ran from the repo.

1.0.2 (2026-10-27)

  • Fix: every Google Sheets write (append and append-or-update: 8 nodes across workflows 01, 02 and 04) now sets Cell Format = "Let n8n format" (RAW). Before this, n8n's default for the Google Sheets node ("Let Google Sheets format", USER_ENTERED) parsed values as if typed into the sheet: a caller message starting with = became a live formula, and phone numbers like +15550001234 became plain numbers that lost the +. With RAW, Google stores every value as-is, as literal text. No apostrophe is added, so values look exactly as the caller said them.
  • If you imported 1.0.1, re-import workflows 01, 02 and 04. To fix it by hand instead, open each Google Sheets node that appends or updates rows and set Options > Cell Format > Let n8n format.
  • Tests: a new static unit test checks that every Sheets write node in every workflow file uses RAW. A new live-webhook check (10b) sends a message starting with = from a +1555… number and confirms both are stored as literal text. A new batch check (30) confirms every Sheets write in the whole run used RAW. The test mock now behaves like Google's USER_ENTERED parsing whenever RAW is missing, so a regression fails the suite.

1.0.1 (2026-10-27)

  • Fix: FAQ matching now also reads the answer text, so "Do you take Apple Pay?" finds an answer that mentions Apple Pay even when the question and keywords columns don't. Words found only in the answer count half. An answer-only match needs 2+ answer words and a higher score, so one shared word ("building", "street") never pulls in an unrelated answer.
  • Sheet template: a new payment-methods FAQ row with payment keywords (card, credit, debit, Visa, Mastercard, Amex, cash, Apple Pay, Google Pay, contactless, tap, UPI). Edit the answer so it matches what you actually accept.
  • Tests: 3 new unit tests (answer-text matching, over-match guards, template payment questions) and 1 new live-webhook check (09b). The daily-report count check (24) now computes its expected count from the report window, so it no longer depends on the time of day the suite runs.

1.0.0 (2026-10-26)

  • First release.
  • 5 n8n workflows.
  • Vapi setup script and templates.
  • Retell custom functions.
  • Sheet template and call simulator.
  • Test suites: unit 25, end-to-end on real n8n 29, setup script 10.