Internal Operations Document

Website Operations
Playbook

The complete system for how we build, launch, and maintain client websites — from signed contract to live site in one business day.

Version: 1.0
Updated: March 2026
Prepared for: Head of Operations
Status: Active
How to use this playbook

Use the left sidebar to navigate between sections. Use the search bar at the top to find specific topics. The QA Checklist page is interactive — check off items as you complete them. All code blocks have a Copy button for easy use.

The System in One Table

Phase Who Tools Time
Collect client briefOnboarding SpecialistBrief template1 hour
Build the siteManus AI (directed by Specialist)Manus2–4 hours
Review & auditOnboarding SpecialistW3C, WAVE, PageSpeed, AI Friendliness1–2 hours
LaunchOnboarding SpecialistGitHub, Cloudflare Pages, RegistrarUnder 1 hour
Add monitoringOnboarding SpecialistUptimeRobot5 minutes
Hand off to QuarterbackOnboarding SpecialistGo-live email template15 minutes
Ongoing maintenanceClient Success QuarterbackManus, GitHub, Cloudflare Pages15–30 min/request
Escalation (if needed)Tech Product Owner + contractorVariesAs needed

Why We Are Changing

The old website delivery model was built around human specialists: one person for project management, one for content, one for design, one for development, one for launch. Each handoff between specialists was a potential point of failure — a dropped ball, a miscommunication, a delay. The client experienced this as slow and inconsistent. Internally, it meant no single person owned the outcome.

AI tools have made the specialist model obsolete for the type of websites our trades company clients need. A well-prompted AI agent can produce a complete, high-performing, audit-passing website in hours. The human role shifts from doing the work to directing the AI, reviewing the output, and owning the client relationship.

The old model is not a people problem

This change is not about the quality of our current team. It is about the structure of the work. The specialist handoff model was the right design for a pre-AI world. It is the wrong design now. The goal is to redeploy talented people into roles where they own outcomes rather than tasks.

What We Are Building Toward

A system where one Onboarding Specialist takes a client from signed contract to live website without involving any other internal team member for routine builds. Client Success Quarterbacks handle all ongoing maintenance and content updates using AI tools, without needing a developer. The hosting infrastructure is fully managed — no servers to maintain, no SSL certificates to renew, no caching layers to configure.

The Five Non-Negotiable Outcomes

  • Every website we deliver passes four specific audits: W3C validation, WAVE WebAIM accessibility, PageSpeed Insights (100 on both mobile and desktop), and AI Friendliness.
  • One Onboarding Specialist runs the full build-to-launch workflow independently.
  • Client Success Quarterbacks handle all routine maintenance without developer involvement.
  • The hosting infrastructure is zero-maintenance — no servers, no SSL management, no caching fires.
  • The monthly cost of hosting and infrastructure per client site is near zero, preserving margin.
The key insight

In the old model, revenue scaled linearly with headcount. In this model, each Operator handles what used to require 3–4 specialists. Margins expand as we grow rather than compress. That is the business we are building.

Manus AI
The Build Engine

Generates complete website code from a plain-English brief. Writes HTML, CSS, JS, copy, schema markup, sitemap, robots.txt, and llms.txt. Also handles ongoing content edits when directed by Quarterbacks.

Onboarding Specialist Quarterbacks Existing subscription
GitHub
File Storage & Version Control

Stores all website files for every client in a dedicated repository. Tracks every change ever made. Connects to Cloudflare Pages so updates deploy automatically within 60 seconds of a file change.

Onboarding Specialist Quarterbacks Free
Cloudflare Pages
Hosting Platform

Hosts client websites on Cloudflare's global network. Issues and renews SSL automatically — forever. No server management. No caching configuration. Rebuilds and redeploys automatically when GitHub files update.

Onboarding Specialist Tech Product Owner Free tier
Cloudflare Registrar
Domain Management

