Files
anwar-pi-website/PRD.md
T

8.7 KiB
Raw Permalink Blame History

PRD — أنور بآي (anwarpy.ai)

Owner: Ahmed (anwarpy). Maintainer of record: this document. Last revised: 2026-10-11. Status vocabulary in this doc: MVP = shipped 2026-10-10 (verified, see docs/launch/2026-10-10-launch-readiness.md §11). Roadmap = committed, not built. Out of scope = we will not build it; do not ask.

1. Vision

Anwarpy.ai is an Arabic-first library of practical AI tips and tricks — automation, agentic workflows, models, tooling — whose single goal is: help the Arabic reader actually use AI and keep discovering new tricks. Arabic engineers, founders, and curious professionals learn to understand AI and then build with it: «افهم الذكاء الاصطناعي، ثم ابنِ به.»

Three product principles, all enforced server-side:

  1. Honesty over theater. Reading times are computed from real content, errors say what failed in real Arabic, the paywall never lies about what the visitor can read.
  2. The reader is sovereign. During free early access every published guide — including membership-tier ones — is fully readable. No dark patterns, no fake scarcity, no confirm-password, no CAPTCHA.
  3. Machines are readers too. Guides are served clean to humans and to AI crawlers (robots.txt policy, llms.txt/llms-full.txt, honest JSON-LD).

2. Personas

Persona Who What they get
The Curious Reader Arabic speaker googling «كيف أبني وكيل ذكاء اصطناعي» Free guides, topic hubs, honest reading times, notify list
The Practitioner Engineer/founder implementing agents at work Advanced guides + work files during early access (free); after billing launches: the $10/mo membership (S-01…S-08)
The Writer (Ahmed) Solo owner; writes in /admin, ships via the agent pipeline Payload admin, agent API with secret scanning, moderation queue, comment management

3. MVP — shipped 2026-10-10

The MVP is exactly what launched. Nothing below may regress without an explicit owner decision.

3.1 Reading & content

  • Guides (Posts): Arabic titles/deks, Lexical bodies, categories وكلاء/نماذج/استرجاع/سلامة/أدوات/أعمال, topics (agents|models|automation|foundations), contentType badge (note/tutorial/case_study/comparison), authorName byline, «حُدّث» freshness, computed readingMinutes (160 wpm, written at save + backfilled honestly).
  • Topic hubs /topics/{agents,models,automation,foundations} with sitemap entries.
  • Tables in article bodies render as real tables (mobile-safe), not code blocks.
  • AI/SEO surfaces: robots.txt allows the 10 named AI crawlers; /llms.txt index; /llms-full.txt full bodies; JSON-LD Article + BreadcrumbList (+ FAQPage on /subscription, Organization on home); isAccessibleForFree reflects reality.
  • Downloads: guide attachments gated by the same access policy as their post (per-file access).

3.2 Access policy (the core contract)

  • LAUNCH_MODE server-side policy (web/src/lib/launch.ts): free_early_access = every published post serves its full body; billing routes honestly 503 in Arabic. paid = membership-tier (access: 'vip') posts paywall with H2-preview + fine print.
  • The intended tier (access: free|vip) is data; the effective access is policy. Never rewrite access to simulate a launch state.
  • Ghost rule: any verification must be done as a logged-out visitor reading a VIP post.

3.3 Accounts & trust

  • Email+password signup (no confirm-password field), verification email with token, honest 429 lockout message, duplicate-email inline error, email-typo suggestion, live password hint, reassurance microcopy.
  • Verification state is written at signup (verification_token); verify-email flow supports changing the email.
  • Account settings + onboarding (interest/level) exist; getViewer() resolves the session.

3.4 Notify list

  • /api/notify records every submission; sends a confirmation mail when transport is live; honest 503 «خدمة البريد غير مربوطة بعد.» when Cloudflare Email Sending is off (row still kept); duplicate emails return alreadySubscribed: true without re-mailing.

