44 documents
System Architecture⏱️3 min read

System overview — what this product is

Written 2026-07-31 for client demos. Engineering detail lives in sibling files; this is the mental model.

System overview — what this product is

Written 2026-07-31 for client demos. Engineering detail lives in sibling files; this is the mental model.

One sentence

jsglobtech.com is a live multi-tenant GEO + AI-agent lead generation platform, and JSGlobtech itself is the first tenant (client_id: jsglobtech / fallback default).

That is the sales story: you are not pitching a slide deck — you are showing a working system that already captures leads from AI agents into a CRM/Sheet for a real business.

Two layers (sell both)

┌─────────────────────────────────────────────────────────────┐
│  Layer 1 — GEO (visibility)                                 │
│  Make AI engines *cite and recommend* the business          │
│  Artifacts: /.well-known/llms.txt, /llms.txt, JSON-LD       │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│  Layer 2 — Agentic action (conversion)                      │
│  Make AI agents *act*: capture a lead inside the chat       │
│  Surfaces: MCP tool + OpenAPI/ChatGPT Action → webhook/CRM  │
└─────────────────────────────────────────────────────────────┘
Layer What the buyer hears What is actually live
GEO "ChatGPT recommends you" public/.well-known/llms.txt, public/llms.txt, components/GeoSchema.tsx
Action "Digital receptionist in the chat" MCP request_dev_consultation + POST /api/leads/submit → tenant webhook → Google Sheet

Multi-tenant model

One codebase / one deployment serves many clients by routing leads with client_id:

AI agent (ChatGPT / Claude / Cursor / custom MCP host)
        │
        ▼
  MCP  /api/mcp/sse   OR   REST  POST /api/leads/submit
        │                     (optional X-Client-ID / X-API-Key)
        ▼
  lib/leads.ts  submitConsultationLead()
        │
        ├─ validate (Zod)
        ├─ lead_id = jsg-<uuid>
        ├─ resolve webhook from client_id:
        │     1. CLIENT_WEBHOOK_MAP JSON
        │     2. CLIENT_WEBHOOK_<CLIENT_ID>
        │     3. CRM_WEBHOOK_URL (default tenant)
        ▼
  Tenant CRM / Google Sheet row (client_id column visible)
Tenant How it is identified today Destination
JSGlobtech (dogfood) client_id: "jsglobtech" or omit → "default" Production CRM_WEBHOOK_URL (or CLIENT_WEBHOOK_JSGLOBTECH)
Future client A client_id: "clinic_a" (example) CLIENT_WEBHOOK_CLINIC_A or map entry → their Sheet/CRM

ADR: ../decisions/0008-multi-tenant-lead-routing-and-rate-limiting.md.

End-to-end happy path (what you show clients)

  1. Discovery — Prospect (or you) asks ChatGPT/Perplexity a Dubai Marina / Flutter / MCP query → JSGlobtech is cited from llms.txt / schema.
  2. Action — In a session where the MCP endpoint or OpenAPI Action is connected, user says: "Request a custom mobile app consultation from JSGlobtech."
  3. Confirm — Host UI asks the user to approve the tool call (host-owned UI, not our button).
  4. Capture — Tool posts validated fields; API returns { ok, lead_id, client_id, … }.
  5. Delivery — Row appears in the tenant Sheet within seconds (lead_id like jsg-…, client_id like jsglobtech, source mcp or openapi).

Full rehearsal script: ../sales/demo-framework.md. Tenant-specific checklist: ../sales/tenant-demo-checklist.md.

What this repo is not (yet)

Do not sell these as shipped:

  • Calendar booking / reservations
  • Native WhatsApp delivery (webhook can be pointed at a WhatsApp relay later)
  • Per-tenant hosted MCP servers (today: one shared MCP with client_id routing)
  • Real API-key auth (headers named X-API-Key currently act as client_id — see security audit)

Canonical live URLs

Prefer https://www.jsglobtech.com — apex jsglobtech.com returns 308 to www.

Purpose URL
Site https://www.jsglobtech.com
LLM facts https://www.jsglobtech.com/.well-known/llms.txt
MCP (canonical) https://www.jsglobtech.com/api/mcp/sse
OpenAPI https://www.jsglobtech.com/docs/openapi.json
REST lead POST https://www.jsglobtech.com/api/leads/submit
  • ./README.md — stack and folder layout
  • ../integrations/mcp-server.md / ../integrations/lead-capture.md
  • ../sales/demo-framework.md / ../sales/tenant-demo-checklist.md
  • ../operations/production-security-audit.md — before onboarding real third-party tenants