Registers and renews domain names at wholesale cost (no markup). Manages DNS in the same dashboard as Cloudflare Pages — connecting a domain to a site is a single click. Auto-renewal prevents accidental expiry.

Onboarding Specialist $8–$12/year per domain
UptimeRobot
Passive Site Monitoring

Pings every client site every 5 minutes and sends an alert if a site goes down. Runs entirely in the background — no day-to-day attention required. Day-to-day responsibility: none.

Tech Product Owner Quarterbacks Free / ~$7/mo unlimited
Formspree
Contact Form Handler

Handles contact form submissions on static HTML sites without a server. When a visitor submits a form, Formspree receives it and forwards it to the client's email. No server-side code required.

Onboarding Specialist Free / ~$10/mo agency
What goes away completely

Self-managed VPS servers (Cloudflare VPS, HostGator VPS) — cancelled. ManageWP — not needed. SSL certificate management — handled automatically forever. Server crashes — structurally impossible on Cloudflare Pages. The dependency on the head developer for infrastructure fires — eliminated.

How the Stack Connects

The flow is linear and automatic: Manus builds the site files → Onboarding Specialist uploads files to GitHub → GitHub triggers Cloudflare Pages to deploy → Cloudflare Pages serves the site to visitors with automatic SSL. When a Quarterback makes an update, the same flow repeats automatically. No manual deployment step. No server to touch. No SSL to renew.

Non-negotiable standard

A site that does not pass all four audits is not ready to launch. If an audit fails, prompt Manus to fix the specific issue and re-run the audit. Do not launch until all four pass.

W3C Validation
validator.w3.org

Validates that the HTML code follows web standards. Catches structural errors, missing attributes, and deprecated elements that can cause rendering issues across browsers.

Zero errors, zero warnings
WAVE WebAIM
wave.webaim.org

Tests whether the site is usable by people with disabilities. Checks for missing alt text, poor color contrast, missing form labels, improper heading structure, and keyboard navigation issues.

Zero errors
PageSpeed Insights
pagespeed.web.dev

Measures how fast the site loads on real devices. Checks Core Web Vitals including Largest Contentful Paint, Cumulative Layout Shift, and Interaction to Next Paint. Run on the live URL, not a staging URL.

Score of 100 — mobile & desktop
AI Friendliness
aifriendliness.com

Checks whether the site communicates effectively with AI systems and search engines. Looks for llms.txt, JSON-LD schema markup, sitemap.xml, robots.txt, and structured business information.

Pass

Why Plain HTML Makes These Achievable

The static HTML + Cloudflare Pages architecture is the only approach that makes all four audits achievable consistently and by default. WordPress makes PageSpeed 100 a constant battle — plugins, themes, and database queries all add weight. React and Vue frameworks render in the browser using JavaScript, which delays content appearance and tanks mobile PageSpeed scores.

On a plain HTML site built by Manus and hosted on Cloudflare Pages, PageSpeed 100 is the starting point, not something to fight for. The HTML is valid by construction. Accessibility is built into the prompt requirements. AI Friendliness files are generated automatically. The architecture works with the audits, not against them.

A detailed brief = a site that needs minimal revision

A vague brief produces a site that needs significant rework. Do not leave the onboarding call without every field below filled in. If the client does not know something (e.g., hex codes), note it and we will derive it from their logo.

Business Basics

  • Business name — exactly as it should appear on the site
  • Primary phone number
  • Primary email address
  • Physical address (if applicable — some trades companies are service-area-only)
  • Service area — cities, counties, or radius
  • Business hours — every day of the week
  • Year established (if they want to feature it)
  • License numbers (if applicable and they want to display them)

Services

  • Complete list of services offered — be specific. "HVAC" is not enough; we need "AC installation, AC repair, furnace installation, furnace repair, heat pump installation."
  • Primary service — the one they most want to rank for and generate leads from (this goes first in the prompt)
  • Any services they do NOT want featured — sometimes companies are phasing out certain work

