44 documents
Architecture Decision Records (ADRs)Status: Accepted📅2026-07-30⏱️3 min read

ADR-0005: Productised three-tier GEO packages versus per-engagement custom scoping

Two pricing and positioning models currently exist simultaneously, and they contradict each other **in public**.

ADR-0005: Productised three-tier GEO packages versus per-engagement custom scoping

  • Status: Accepted (Resolved & superseded by ADR-0009)
  • Date: 2026-07-30 (Updated 2026-10-18)
  • Deciders: Junaid Siddiqui (owner) — validated via MiroFish Swarm Simulation
  • Related: ../sales/pricing-tiers.md, ../strategy/positioning.md, 0009-pricing-and-proof-window-validation.md, ../research/2026-10-18-mirofish-swarm-simulation-findings.md

Context

Two pricing and positioning models currently exist simultaneously, and they contradict each other in public.

Model A — productised tiers (../source/JSGlobtech_GEO_Agency_Playbook.pdf §3)

Tier Setup Retainer
Tier 1: AI Schema & GEO $3,000 (11,000 AED) $1,000/mo (3,670 AED)
Tier 2: Full GEO + Agentic Engine (MCP) $6,000 (22,000 AED) $2,000/mo (7,350 AED)
Tier 3: Enterprise Custom $15,000+ (55,000 AED) $4,000+/mo (14,700 AED)

Model B — published site copy (public/.well-known/llms.txt, mirrored at public/llms.txt)

  • Custom Flutter mobile apps: from $10,000 (36,700 AED)
  • Web applications: from $5,000 (18,300 AED)
  • GEO & AI/MCP integration: "Scoped per engagement (often bundled with app/web builds)"
  • Explicitly: "Prices are starting indicators for scoped custom work, not fixed packages."

The same numbers also drive components/GeoSchema.tsx via siteConfig.pricing in lib/content.ts, so Model B is published as structured data too.

Why this matters more than a normal pricing question

The conflict is machine-readable and externally visible. A prospect quoted $3,000 for Tier 1 can fetch https://jsglobtech.com/llms.txt and read a $5,000 floor plus "not fixed packages" — and so can ChatGPT, which is the exact channel this strategy is built to win. The GEO layer is currently publishing a contradiction of the GEO offer.

The two models also imply different businesses: Model A is a productised retainer agency selling to clinics and rental companies at a $3,000 entry point; Model B is a custom development shop where GEO is an attachment to larger builds.

Options

  1. Adopt the tiers publicly. Update public/llms.txt, public/.well-known/llms.txt, lib/content.ts, and the GeoSchema.tsx offer catalog to state the tiers. Pro: consistent, and productisation is what makes recurring revenue and outreach scalable. Con: publishes a $3,000 entry point that anchors all pricing downward, including custom work.
  2. Keep custom scoping. Treat the tiers as internal anchors only, never quoted as list prices. Pro: no code changes, protects higher-value custom deals. Con: the playbook's outreach and demo motion loses its productised offer, and pricing conversations stay bespoke and slow.
  3. Split the lines. Publish GEO retainers as a distinct productised offer alongside custom builds, each priced and described separately. Pro: both motions survive intact. Con: most work, and the site's information architecture and copy have to carry two clearly separated offers without confusing either buyer.

Decision

Option 3 (Split the lines). Validated via MiroFish Swarm Simulation on 2026-10-18 and formalized in ADR-0009.

Productized GEO/AEO optimization retainers are offered as a distinct service line alongside custom application engineering. Tier 2 ($6,000 setup + $2,000/mo retainer) serves as the flagship offer anchored by a 60-day measurable AI Citation Proof Window. Custom Flutter/Next.js application builds retain their independent project-scoped pricing.

Consequences

  • The productized GEO tiers in knowledge/sales/pricing-tiers.md are the canonical operational pricing for GEO/AEO client engagements.

  • Custom software engineering remains quoted from $10k (mobile) and $5k (web).

  • Machine-readable files (llms.txt, knowledge base portal, schemas) publish both clearly without ambiguity.

  • Follow-ups:

    • Owner decides between options 1, 2, and 3 (Resolved: Option 3 via ADR-0009).
    • Update knowledge/sales/pricing-tiers.md and remove unresolved contradiction warning.
    • Set this ADR to Accepted.