Website Assistant by Spanfold

A website assistant that answers from your own documents with sources, flags uncertainty, and books appointments.

  • Shows its source. Every clinic fact links to the clause and page it came from, and a quote check withholds any answer that doesn't match.
  • Does the job, not just the talking. It finds free times, books the slot, sends the confirmation, and hands over to a person when asked.
  • Says when it doesn't know. No medical advice, no invented prices: it says what the documents don't cover and takes your details instead.

Any website — here, a fictional clinic

How it scored

20/20

Held-out test, correct or honestly refused
19 answered exactly as expected, 1 declined rather than guess. These 20 were never used for tuning. Target: 90%.

59/60

All typed test phrases
58 exact, 1 honest refusals, typos included. 40 of them were used for tuning, so only the held-out figure is unbiased.

24/30

Harder document questions
80% passed (multi doc 9/15, single doc 6/6, refuse capture 6/6, injection 3/3). Questions that need several documents at once are the weak spot.

See every miss (8)
  • can you treat my 10 year old daughter (got refusal (medical_advice), held out)
  • can i get a student discount (got answer; missing ['10 percent'])
  • Can a physio come to my home 12 miles away, and what would it cost? (kind=refusal docs=[] missing_docs=['HP-FIN-001', 'HP-OPS-005'] missing_text=['10 miles'])
  • Is acupuncture available at Elm Park, and will Northgate Health bill directly for it? (kind=answer docs=['HP-FIN-002'] missing_docs=['HP-FIN-001'] missing_text=['Quayside'])
  • I'm a student with a Meridian Cover policy. Do I get the student discount on a sports massage at Quayside? (kind=answer docs=['HP-FIN-001', 'HP-FIN-002'] missing_docs=[] missing_text=['billed to an insurer'])
  • I'd like to see Callum Ridley at Quayside on a Saturday. What time can I come, and how much is a follow-up? (kind=answer docs=['HP-CLN-004', 'HP-OPS-005'] missing_docs=['HP-FIN-001'] missing_text=['£58'])
  • Do you share my treatment notes with my insurer, and how much does a letter cost? (kind=answer docs=['HP-FIN-001', 'HP-FIN-002'] missing_docs=['HP-GOV-006'] missing_text=[])
  • Can a physio visit me at home if I'm with Allbright Mutual, and is the visit billed to them? (kind=refusal docs=[] missing_docs=['HP-CLN-004', 'HP-FIN-002'] missing_text=['paid by the patient'])

Full results: test phrases · document questions (JSON).

Synthetic clinic, small samples, run on 2026-10-27: not a general accuracy figure. Model spend for both runs: $0.0359.

What it's connected to

  • Your documents PDFs and Word files, cited by clause and page on
  • Calendar invites real free slots and invites checking…
  • Email transcripts and confirmations checking…
  • Postcode and journey time nearer clinic, home-visit band on, free public services
  • Test deposit £20 in payment test mode checking…
  • Voice talk and listen, in the browser where the browser supports it
  • Your CRM signed webhooks for each lead, booking and handover on

“Needs setup” features fall back quietly: a calendar file instead of an invite, an email preview instead of a sent email.

Known limits

  • The clinic, its staff and its documents are fictional. Real postcodes outside its made-up town give long journey times.
  • Questions that need three or more documents at once miss most often; when unsure it declines rather than guesses.
  • Journey times come from free OpenStreetMap routing; if that's down you get a labelled straight-line estimate.
  • Voice depends on the browser: the buttons hide where speech isn't available.
  • Chats, bookings and leads are wiped every 24 hours. Nothing is sent to a patient without a person approving it.

Runs on a low-cost hosted model. The model is configurable to your policy: hosted, or on your own servers.

Take it further

See the other side: the staff inbox with live handovers, the webhook log and the insights page. The read-only demo login is shown on the sign-in screen.