Brand

  • Logo file — PNG or SVG with transparent background preferred
  • Brand colors — hex codes if known; if not, describe the colors and we will match from the logo
  • Any fonts they use (if known)
  • Tone preference: professional and formal, friendly and approachable, bold and confident, etc.

Content

  • About the company — 2–3 paragraphs or bullet points: who they are, how long they've been in business, what makes them different
  • Owner or team bio (if they want to feature the team)
  • Awards, certifications, or affiliations they want to highlight
  • Customer testimonials — 3–5 preferred; if they don't have them written, we pull from their Google reviews
  • Photos — team photos, truck photos, job site photos, before/after photos — the more the better

Technical

  • Current website URL (if they have one — we use it as a reference)
  • Google Business Profile URL (if they have one)
  • Social media profiles — Facebook, Instagram, etc.
  • Any third-party tools that need to be integrated (booking software, review widgets, chat tools)

Goals

  • Primary goal of the website — generate phone calls, form submissions, drive foot traffic, etc.
  • Any specific pages they want beyond the standard set (standard: Home, Services, About, Contact)
  • Anything they specifically like or dislike about their current website
How to use this prompt

Click "Copy" on the code block below. Paste it into a new Manus task. Replace every [BRACKETED] field with information from the client brief. The more detail you provide, the better the first-pass output. If you do not have a piece of information, write "unknown" — Manus will make a reasonable assumption.

Standard Build Prompt

Manus Build Prompt — Copy & Fill In
Build a complete, production-ready website for [BUSINESS NAME],
a [TYPE OF BUSINESS] serving [SERVICE AREA].

Business details:
- Phone: [PHONE NUMBER]
- Email: [EMAIL ADDRESS]
- Address: [ADDRESS, or "service-area only — no physical storefront"]
- Hours: [BUSINESS HOURS]
- Year established: [YEAR, or omit if unknown]

Services to feature (in order of priority):
[LIST ALL SERVICES, one per line, primary service first]

Brand:
- Primary color: [HEX CODE or color description]
- Secondary color: [HEX CODE or color description]
- Tone: [e.g., "professional and trustworthy, with a friendly approachable feel"]
- Logo: [Attach the logo file, or note "no logo — create a text-based wordmark"]

Pages required:
- Home (hero, services overview, trust signals, testimonials, contact form)
- Services (section or page for each service listed above)
- About (company story, team, values, certifications)
- Contact (phone, email, address/service area, form, Google Maps embed)
- [ANY ADDITIONAL PAGES REQUESTED]

Content to include:
[PASTE ABOUT SECTION, TESTIMONIALS, AND ANY OTHER PROVIDED CONTENT]

Technical requirements — non-negotiable:
- Plain HTML5, CSS3, vanilla JavaScript only. No frameworks. No build tools.
- Must pass W3C validation with zero errors and zero warnings
- Must pass WAVE WebAIM accessibility audit with zero errors
- Must achieve a score of 100 on Google PageSpeed Insights (mobile AND desktop)
- Must pass AI Friendliness audit — include llms.txt, JSON-LD LocalBusiness
  schema, sitemap.xml, and robots.txt
- All images in WebP format with descriptive alt text
- No render-blocking scripts or stylesheets
- Contact form via Formspree (endpoint: [FORMSPREE URL or "use placeholder"])
- Fully responsive on mobile, tablet, and desktop

Reference: [CURRENT WEBSITE URL or "no existing site"]

Additional notes: [SPECIFIC REQUESTS, THINGS TO AVOID, CLIENT CONTEXT]

After the First Build: Review Checklist

When Manus delivers the first build, work through this checklist before running the audits:

Content Review

  • All business information is accurate — phone, address, hours, services
  • The copy sounds like the client's business, not generic
  • All testimonials are included and attributed correctly
  • The logo is displayed correctly in the header and footer
  • Brand colors are applied consistently throughout