3.5 Comments (decided 2026-10-11 — in MVP scope)

  • Any logged-in user may comment on a post — free or VIP, tier does not matter. Anonymous visitors cannot comment (API rejects unauthenticated; UI prompts login).
  • Moderated: comments enter a non-public status; the author identity is forced server-side from the session (client cannot spoof author), display name from authorName (ADR-0002).
  • Route contract: not a public CRUD API — comment creation is a server-validated route bound to the post (ADR-0001).
  • Admin moderation lives in /admin (status transitions: pending → published / rejected).

3.6 Agent pipeline (authoring automation)

  • POST/PUT /api/agent/posts with x-agent-key header; strips access/readingMinutes from accepted fields; sourceId dedup (idempotent re-runs); secret scanning (scanAgentPayload) rejects AWS keys, PEM blocks, sk- keys, GitHub tokens, generic credentials with 422 + pattern names only; string content is a 400 (Lexical JSON required); publish: true is explicit opt-in, PUT cannot set status.
  • Media/Files ingestion helpers (agent-media.ts, agent-files.ts).

3.7 Interactions

  • One like per logged-in user per post (PostLikes, uniqueness enforced), public like counter; anonymous view counting on /api/posts/[slug]/view.

3.8 Ops floor

  • web/scripts/backup-db.sh + documented restore rehearsal (VPS).
  • Feedback = mailto:hello@anwarpy.ai in the footer.
  • Deployment: rsync → docker compose -f docker-compose.vps.yml up -d --build on the VPS; migrations apply on boot.

4. Roadmap (committed, phased)

  • L-03 /terms + /privacy: real content from owner facts recorded in docs/launch/owner-inputs-terms-privacy.md; effective date; §9 items 1–7. Acceptance: pages live, linked in footer, listed in sitemap.
  • Comments shipping polish: notification to writer on new pending comment; abuse valve (delete + block author) in admin.

Phase 3 — Money & measurement (gate: S-01…S-08 checklist §6)

  • Stripe paid tier S-01…S-08: checkout, webhook (/api/stripe/webhook exists; stripeCustomerId on Users), vip-onboarding, payment success/cancel pages; flip = LAUNCH_MODE=paid policy change only. Paywall CRO (H2 preview + fine print + #faq) already built.
  • L-11 analytics: vendor decision (owner); event list is pre-agreed in the launch checklist.
  • L-12 editorial distribution: owner-driven announcement; no agent-posted content.

Phase 4 — Product growth (owner-added 2026-10-11)

  • Mailing list v2: move from notify rows to a real newsletter (send digests of new guides; unsubscribe honoring; Cloudflare Email transport).
  • Direct messaging with the writer: logged-in members can message Ahmed from within the site; inbox in /admin; rate-limited; no exposure of his personal email.
  • In-post tool-finder chatbot: assistant that reads the site's own posts (llms-full corpus) and points the reader to the right guide/tool inside anwarpy.ai; Arabic-first; cites posts; never invents tools. Must reuse the same access policy (never leak VIP bodies to unauthenticated users through the bot).

5. Strictly out of scope

Do not build, do not scaffold, do not "prepare" these:

  • OAuth / Passkeys / SMS or WhatsApp login in the MVP — anticipated evolution (owner, 2026-10-11): Google auth or Clerk may be added later for easy integration; keep viewer.ts as the single session seam so providers can swap behind it.
  • Native mobile apps.
  • Multi-tenant or white-label anything; a second site on the same deploy.
  • Public third-party REST API beyond what exists (agent API is for the owner's pipeline only).
  • User-generated uploads of arbitrary files; media uploads stay author/admin-only.
  • CAPTCHA, aggressive rate limiting beyond the existing login lockout (owner decision, recorded).
  • Real-time anything (WebSockets/presence) until Phase 4 messaging is designed.
  • Any rewrite of access fields to simulate launch states.

6. Success metrics

Available now (no vendor dependency): notify signups, verified-account ratio, likes per post, views per post, comment quality (published/rejected ratio). Post-L-11: activation (first guide read), return rate, member conversion once billing is live.

7. Acceptance culture

A checkbox without evidence is not verification. Every claim in the launch doc has a command + observed output. This PRD inherits that rule: features in §3 are verified by the §11 evidence; new features get the same treatment (ghost-read checks, honest-error checks, row-count checks).