Files
preview_sites/RULE.md
T

10 KiB
Raw Blame History

Preview Sites — Agent Rule

How to create client preview websites in this repo. Follow this every time you scaffold or expand a proposal.

Canonical feature + pricing catalog: features.md
Human overview: README.md


Goal

Ship a portable static mockup that sells the Django product: public marketing site + client portal (with UTM) + optional monetized add-ons. Prospects click through screens and pick features on a pricing page.

Do not invent new product features or prices. Read features.md and use those names, deps, and dollar amounts.


Hard rules

  1. Static only — HTML/CSS/JS; relative asset paths; no backend required to view.
  2. No secrets — no API keys, passwords, real customer PII, or live credentials.
  3. Concept labeled — fixed “UX Concept Preview” (or proposal) banner on public pages; link to ux-gallery.html + pricing.html.
  4. Kebab-case foldersproposals/<client-name>/ (e.g. eds-plumbing-and-sewer).
  5. Templates stay generic — no client names/branding in templates/.
  6. Monetization from catalog — build + monthly fees and dependency rules come from features.md only.
  7. UTM is base — every portal includes UTM; never sell it as a separate add-on.
  8. Deps — Payments requires Email & SMS; AI social requires Social consolidation (auto-select / block on pricing page).
  9. Vendor credit in footer — every preview page footer (marketing, portal, gallery, pricing) must include: Made by [AI ML Operations, LLC](https://aimloperations.com)
    HTML form:
    Made by <a href="https://aimloperations.com" rel="noopener noreferrer" target="_blank">AI ML Operations, LLC</a>
    
    Link the company name only. Do not omit on new pages.
  10. SEO on first shot — public marketing pages must pass Lighthouse SEO (target 100). Follow the SEO checklist below; do not ship homepage without meta description and descriptive link text.

Product shape (from features.md)

BASE (always on)
  Public: Landing · About · Contact (+ 404 / under construction as needed)
  Portal: Login · Dashboard · Leads · Lead detail · UTM analytics

ADD-ONS (build $ + monthly $)
  Email & SMS · Direct mail · Blog · Payments (Stripe)
  Social consolidation · AI social generator (Ollama)

Pricing amounts, screen file hints, and checklists: open features.md — do not hardcode stale numbers in this rule if they drift; copy from the catalog when writing SCOPE.md / pricing.html.


New client checklist

proposals/<client-name>/
├── mockup/
│   ├── index.html              # marketing entry (or public-home.html)
│   ├── ux-gallery.html         # REQUIRED — card per screen, grouped by feature
│   ├── pricing.html            # REQUIRED — interactive picker + live totals
│   ├── ux-planned.html         # stubs for screens not designed yet
│   ├── assets/css/ux-hub.css   # gallery/pricing styles (copy from an existing proposal)
│   └── …public & portal pages
└── proposal/
    ├── NOTES.md                # client facts, sources, contact data status
    └── SCOPE.md                # recommended features + quote math from features.md

Steps

  1. Create folders above.
  2. Copy closest templates/<name>/ into mockup/ (omit template docs/junk).
  3. Brand the public site (copy, colors, logo, services, contact). Prefer real approved data; mark placeholders clearly.
  4. Apply SEO on every public marketing page (see SEO checklist) — meta description, unique titles, descriptive links, OG/Twitter, LocalBusiness JSON-LD on the homepage.
  5. Add ux-gallery.html — monica-style hub: eyebrow per feature (Public · base, Portal · base, Portal · Email/SMS, …). Ready screens link to real HTML; unfinished → ux-planned.html?p=<key>.
  6. Add pricing.html — base rows locked on; add-ons toggleable; enforce deps; show one-time + monthly totals; disclaimer that usage (Stripe/SMS/postage) is extra.
  7. Write SCOPE.md — recommend add-ons for this business; compute totals from features.md prices.
  8. Write NOTES.md — client identity, sources, sitemap, preview reminder, next passes.
  9. Banner on marketing pages → gallery + pricing links.
  10. Add the client row to the Active previews table in README.md (business, phone, email, preview URL). Use _TBD_ for unknown phone/email.
  11. Smoke-test locally as static files; run Lighthouse SEO on the homepage (target 100).

Reuse

Copy gallery/pricing/stub patterns from:

  • proposals/eds-plumbing-and-sewer/mockup/
  • proposals/paint-to-please/mockup/
  • proposals/select-electrical/mockup/

SEO (public marketing)

Ship Lighthouse SEO 100 on the public homepage on the first pass. Portal / gallery / pricing pages are secondary (still need titles + footer credit).

Required on every public HTML page

Item Rule
<html lang="en"> Always set lang.
Unique <title> Include business name + page topic + city/region when known. Do not reuse one generic title on every page.
Meta description 12 sentences, ~120160 chars, business + service + locale. Required on homepage; required on About, Contact, Services, and each service page.
Viewport width=device-width, initial-scale=1. Do not use user-scalable=0 or maximum-scale=1 (hurts a11y; not needed for SEO).
Image alt Meaningful alt on content images; decorative icons may use alt="".
Crawlable links Real href to real pages (or #section). Prefer no empty # CTAs for primary nav/services.

Homepage extras (do these on index.html)

<meta name="robots" content="index, follow">
<link rel="canonical" href="https://<client>-preview.aimloperations.com/">
<meta property="og:type" content="website">
<meta property="og:title" content="…same as title…">
<meta property="og:description" content="…">
<meta property="og:url" content="https://<client>-preview.aimloperations.com/">
<meta property="og:locale" content="en_US">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="…">
<meta name="twitter:description" content="…">

Add JSON-LD (application/ld+json) for the local business — use the closest schema.org type (PlumbingService, Electrician, HousePainter, LocalBusiness, etc.) with name, url, telephone, email (if known), address, areaServed, and a short description. Match phone/email to whats shown on the page and to the README Active previews row.

Never use these as the only visible link text:

  • Learn more / Learn More / LEARN MORE
  • Click here / Click this
  • More / Here / This / Go / Start / Right here

Do name the destination, e.g.:

  • Water heater serviceswater-heaters.html
  • Lighting installation detailslighting-installation.html
  • View plumbing servicesservices.html

Service-card links must point to the correct service page (not one shared wrong URL for every card).

Quick Lighthouse check

npx lighthouse@12 "https://<preview-host>/" --only-categories=seo --chrome-flags="--headless --no-sandbox"
# or local:
python3 -m http.server 8765
npx lighthouse@12 "http://127.0.0.1:8765/proposals/<client>/mockup/" --only-categories=seo --chrome-flags="--headless --no-sandbox"

Fix any SEO audit with score < 1 before calling the mockup done.

Reference implementations

Homepages that already follow this pattern:

  • proposals/eds-plumbing-and-sewer/mockup/index.html
  • proposals/paint-to-please/mockup/index.html
  • proposals/select-electrical/mockup/index.html

Do Don't
One card per screen Dump all content on one mega-page
Group by feature section Mix portal + public without labels
Mark Ready vs Planned Leave dead links
Keep marketing index.html working Replace marketing home with only the hub without a link back

Reference pattern: monica_site proposal hub.


Pricing page conventions

  • Always show Public site + Client portal + UTM (checked, disabled).
  • Checkboxes for each add-on with build and /mo from features.md.
  • Selecting Payments → auto-check Email & SMS (+ short helper text).
  • Selecting AI social → auto-check Social (+ helper text).
  • Unchecking a required parent → uncheck dependent child.
  • Sticky summary: one-time total · monthly total · feature count.
  • Label as draft estimate, not a formal contract.

Design (public marketing)

When building/tailoring the public site (not the portal chrome):

  • Brand-first first viewport; one composition; full-bleed hero when its a landing.
  • Expressive type — avoid Inter/Roboto/Arial/system as the only voice.
  • Atmosphere via image/gradient/pattern — not flat single-color only.
  • Prefer no cards in the hero; one job per section.
  • Mobile + desktop must both work.
  • If extending an existing template look, preserve that templates visual language.

Portal mocks can be denser/app-like; still match proposal hub styling (ux-hub.css).


Done means

  • NOTES.md + SCOPE.md exist and match features.md pricing
  • ux-gallery.html covers base + every add-on screen (ready or planned)
  • pricing.html totals correct; deps work
  • Public marketing is client-branded and concept-bannered
  • SEO: homepage Lighthouse SEO 100; unique titles + meta descriptions on public pages; no vague “Learn more” links; OG/Twitter + JSON-LD on homepage
  • README.md Active previews table has business, phone, email, preview URL
  • Footer credit: Made by AI ML Operations, LLC
  • No secrets committed; relative paths; opens without a server framework