Visual Review

  • The site looks professional and polished on a desktop browser
  • The site looks professional and polished on mobile (use browser dev tools to simulate)
  • Images are high quality and relevant — no generic stock photos if client provided real photos
  • The contact form is visible and prominent on the home page
  • The phone number is clickable on mobile (tap-to-call)

Technical Review

  • Run W3C validator — must show zero errors, zero warnings
  • Run WAVE WebAIM — must show zero errors
  • Run PageSpeed Insights — must show 100 on both mobile and desktop
  • Run AI Friendliness checker — must pass
  • Confirm the llms.txt file exists and contains accurate business information
  • Confirm the sitemap.xml exists and lists all pages
  • Confirm the robots.txt exists and is correctly configured
  • Submit the contact form — confirm it delivers to the correct email address
  • Click the phone number on mobile — confirm it initiates a call
Do not launch until all items pass

If any audit fails or any checklist item is not met, prompt Manus to fix the specific issue. Describe exactly what failed and what the expected result is. Re-run the audit after the fix. Repeat until everything passes.

Create a GitHub Repository

Create a new private GitHub repository named after the client (e.g., discount-tile-outlet). Upload all the site files that Manus produced into this repository. This is the permanent home for this client's website code. Every future update goes through this repository.

10–15 minutes
Connect GitHub to Cloudflare Pages

In the Cloudflare dashboard, navigate to Pages and create a new project. Connect it to the client's GitHub repository. Cloudflare will automatically build and deploy the site. Within a few minutes, the site will be live on a temporary Cloudflare URL (e.g., discount-tile-outlet.pages.dev). Use this URL to do a final visual check of the live site.

5–10 minutes
Connect the Client's Domain

If the domain is registered through Cloudflare Registrar: Navigate to the domain in the Cloudflare dashboard and connect it to the Pages project with a single click. SSL is issued automatically within minutes.

If the domain is registered elsewhere (GoDaddy, Namecheap, etc.): Log into their domain registrar, find the DNS settings, and update the nameservers to point to Cloudflare. Once the nameservers propagate (typically 15 minutes to a few hours), the domain will resolve to the site and SSL will be issued automatically.

5 minutes (+ propagation time if external registrar)
Verify the Live Site

Once the domain is connected and SSL is active, do a final verification: visit the live site at the client's domain and confirm it loads with the padlock (https://). Submit the contact form on the live site and confirm it delivers to the correct email. Run PageSpeed Insights on the live URL — not the staging URL — and confirm scores are still 100. Check the site on a mobile device.

15 minutes
Add to UptimeRobot

Add the client's live URL to UptimeRobot monitoring. This takes about 30 seconds. From this point forward, UptimeRobot will alert us if the site ever goes offline. On Cloudflare Pages, this alert should essentially never fire — but it is a professional safety net.

5 minutes
Hand Off to the Quarterback

Send the client a go-live email that includes: a link to their live website, a brief summary of what was built (pages, features, contact form destination), an introduction to their Client Success Quarterback (name, photo, contact information), and instructions for how to request changes or updates going forward. The Quarterback takes ownership of the account from this point forward.

15 minutes

Routine Content Updates

When a client requests a content change — a new phone number, updated service area, revised copy, a new photo, a new team member — the Quarterback handles it using Manus:

  1. Open Manus and provide the context: "This is the website for [CLIENT NAME]. The client has requested the following change: [DESCRIBE THE CHANGE]. Here are the current site files: [ATTACH OR REFERENCE THE FILES FROM GITHUB]."
  2. Manus makes the edit and produces updated files.
  3. The Quarterback reviews the change visually — does it look right? Is the information accurate?
  4. Upload the updated files to the client's GitHub repository. Cloudflare Pages automatically detects the change and redeploys the live site within about 60 seconds.
  5. Confirm the change is live by visiting the site. Notify the client.
15–30 minutes per routine request

Significant Updates

When a client requests a larger change — a new page, a redesigned section, a new service added, a seasonal promotion — the Quarterback follows the same process but with a more detailed prompt to Manus and a more thorough review before deploying. After deploying, re-run the four audits to confirm the update did not introduce any issues.

