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
- Adopt the tiers publicly. Update
public/llms.txt,public/.well-known/llms.txt,lib/content.ts, and theGeoSchema.tsxoffer 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. - 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.
- 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.mdare 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.mdand remove unresolved contradiction warning. - Set this ADR to Accepted.