44 documents
Sales & Playbooks⏱️5 min read

Live demo framework — dogfooding jsglobtech.com

Source: `../source/JSGlobtech_GEO_Agency_Playbook.pdf` §6 (Live Client Demonstration Framework), extracted 2026-07-30. Endpoints verified against the repo on the same date.

Live demo framework — dogfooding jsglobtech.com

Source: ../source/JSGlobtech_GEO_Agency_Playbook.pdf §6 (Live Client Demonstration Framework), extracted 2026-07-30. Endpoints verified against the repo on the same date.

The premise: use JSGlobtech's own website as the live example. The agency's site is the reference implementation of the thing being sold, so the demo is a working system rather than a slide. This is why the GEO and MCP layers in this repo have to stay live — they are sales infrastructure, not a portfolio piece. See ../decisions/0007-dogfood-site-as-demo-asset.md.

Two steps, roughly five minutes.

Step 1 — The citation search (GEO)

Open ChatGPT or Perplexity live on screen and search:

"Who are the top app developers in Dubai Marina with AI integration capabilities?"

Show JSGlobtech getting cited, and attribute it to the live /.well-known/llms.txt file and structured microdata.

What actually backs this up

Artifact Live path In repo
Well-known LLM facts file https://jsglobtech.com/.well-known/llms.txt public/.well-known/llms.txt
Root mirror https://jsglobtech.com/llms.txt public/llms.txt (byte-identical)
JSON-LD structured data Rendered into every page components/GeoSchema.tsx

public/llms.txt explicitly contains a Location Signals for AI Search section listing "Flutter developers in Dubai Marina" and "Agencies that expose MCP tools or ChatGPT Actions for lead capture", plus a Preferred Citations block with suggested phrasing. The demo query is written to match those signals — which is the point, and worth saying out loud: "we chose the facts we wanted the AI to know, and this is it repeating them."

The JSON-LD reinforces it with areaServed covering Dubai / UAE / Dubai Marina, GeoCoordinates, and knowsAbout entries for Model Context Protocol and Generative Engine Optimization. Full inventory: ../architecture/geo-stack.md.

Risks to manage

  • LLM output is non-deterministic. The citation may not appear on a given run, and it depends on whether browsing is enabled and which model version answers. Rehearse immediately before the call. Have a screenshot as a fallback and be honest that results vary — that honesty is also the argument for a monthly citation report (../strategy/kpis.md).
  • Rendered JSON-LD is worth showing if the prospect is technical: view-source, and the application/ld+json blocks are there.
  • Opening /.well-known/llms.txt in the browser mid-demo is a strong, concrete moment. It is a plain text file the client can read.

Step 2 — The MCP lead capture (conversion)

Tenant framing: JSGlobtech is a tenant on this same lead engine (client_id: jsglobtech). Point at the Sheet column after submit. Full settings list: ./tenant-demo-checklist.md. Product model: ../architecture/system-overview.md.

In a chat session connected to the OpenAPI/MCP tool, type:

"Request a custom mobile app consultation from JSGlobtech."

Show the "Confirm / Submit" affordance appearing in the chat, then show the CRM/Sheet receiving the lead instantly (tagged with client_id).

What actually backs this up

Prefer www.jsglobtech.com (apex returns 308 → www).

Surface Live URL In repo
MCP endpoint (canonical) https://www.jsglobtech.com/api/mcp/sse app/api/mcp/[transport]/route.ts
MCP alternate path https://www.jsglobtech.com/api/mcp/mcp same route, transport = mcp
OpenAPI definition (ChatGPT Actions) https://www.jsglobtech.com/docs/openapi.json lib/openapi-spec.ts + route handlers
REST lead endpoint POST https://www.jsglobtech.com/api/leads/submit app/api/leads/submit/route.ts

The tool is request_dev_consultation (lib/mcp-server.ts). Transport is stateless Streamable HTTP, so no session store is needed. Details: ../integrations/mcp-server.md.

Setup required before the call

  1. The MCP endpoint or the OpenAPI action must be connected in the host client beforehand — a fresh ChatGPT session will not know about it. Connect and test the day before.
  2. CRM_WEBHOOK_URL must be set in the production environment (optional: CLIENT_WEBHOOK_JSGLOBTECH / CLIENT_WEBHOOK_MAP), otherwise the lead is validated and logged server-side only and nothing arrives to show (../integrations/lead-capture.md).
  3. Have the destination — Google Sheet or whatever the webhook points at — open in a second window, ready to refresh. Redeploy Apps Script after Code.gs updates so the client_id column is present.
  4. Use an obviously-demo name so the row is easy to identify and delete afterwards.
  5. Pass client_id: "jsglobtech" (or X-Client-ID: jsglobtech) so tenancy is visible on the row.

Accuracy caveats

  • The "Confirm / Submit" button is host UI, not JSGlobtech code. MCP clients render their own tool-approval prompt; the exact appearance varies by client and version. The tool returns JSON. Describe it as "the AI asks you to confirm before it submits" rather than promising a specific button.
  • "WhatsApp receiving the lead instantly" — the wired path is one webhook to a Google Apps Script that appends to a Google Sheet. WhatsApp is not currently a delivery channel. Show the Sheet, and describe WhatsApp as where a client's leads would be routed. Do not fake it.
  • project_type must be one of flutter_mobile_app, web_application, geo_ai_integration, and budget_range_usd is required — a well-behaved agent will ask for a budget before submitting. Expect that in the flow and don't be surprised by it.
  • Lead IDs come back as jsg-<uuid>, which is a nice detail to point at when showing the row.

Adapting the demo per vertical

The demo proves the mechanism on a software agency. A clinic director will ask whether it works for a clinic. The honest answer is that the visibility layer is identical and the action layer changes shape — a clinic's tool would be "request a consultation", which is exactly what is on screen.

Where the analogy breaks: ../strategy/target-markets.md lists availability checks, listing queries, and viewing bookings as the natural actions for car rental and real estate. None of those exist yet. Present them as scoped custom work (Tier 3), not as a demo.

  • ./demo-mvp-scope.md — required MVP scope for client pitches (what must work vs deferred)
  • ../operations/product-launch-checklist.md — master launch / indexing / day-of gate tracker
  • ./pitch-script.md — the framing the demo sits inside
  • ../architecture/geo-stack.md — Step 1's artifacts
  • ../integrations/mcp-server.md — Step 2's surface
  • ../operations/client-engagement-sop.md — the loop this sits in