1–3 hours per significant update

When to Escalate to the Tech Product Owner

The Quarterback escalates when:

  • A site is down and the cause is not immediately obvious (UptimeRobot alert fired)
  • A domain is not resolving correctly after a DNS change
  • A form is not delivering submissions
  • The client requests a feature that requires server-side logic (booking system, member portal, custom API integration)
  • Any issue that the Quarterback cannot resolve within 30 minutes of investigation

The Tech Product Owner either resolves the issue directly or deploys the on-call contractor for genuinely complex technical work.

What Quarterbacks Do Not Need to Do

The Quarterback's scope is intentionally narrow

Quarterbacks do not manage SSL certificates — Cloudflare handles this automatically. They do not manage server configurations, caching settings, or hosting infrastructure. They do not need to know how to write code. They need to know how to write a clear prompt, review the output, and deploy updated files to GitHub.

Accounts to Create (One-Time)

Account Purpose Cost Priority
Cloudflare
cloudflare.com
Hosting (Pages) + Domain management (Registrar) Free for Pages; domain cost only Critical
GitHub
github.com
File storage and version control for all client sites Free Critical
UptimeRobot
uptimerobot.com
Passive uptime monitoring for all client sites Free up to 50 sites; ~$7/mo unlimited High
Formspree
formspree.io
Contact form handling without a server Free tier covers most; ~$10/mo agency High
Manus
manus.im
AI build and edit engine Existing subscription Critical

Internal Setup Tasks (One-Time)

  • GitHub organization: Create a GitHub organization account for the agency. All client repositories will live inside this organization.
  • Cloudflare account structure: Create a single Cloudflare account for the agency. Set up team member access so Quarterbacks can deploy updates without needing the account owner's credentials.
  • Formspree account: Set up a Formspree agency account. Configure a standard form template that can be applied to each new site at launch.
  • UptimeRobot account: Set up UptimeRobot and add all existing client sites as monitors. This is a one-time task the Tech Product Owner completes during initial setup.
  • Standard file structure: Define and document the standard file structure for every client site so any Quarterback can pick up any client's files and understand them immediately.
  • Onboarding brief template: Add the client brief template to the project management system so every new client onboarding call captures the same information in the same format.

Skills the Team Needs

Onboarding Specialist

Runs the full build-to-launch workflow independently. Learning curve: 1–2 weeks of practice builds.

  • Using Manus to build and edit sites
  • Uploading files to GitHub
  • Connecting a domain in Cloudflare
  • Running all four audits
  • Interpreting audit results
Client Success Quarterback

Handles all ongoing maintenance and client communication. Does not need to know how to code.

  • Using Manus to make content edits
  • Uploading updated files to GitHub
  • Running the four audits
  • Interpreting audit results
  • Knowing the escalation path
Tech Product Owner

Understands the full stack technically. Governs the system and handles escalations. Likely the current head developer.

  • GitHub and Cloudflare Pages at a technical level
  • DNS configuration
  • Form handler setup
  • Escalation path to on-call contractor
  • System governance and SOPs

Monthly Infrastructure Costs: Old vs. New

❌ Old Model
VPS hosting (Cloudflare + HostGator) $200–$400
ManageWP or equivalent $30–$100
Total infrastructure ~$230–$500/mo
✅ New Model
Cloudflare Pages $0
GitHub $0
UptimeRobot $0–$7
Formspree (agency plan) ~$10
Total infrastructure ~$17/mo

Per-Client Hosting Revenue

We charge clients a monthly hosting and maintenance fee. The recommended range for trades company clients is $75–$150/month depending on the level of support included. Our cost per site on the new infrastructure is effectively $0 (Cloudflare Pages free tier) plus a small share of the Formspree and UptimeRobot costs — approximately $0.10–$0.50 per site per month.

The hosting margin on the new model is 95%+

On the old model, the margin was compressed by VPS costs, ManageWP fees, and the developer time required to manage infrastructure. On the new model, hosting is essentially pure profit. At 286 clients paying $75–$150/month, that is $21,450–$42,900/month in hosting revenue against ~$17/month in infrastructure cost.

Duda Clients
No Action Required

Duda is already a managed platform. These clients stay on Duda until they come up for renewal or request a redesign, at which point we migrate them to the new stack.

WordPress Clients — Highest Priority
Migrate to Kinsta

Migrate all WordPress sites from the self-managed VPS to Kinsta managed WordPress hosting. Eliminates SSL chaos and server fires without touching the client experience. Kinsta offers free migrations for agency plans. Target: complete within 90 days.

Next.js + Payload Clients
Migrate to Vercel + Railway

Migrate these sites from the self-managed VPS to Vercel (frontend) and Railway (database). Both are managed platforms that handle SSL and deployment automatically. Lower volume — migrate over 60–90 days.

New Clients Going Forward

All new clients are built on the new stack from day one: Manus + GitHub + Cloudflare Pages. No exceptions for standard trades company websites. The only reason to deviate is if a client has a genuinely complex technical requirement (e-commerce, member portal, custom API integration) that requires a server-side solution.

Migration Priority Order

Priority Group Action Target Timeline
1 — Immediate New clients Build on new stack from day one Now
2 — High WordPress on VPS Migrate to Kinsta managed hosting Within 90 days
3 — Medium Next.js + Payload on VPS Migrate to Vercel + Railway Within 90 days
4 — Low Duda clients Migrate at renewal or redesign request Ongoing
How to use this checklist

Click any item to mark it as complete. Your progress is tracked in the bar above each section. Do not launch until all items are checked. Refresh the page to reset the checklist for a new build.

Code Quality

0%
  • HTML validates with zero errors and zero warnings at validator.w3.org
  • No inline styles anywhere in the HTML
  • All CSS in a single external stylesheet
  • All JavaScript in a single external file with defer attribute
  • CSS custom properties defined for all colors, fonts, and spacing
  • No unused CSS rules
  • No console errors in browser developer tools
  • No JavaScript frameworks or build tool artifacts

Performance

0%
  • PageSpeed Insights score: 100 on desktop
  • PageSpeed Insights score: 100 on mobile
  • All images in WebP format
  • All images have explicit width and height attributes
  • Hero image uses loading="eager" and fetchpriority="high"
  • All other images use loading="lazy"
  • No render-blocking resources
  • Google Fonts loaded with preconnect and display=swap

Accessibility

0%
  • WAVE WebAIM: zero errors
  • Every image has appropriate alt text
  • One <h1> per page, logical heading hierarchy
  • All form fields have visible <label> elements
  • All color combinations pass WCAG AA contrast (4.5:1 for normal text)
  • All interactive elements are keyboard-navigable
  • Skip-to-content link present on every page
  • <html lang="en"> on every page

SEO & AI Friendliness

0%
  • Unique title tag on every page (under 60 characters)
  • Unique meta description on every page (150–160 characters)
  • Open Graph tags on every page
  • Canonical tag on every page
  • JSON-LD LocalBusiness schema on every page
  • sitemap.xml present and valid
  • robots.txt present and correct
  • llms.txt present with complete business information
  • AI Friendliness audit: Pass

Functionality & Content

0%
  • All navigation links work correctly
  • Mobile hamburger menu opens and closes correctly
  • Contact form submits successfully (test with a real submission)
  • Contact form shows success message after submission
  • Phone number is a tap-to-call link on mobile
  • No "Lorem ipsum" placeholder text anywhere
  • All business information is accurate (name, phone, address, hours)
  • Copyright year is current
  • Privacy Policy and Terms of Service pages exist
  • Site is live on the client's domain with https:// (padlock visible)
  • Site added to UptimeRobot monitoring
  • Go-live email sent to client with Quarterback introduction