For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Apply the devops/index.html.haml service-page visual language across all eight pages in artificialintelligence/ so the section reads as a coherent router + services cluster, with a three-tier template system (light hub, medium mini-hub, full secondary) and clear visual signalling between the managed-service cluster (AI Factory + Agentic Ops + Guardrails + MLOps) and the consulting offerings (Data Integration, Data Readiness, Generative AI). No new URLs, no new pages, no testimonials, no case studies.
Architecture: Content + front-end refresh of eight existing HAML pages plus four new FAQ partials. Work happens entirely in artificialintelligence/** and _partials/. One small SCSS addition in scss/site/_service-modern.scss for the new .svc-eyebrow class. All pages keep their existing frontmatter (banner paths, meta_*, service_*, FAQ partial references) except where positioning genuinely needs to change. The canonical visual language already exists in the SCSS file — we are consuming it, not extending it.
Tech Stack: Awestruct (Ruby static-site generator, NOT Jekyll), HAML templates, SCSS compiled by Gulp. Pandoc + pdftotext are used offline to extract source copy. No new runtime dependencies.
Spec: docs/superpowers/specs/2026-04-15-ai-section-refresh-design.md
Notes for the implementer:
C:\Users\amari\development\base2website\ unless stated otherwise.homepage-refresh branch with 18 other unrelated uncommitted changes. Never use git add -A or git add . — always stage specific files by path.master. Work stays on homepage-refresh.devops/index.html.haml. Every secondary AI page mirrors its section order, class names, and SVG conventions — minus .section-testimonials and the .case-studies-grid (no AI case studies written up yet).infrastructure-lens/index.html.haml is an existing reference for the same template family..svc-what-you-get, .svc-wyg-grid, .svc-wyg-card.bg-green/.bg-blue, .svc-wyg-icon, .svc-wyg-detail, .svc-deliverables, .svc-del-group, .svc-cycle-wrapper, .svc-cycle-infinity, .svc-cycle, .svc-cycle-item, .svc-trust-bar, .svc-trust-inner, .svc-trust-label, .svc-trust-badges, .svc-trust-badge, .svc-faq-section, .svc-faq-grid, .svc-faq-card, .svc-crosslink-section, .svc-crosslink-inner, .svc-crosslinks, .section-cta, .section-inner, .cta-content, .cta-heading, .cta-sub, .cta-actions, .cta-primary are all defined in scss/site/_service-modern.scss — reuse, do not redefine..svc-eyebrow — a small label placed above the H2 in the hero of every secondary page. CSS added once in Task 3.bundle exec rake gen, then grep the generated _site/<path>/index.html for specific string markers (eyebrow labels, card counts, partial-include targets), then open the same URL in the preview server (bundle exec rake preview on port 4242) for a visual sanity check.feat(ai): ..., content(ai): ..., style(ai): ..., chore(ai): .... Commit messages do NOT include a Claude co-author footer (not requested).Build commands:
bundle exec rake preview (serves on http://localhost:4242/)bundle exec rake gen (writes to _site/)bundle exec rake cleanVerification pattern used throughout this plan:
bundle exec rake gen — build site.grep -q "<marker>" _site/<path>/index.html — confirm marker exists. If the grep exits 0, the markup rendered. On Windows bash use the same command (MSYS/MINGW ships grep).http://localhost:4242/<path>/ in a browser — visually confirm the page renders without layout regressions.These skeletons are the single source of truth for each tier. Per-page tasks below reference section names from these skeletons and supply page-specific copy. Every class name, SVG viewbox, cycle SVG path, and structural detail below is already proven in devops/index.html.haml and infrastructure-lens/index.html.haml.
/artificialintelligence/ only)# (frontmatter preserved — only positioning strings updated where noted) —
.container.inner
%h2
%a#what-you-get
.svc-what-you-get
.svc-wyg-inner
%h2 Explore our AI offerings
.svc-wyg-grid
%a.svc-wyg-card.bg-green{:href => "/artificialintelligence/aifactory/"}
%p.svc-eyebrow Managed Service
.svc-wyg-icon
<inline SVG — factory icon>
%h4 AI Factory
%p
.svc-trust-bar .svc-trust-inner %p.svc-trust-label Audited and certified .svc-trust-badges .svc-trust-badge %img{src: "/images/partners/2022_aws_partner.svg", alt: "AWS DevOps Competency Partner", loading: "lazy"} %span AWS DevOps Competency .svc-trust-badge %img{src: "/images/ISO-27001-certified_col.svg", alt: "ISO 27001 Certified", loading: "lazy"} %span ISO 27001 Certified .svc-trust-badge %img{src: "/images/partners/saas_dark_bckgnd.svg", alt: "AWS SaaS Competency", loading: "lazy"} %span AWS SaaS Competency
= partial "faq_artificialintelligence.html.haml"
%a#contact = partial("contact_forms/inbuilt_contact_form.html.haml") ```
Note: .svc-wyg-card is normally a %div. On the hub we upgrade it to %a.svc-wyg-card so the whole card becomes clickable. The eyebrow <p class="svc-eyebrow"> is the ONLY new class introduced in this plan.
/artificialintelligence/aifactory/ only)# (frontmatter preserved — only positioning strings updated where noted) —
.container.inner
%p.svc-eyebrow.center Managed Service
%h2
%a#what-you-get
.svc-what-you-get
.svc-wyg-inner
%h2 The three managed services
.svc-wyg-grid
%a.svc-wyg-card.bg-green{:href => "/artificialintelligence/aifactory/agentic-ops/"}
%p.svc-eyebrow Managed Service
.svc-wyg-icon
%a#how-it-works
.container.inner
%h2 How AI Factory works
%p.center
.svc-trust-bar .svc-trust-inner %p.svc-trust-label Audited and certified .svc-trust-badges .svc-trust-badge %img{src: "/images/partners/2022_aws_partner.svg", alt: "AWS Advanced Partner", loading: "lazy"} %span AWS Advanced Partner .svc-trust-badge %img{src: "/images/ISO-27001-certified_col.svg", alt: "ISO 27001 Certified", loading: "lazy"} %span ISO 27001 Certified .svc-trust-badge %img{src: "/images/partners/saas_dark_bckgnd.svg", alt: "AWS SaaS Competency", loading: "lazy"} %span AWS SaaS Competency
.section-cta .section-inner .cta-content %h2.cta-heading Start with the service that fits today. %p.cta-sub Walk us through your current AI workloads and we will map the right entry point. .cta-actions %a.cta-primary{:href => "#contact"} Talk to Us
= partial "faq_ai_factory.html.haml"
.svc-crosslink-section .svc-crosslink-inner %h2 Want consulting instead? %p If you need a scoped engagement rather than an ongoing managed service, these may fit better. .svc-crosslinks %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/data/"} Data Integration %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/data/readiness.html"} Data Readiness %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/generativeai/"} Generative AI
%a#contact = partial("contact_forms/inbuilt_contact_form.html.haml") ```
# (frontmatter preserved) —
.container.inner
%p.svc-eyebrow.center Managed Service
%h2
%a#what-you-get .svc-what-you-get .svc-wyg-inner %h2 What you get .svc-wyg-grid .svc-wyg-card.bg-green .svc-wyg-icon <inline SVG — card 1> %h4 <card 1 title> %p <card 1 blurb> .svc-wyg-card.bg-blue .svc-wyg-icon <inline SVG — card 2> %h4 <card 2 title> %p <card 2 blurb> .svc-wyg-card.bg-green .svc-wyg-icon <inline SVG — card 3> %h4 <card 3 title> %p <card 3 blurb> .svc-wyg-card.bg-blue .svc-wyg-icon <inline SVG — card 4> %h4 <card 4 title> %p <card 4 blurb> .svc-wyg-card.bg-green .svc-wyg-icon <inline SVG — card 5> %h4 <card 5 title> %p <card 5 blurb> .svc-wyg-card.bg-blue .svc-wyg-icon <inline SVG — card 6> %h4 <card 6 title> %p <card 6 blurb>
.svc-wyg-detail
%h3 Everything included. Fixed monthly fee.
.svc-deliverables
.svc-del-group
%h4 Operations
%ul
%li <ops bullet 1>
%li <ops bullet 2>
%li <ops bullet 3>
%li <ops bullet 4>
%li <ops bullet 5>
.svc-del-group
%h4 Engineering
%ul
%li <eng bullet 1>
%li <eng bullet 2>
%li <eng bullet 3>
%li <eng bullet 4>
%li <eng bullet 5>
.svc-del-group
%h4 Compliance
%ul
%li <comp bullet 1>
%li <comp bullet 2>
%li <comp bullet 3>
%li <comp bullet 4>
%li <comp bullet 5>
.container.inner
%h2 How it works
%p.center
.svc-trust-bar .svc-trust-inner %p.svc-trust-label Audited and certified .svc-trust-badges .svc-trust-badge %img{src: "/images/partners/2022_aws_partner.svg", alt: "AWS Advanced Partner", loading: "lazy"} %span AWS Advanced Partner .svc-trust-badge %img{src: "/images/ISO-27001-certified_col.svg", alt: "ISO 27001 Certified", loading: "lazy"} %span ISO 27001 Certified .svc-trust-badge %img{src: "/images/partners/saas_dark_bckgnd.svg", alt: "AWS SaaS Competency", loading: "lazy"} %span AWS SaaS Competency
.section-cta
.section-inner
.cta-content
%h2.cta-heading
= partial "
.svc-crosslink-section .svc-crosslink-inner %h2 Not quite what you need? %p Every team is different. These may fit better. .svc-crosslinks %a.btn-primary.blue.findoutmore{:href => "<sibling 1>"} <sibling 1 label> %a.btn-primary.blue.findoutmore{:href => "<sibling 2>"} <sibling 2 label> %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/"} AI Factory
%a#contact = partial("contact_forms/inbuilt_contact_form.html.haml") ```
Same as Reference C, with the following substitutions:
%p.svc-eyebrow.center Consulting Engagement (not "Managed Service").svc-wyg-detail h3 reads "Scoped engagement. Clear deliverables." instead of "Everything included. Fixed monthly fee.".svc-deliverables columns are: Discovery / Design / Delivery (not Operations / Engineering / Compliance).%h3 verbs are: Discover → Design → Build → Handover (not Assess → Build → Operate → Improve)./artificialintelligence/aifactory/.All new FAQ partials follow the pattern of _partials/faq_devops.html.haml: a JSON-LD FAQPage block at the top for SEO, followed by a visible .svc-faq-section > .svc-faq-inner > .svc-faq-grid > .svc-faq-card tree with six Q&A cards.
```haml
-#
-# SEO Structured Data for FAQ
%script{:type => "application/ld+json"}
:plain
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{ "@type": "Question", "name": "
.svc-faq-section
.svc-faq-inner
%h2 Frequently asked questions
.svc-faq-grid
.svc-faq-card
%h4
| Path | Responsibility |
|---|---|
_partials/faq_guardrails.html.haml |
FAQ partial for the Guardrails secondary page |
_partials/faq_data_integration.html.haml |
FAQ partial for the Data Integration secondary page |
_partials/faq_data_readiness.html.haml |
FAQ partial for the Data Readiness secondary page |
_partials/faq_generative_ai.html.haml |
FAQ partial for the Generative AI secondary page |
docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/ |
Scratch buffer folder for extracted source copy (gitignored) |
| Path | Change |
|---|---|
.gitignore |
Add entry for docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/ |
scss/site/_service-modern.scss |
Append .svc-eyebrow rule block |
artificialintelligence/index.html.haml |
Replace body with Reference A skeleton |
artificialintelligence/aifactory/index.html.haml |
Replace body with Reference B skeleton |
artificialintelligence/aifactory/agentic-ops/index.html.haml |
Replace body with Reference C skeleton |
artificialintelligence/aifactory/guardrails/index.html.haml |
Replace body with Reference C skeleton + add service_faq_* frontmatter keys + FAQ partial include |
artificialintelligence/aifactory/mlops/index.html.haml |
Replace body with Reference C skeleton |
artificialintelligence/data/index.html.haml |
Replace body with Reference D skeleton + add service_faq_* frontmatter keys + FAQ partial include |
artificialintelligence/data/readiness.html.haml |
Replace body with Reference D skeleton + add service_faq_* frontmatter keys + FAQ partial include |
artificialintelligence/generativeai/index.html.haml |
Replace body with Reference D skeleton + add service_faq_* frontmatter keys + FAQ partial include |
_partials/faq_artificialintelligence.html.haml |
Review / retune copy only (no structural change) |
_partials/faq_ai_factory.html.haml |
Review / retune copy only (no structural change) |
_partials/faq_agentic_ai.html.haml |
Review / retune copy only (no structural change) |
_partials/faq_mlops.html.haml |
Review / retune copy only (no structural change) |
| Path | Reason |
|---|---|
artificialintelligence/indexold.html.haml |
Legacy, unlinked, confirmed obsolete by the spec |
Files:
Delete: artificialintelligence/indexold.html.haml
[ ] Step 1: Confirm the file is unlinked
Run this from the repo root to prove nothing references indexold:
bash
grep -r "indexold" --include="*.haml" --include="*.html" --include="*.rb" .
Expected: no matches. If anything matches, STOP and ask the user.
bash
rm "artificialintelligence/indexold.html.haml"
bash
bundle exec rake gen
Expected: exits 0, no errors.
bash
git add artificialintelligence/indexold.html.haml
git commit -m "chore(ai): delete legacy indexold hub page"
(Note: git add on a deleted file stages the deletion.)
Files:
.gitignoredocs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/ (folder with extracted .txt files)The engineer will reference these extracts when writing hero and card copy in later tasks. Extracts live outside git because they contain raw customer-meeting transcripts.
Prerequisite check: pandoc and pdftotext must be on PATH. On this Windows machine pdftotext is present (MSYS), pandoc may need choco install pandoc or a manual download from https://pandoc.org/installing.html. If pandoc is unavailable, the engineer may open each .docx in Word and paste plaintext into the corresponding .txt file manually.
Open .gitignore and append at end of file:
# AI section refresh extracts (local scratch buffer)
docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/
bash
mkdir -p "docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts"
Run these from the repo root. SRC is the source folder (outside the repo).
```bash SRC="C:/Users/amari/development/claude/base2services/research/AI" DST="docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts"
pandoc "$SRC/Overall AI Offering.docx" -t plain -o "$DST/overall-ai-offering.txt" pandoc "$SRC/Exposure and Personas.docx" -t plain -o "$DST/exposure-and-personas.txt" pandoc "$SRC/AI Factory One Pager.docx" -t plain -o "$DST/ai-factory-one-pager.txt" pandoc "$SRC/MLops as a Service.docx" -t plain -o "$DST/mlops-as-a-service.txt" pandoc "$SRC/ML Ops EBOOK.docx" -t plain -o "$DST/mlops-ebook.txt" pandoc "$SRC/Continuous MLOps Partnership Product Specification.docx" -t plain -o "$DST/mlops-partnership-spec.txt" pandoc "$SRC/Franchise Generative AI Portal.docx" -t plain -o "$DST/franchise-genai-portal.txt" ```
bash
pdftotext -layout "C:/Users/amari/development/claude/base2services/research/AI/base2Services AI Factory.pdf" "docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/ai-factory-pdf.txt"
bash
cp "C:/Users/amari/development/claude/base2services/research/AI/alistair ai factory meeting.txt" "docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/alistair-ai-factory-meeting.txt"
cp "C:/Users/amari/development/claude/base2services/research/AI/exec meeting.txt" "docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/exec-meeting.txt"
bash
git status --short docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/
Expected: no output (folder is ignored). If files appear, re-check .gitignore.
bash
git add .gitignore
git commit -m "chore(ai): gitignore ai-section-refresh extracts scratch folder"
.svc-eyebrow CSS ruleFiles:
scss/site/_service-modern.scssA single small label style used on the hub cards and the secondary/mini-hub hero. It is the only new class introduced by this plan.
scss/site/_service-modern.scssOpen the file, scroll to end, and append:
```scss
// ============================================================ // AI Section Refresh (2026-04-15) — eyebrow label // Spec: docs/superpowers/specs/2026-04-15-ai-section-refresh-design.md // ============================================================
.svc-eyebrow { display: inline-block; margin: 0 0 0.5rem 0; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; color: rgba(255, 255, 255, 0.7); padding: 0.25rem 0.625rem; border: 1px solid rgba(255, 255, 255, 0.25); border-radius: 999px; line-height: 1.3;
// When used inside a light hero (.container.inner), tighten contrast.
.container.inner & {
color: #475569;
border-color: #cbd5e1;
background: #f8fafc;
}
// When used inside a svc-wyg-card (dark bg-green/bg-blue), keep white translucent.
.svc-wyg-card & {
color: rgba(255, 255, 255, 0.85);
border-color: rgba(255, 255, 255, 0.35);
}
&.center {
display: inline-block;
} }
// Ensure eyebrow sits above H2 and is centred when on a .container.inner hero .container.inner > .svc-eyebrow.center { display: block; width: fit-content; margin-left: auto; margin-right: auto; } ```
bash
bundle exec rake gen
Expected: exits 0. No Sass errors. Confirm _site/css/styles.css contains .svc-eyebrow:
bash
grep -c "svc-eyebrow" _site/css/styles.css
Expected: 4 or more matches (the class definition plus its nested variants).
bash
git add scss/site/_service-modern.scss
git commit -m "style(ai): add svc-eyebrow label style"
Files:
artificialintelligence/index.html.haml_partials/faq_artificialintelligence.html.hamlReplace the hub body with Reference A, keep frontmatter, tune the existing FAQ partial's six primary Q&As to read as buyer-objection answers.
Source reference for copy: docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/overall-ai-offering.txt and exposure-and-personas.txt. Fall back to existing on-page copy if a source sentence is weaker than what's already on the page.
artificialintelligence/index.html.haml and preserve the frontmatterKeep lines 1–29 (the full --- block) exactly as they are. You are only replacing the body (line 31 onwards).
Select everything from line 31 (#content.page{:role => "main"}) to the end of file and replace with:
```haml #content.page .container.inner %h2 AI on AWS, built the way you need it. %p.center Two ways to work with us. Managed AI operations for teams that need a compliant, always-on backbone. Consulting engagements for teams that need a scoped piece of work with knowledge transfer at the end. %p.center ISO 27001 certified. AWS DevOps and SaaS Competency. Built and run inside your AWS accounts. .flex-container %a.btn-primary.blue.findoutmore.center{:href=>"#contact"} Talk to Us
%a#what-you-get .svc-what-you-get .svc-wyg-inner %h2 Explore our AI offerings .svc-wyg-grid %a.svc-wyg-card.bg-green{:href => "/artificialintelligence/aifactory/"} %p.svc-eyebrow Managed Service .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M6,40 L6,22 L14,22 L14,16 L22,22 L22,16 L30,22 L30,14 L42,14 L42,40 Z"} %line{x1: "12", y1: "32", x2: "14", y2: "32"} %line{x1: "20", y1: "32", x2: "22", y2: "32"} %line{x1: "28", y1: "32", x2: "30", y2: "32"} %line{x1: "36", y1: "32", x2: "38", y2: "32"} %h4 AI Factory %p Always-on managed backbone in your AWS accounts. Guardrails, agents, and MLOps pipelines run by our team. Fixed monthly fee. 24/7 included. %a.svc-wyg-card.bg-blue{:href => "/artificialintelligence/data/"} %p.svc-eyebrow Consulting .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %ellipse{cx: "24", cy: "12", rx: "16", ry: "5"} %path{d: "M8,12 L8,36 C8,39 15,42 24,42 C33,42 40,39 40,36 L40,12"} %path{d: "M8,24 C8,27 15,30 24,30 C33,30 40,27 40,24"} %h4 Data Integration %p Scoped engagement to stand up secure data pipelines for AI. Privacy-first ingestion, washing, and governance. Your team takes it forward. %a.svc-wyg-card.bg-green{:href => "/artificialintelligence/data/readiness.html"} %p.svc-eyebrow Consulting .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %rect{x: "10", y: "8", width: "28", height: "32", rx: "2"} %polyline{points: "16,18 20,22 28,14"} %line{x1: "16", y1: "28", x2: "32", y2: "28"} %line{x1: "16", y1: "34", x2: "28", y2: "34"} %h4 Data Readiness %p Discovery engagement that assesses whether your data can drive reliable AI outcomes. Quality assurance, pipeline review, and a prioritised roadmap. %a.svc-wyg-card.bg-blue{:href => "/artificialintelligence/generativeai/"} %p.svc-eyebrow Consulting .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M19,8 A5,5 0 0,1 24,13 L24,37 A5,5 0 0,1 14,37 A5,5 0 0,1 8,30 A5,5 0 0,1 9,23 A5,5 0 0,1 19,8 Z"} %path{d: "M29,8 A5,5 0 0,0 24,13 L24,37 A5,5 0 0,0 34,37 A5,5 0 0,0 40,30 A5,5 0 0,0 39,23 A5,5 0 0,0 29,8 Z"} %h4 Generative AI %p Scoped build of a production GenAI feature — RAG, agents, or custom model — inside your AWS account. Fixed scope, clear handover, your team owns it after.
.svc-trust-bar .svc-trust-inner %p.svc-trust-label Audited and certified .svc-trust-badges .svc-trust-badge %img{src: "/images/partners/2022_aws_partner.svg", alt: "AWS DevOps Competency Partner", loading: "lazy"} %span AWS DevOps Competency .svc-trust-badge %img{src: "/images/ISO-27001-certified_col.svg", alt: "ISO 27001 Certified", loading: "lazy"} %span ISO 27001 Certified .svc-trust-badge %img{src: "/images/partners/saas_dark_bckgnd.svg", alt: "AWS SaaS Competency", loading: "lazy"} %span AWS SaaS Competency
= partial "faq_artificialintelligence.html.haml"
%a#contact = partial("contact_forms/inbuilt_contact_form.html.haml") ```
_partials/faq_artificialintelligence.html.hamlOpen _partials/faq_artificialintelligence.html.haml. Keep the file's JSON-LD + .container.service-faq structure as-is — do NOT restructure. Update the six primary questions (the first six .faq-item blocks and their matching JSON-LD entries) so each addresses a buyer objection:
Replace the six primary Q&As (and their matching JSON-LD entries) with exactly these:
| Q | A |
|---|---|
| How do I choose between managed AI services and a consulting engagement? | Managed services (AI Factory) give you a compliant backbone with ongoing operations and fixed monthly fees. Consulting engagements are scoped pieces of work with clear deliverables and knowledge transfer. Most customers start with consulting for a specific feature and move to managed once multiple AI workloads are in production. |
| Where does our data sit? | In your AWS accounts. We deploy the AI Factory backbone and consulting artefacts inside your cloud tenancy. You own the infrastructure, the models, and the data. If you ever exit, everything stays. |
| How do you handle ISO 27001 and CPS 234? | We are ISO 27001 certified and work extensively with CPS 234 customers. Evidence packs export from the AI Factory for audit. Consulting engagements include a compliance review against your chosen framework. |
| What is your approach to AI safety and guardrails? | Guardrails are not a product add-on. For managed customers they are enforced at the platform layer and version-controlled in Git. For consulting engagements we bake the same controls into the build. See the Guardrails page for the full control list. |
| How quickly can we start? | Consulting engagements can start within two weeks. AI Factory onboarding takes four to six weeks for the first service. We will give you an exact timeline after a scoping call. |
| Who owns the output? | You do. All code, infrastructure, models, prompts, and evidence stay in your AWS account and your Git. We do not retain IP from customer engagements. |
Keep the four "common" Q&As at the bottom of the partial (cost, support, timeline, certifications) unchanged.
bash
bundle exec rake gen
grep -c "Managed Service" _site/artificialintelligence/index.html
grep -c "svc-wyg-card" _site/artificialintelligence/index.html
grep -q "Explore our AI offerings" _site/artificialintelligence/index.html && echo "OK"
grep -q "How do I choose between managed AI services" _site/artificialintelligence/index.html && echo "FAQ OK"
Expected: "Managed Service" count >= 1 (on the AI Factory card), "svc-wyg-card" count == 4, both "OK" lines print.
Start preview: bundle exec rake preview in one terminal.
Open http://localhost:4242/artificialintelligence/ in a browser. Confirm:
Stop the preview server (Ctrl+C) once satisfied.
bash
git add artificialintelligence/index.html.haml _partials/faq_artificialintelligence.html.haml
git commit -m "feat(ai): refresh hub page with router-style offering cards"
Files:
artificialintelligence/aifactory/index.html.haml_partials/faq_ai_factory.html.hamlSource: docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/ai-factory-one-pager.txt, ai-factory-pdf.txt, alistair-ai-factory-meeting.txt.
Open artificialintelligence/aifactory/index.html.haml. Keep lines 1–24 (the full --- block) as-is. Replace line 25 onwards.
```haml #content.page .container.inner %p.svc-eyebrow.center Managed Service %h2 The managed backbone for AI in production. %p.center Guardrails, agents, and MLOps pipelines deployed inside your AWS accounts. Ongoing operations by our team. Fixed monthly fee. 24/7 included. %p.center One platform, three managed services. Start with the one that fits today and extend as you grow. .flex-container %a.btn-primary.blue.findoutmore.center{:href=>"#contact"} Talk to Us %a.btn-secondary.center{:href=>"#how-it-works"} How AI Factory works
%a#what-you-get .svc-what-you-get .svc-wyg-inner %h2 The three managed services .svc-wyg-grid %a.svc-wyg-card.bg-green{:href => "/artificialintelligence/aifactory/agentic-ops/"} %p.svc-eyebrow Managed Service .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %circle{cx: "24", cy: "18", r: "6"} %path{d: "M12,40 C12,33 17,28 24,28 C31,28 36,33 36,40"} %circle{cx: "14", cy: "10", r: "2"} %circle{cx: "34", cy: "10", r: "2"} %line{x1: "14", y1: "12", x2: "20", y2: "15"} %line{x1: "34", y1: "12", x2: "28", y2: "15"} %h4 Agentic Ops %p Managed operations for persona-driven agents. Prompt libraries, audit trails, and live governance. Agents run under your engineers' identities. %a.svc-wyg-card.bg-blue{:href => "/artificialintelligence/aifactory/guardrails/"} %p.svc-eyebrow Managed Service .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M24,6 L38,12 L38,26 C38,34 24,42 24,42 C24,42 10,34 10,26 L10,12 Z"} %polyline{points: "18,24 22,28 30,20"} %h4 Guardrails %p Ten essential AI guardrails enforced at the platform layer. ISO 27001 and CPS 230 evidence packs exported on demand. %a.svc-wyg-card.bg-green{:href => "/artificialintelligence/aifactory/mlops/"} %p.svc-eyebrow Managed Service .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %line{x1: "8", y1: "40", x2: "40", y2: "40"} %polyline{points: "10,34 18,26 24,30 32,18 40,22"} %circle{cx: "40", cy: "22", r: "2", fill: "rgba(255,255,255,0.5)"} %line{x1: "8", y1: "10", x2: "8", y2: "40"} %h4 MLOps %p Managed model lifecycle for data science teams. Reproducible experiments, automated retraining, drift and accuracy dashboards.
%a#how-it-works .container.inner %h2 How AI Factory works %p.center Three managed services that fit together. Start where the need is today; add the others as your AI portfolio grows. .svc-cycle-wrapper %svg.svc-cycle-infinity{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 800 120", fill: "none", preserveAspectRatio: "none"} %path{d: "M10,60 C10,15 190,15 400,60 C610,105 790,105 790,60", stroke: "currentColor", "stroke-width" => "2", "stroke-dasharray" => "10,5"} %polygon{points: "400,54 410,60 400,66", fill: "currentColor"} .svc-cycle .svc-cycle-item %h3 Guardrails %p Policies, evidence packs, and data-protection controls deployed first. Every later service inherits them. .svc-cycle-item %h3 Agentic Ops %p Persona-driven agents stood up on top of the guardrails. Prompt libraries, identity-based execution, and live governance. .svc-cycle-item %h3 MLOps %p Custom model lifecycle added when data science work is in scope. Reproducible experiments, retraining, and drift monitoring.
.svc-trust-bar .svc-trust-inner %p.svc-trust-label Audited and certified .svc-trust-badges .svc-trust-badge %img{src: "/images/partners/2022_aws_partner.svg", alt: "AWS Advanced Partner", loading: "lazy"} %span AWS Advanced Partner .svc-trust-badge %img{src: "/images/ISO-27001-certified_col.svg", alt: "ISO 27001 Certified", loading: "lazy"} %span ISO 27001 Certified .svc-trust-badge %img{src: "/images/partners/saas_dark_bckgnd.svg", alt: "AWS SaaS Competency", loading: "lazy"} %span AWS SaaS Competency
.section-cta .section-inner .cta-content %h2.cta-heading Start with the service that fits today. %p.cta-sub Walk us through your current AI workloads and we will map the right entry point. .cta-actions %a.cta-primary{:href => "#contact"} Talk to Us
= partial "faq_ai_factory.html.haml"
.svc-crosslink-section .svc-crosslink-inner %h2 Want consulting instead? %p If you need a scoped engagement rather than an ongoing managed service, these may fit better. .svc-crosslinks %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/data/"} Data Integration %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/data/readiness.html"} Data Readiness %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/generativeai/"} Generative AI
%a#contact = partial("contact_forms/inbuilt_contact_form.html.haml") ```
_partials/faq_ai_factory.html.hamlOpen the file. Keep JSON-LD + .container.service-faq structure. Also fix the typo .faq_item → .faq-item on line 77. Replace the six primary .faq-item Q&As and their JSON-LD entries with:
| Q | A |
|---|---|
| What's included in the monthly fee? | Platform operations, guardrail enforcement, agent and model runtime management, 24/7 on-call, and continuous R&D updates to the factory itself. Excludes AWS consumption (Bedrock, compute, storage) — you pay AWS directly. |
| Who holds the AWS account and the data? | You do. AI Factory is deployed into your AWS accounts. All data, logs, prompts, and models stay in your tenancy. We access under federated least-privilege roles you control. |
| How is this different from running it ourselves? | You don't staff an AI platform team. You don't maintain prompt libraries, evidence packs, guardrail policies, or drift tooling. Our R&D crew ships updates continuously; you inherit them. |
| What happens if we decide to exit? | Everything stays. Infrastructure is version-controlled in your Git. Prompts, models, and evidence live in your AWS account. We run a knowledge-transfer sprint and step out. |
| Do we need all three services to start? | No. Start with whichever one fits the work you have in flight. Most customers begin with Guardrails or Agentic Ops and add MLOps when a data-science project starts. |
| How quickly does a new service come online? | Four to six weeks for the first service. Subsequent services reuse the same backbone and typically come online within two weeks. |
Keep the four "common" Q&As at the bottom unchanged.
bash
bundle exec rake gen
grep -c "svc-wyg-card" _site/artificialintelligence/aifactory/index.html
grep -q "The managed backbone for AI in production" _site/artificialintelligence/aifactory/index.html && echo "HERO OK"
grep -q "id=\"how-it-works\"" _site/artificialintelligence/aifactory/index.html && echo "ANCHOR OK"
grep -q "svc-crosslink-section" _site/artificialintelligence/aifactory/index.html && echo "CROSSLINKS OK"
grep -q "How quickly does a new service come online" _site/artificialintelligence/aifactory/index.html && echo "FAQ OK"
Expected: count == 3 (three service cards), all four OK lines print.
Preview http://localhost:4242/artificialintelligence/aifactory/. Confirm hero eyebrow "Managed Service", two CTAs, three service cards each with "Managed Service" eyebrow, three-step cycle, trust bar, section-cta, FAQ, crosslinks to consulting siblings, contact form.
bash
git add artificialintelligence/aifactory/index.html.haml _partials/faq_ai_factory.html.haml
git commit -m "feat(ai): refresh AI Factory mini-hub with stepped framework layout"
Files:
artificialintelligence/aifactory/agentic-ops/index.html.haml_partials/faq_agentic_ai.html.hamlSource: existing on-page copy (strong), plus docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/alistair-ai-factory-meeting.txt and exec-meeting.txt.
Open artificialintelligence/aifactory/agentic-ops/index.html.haml. The current frontmatter (lines 1–13) is missing service_faq_* keys. Replace lines 1–13 with:
layout: "base" type: "service" title: "Agentic Ops | Managed AI agent operations" banner: "/images/banners/webp/mwm47241-devops.webp" mobile_banner: /images/banners/webp/480/mwm47241-devops-480w.webp tablet_banner: /images/banners/webp/800/mwm47241-devops-800w.webp banner_title: "Agentic Ops" banner_sub: "Managed operations for persona-driven AI agents" meta_title: "Agentic Ops | Managed AI agent operations on AWS | base2Services" meta_description: "Managed Agentic Ops: persona-driven AI agents with prompt libraries, guardrails, monitoring and full auditability in your AWS. Fixed monthly fee. 24/7 included." description: "Managed Agentic Ops gives your developers a secure, always-on environment for persona-driven agents. Prompt libraries, guardrails, audit trails, and 24/7 operations." tags: ["Agentic Ops", "persona agents", "prompt governance", "AI compliance", "managed AI"] search: "high" flyout_active: false exit_popup_active: false
service: "agentic_ops" service_faq_title: "Agentic Ops FAQ" service_faq_description: "Frequently asked questions about our managed Agentic Ops service" service_faq_service_title: "Agentic Ops" — ```
Replace everything from line 14 (#content.page) to the end of file with:
```haml #content.page .container.inner %p.svc-eyebrow.center Managed Service %h2 Managed operations for persona-driven AI agents. %p.center Prompt libraries, guardrails, audit trails, and live governance. Agents run under your engineers' identities in your AWS account. Fixed monthly fee. 24/7 included. %p.center You build the personas that matter to your product. We operate the platform that keeps them secure, auditable, and always on. .flex-container %a.btn-primary.blue.findoutmore.center{:href=>"#contact"} Talk to Us
%a#what-you-get .svc-what-you-get .svc-wyg-inner %h2 What you get .svc-wyg-grid .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %rect{x: "10", y: "18", width: "28", height: "22", rx: "2"} %path{d: "M16,18 V12 A8,8 0 0,1 32,12 V18"} %circle{cx: "24", cy: "29", r: "2"} %h4 Engineer-identity agents %p Every agent executes under the triggering engineer's IAM role. CloudTrail shows who did what. No shared service accounts. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %line{x1: "12", y1: "8", x2: "12", y2: "28"} %circle{cx: "30", cy: "12", r: "4"} %circle{cx: "12", cy: "32", r: "4"} %path{d: "M30,16 V22 A4,4 0 0,1 26,26 H18 A4,4 0 0,0 14,30"} %h4 Version-controlled prompts %p Prompt libraries, context limits, and per-persona guardrails live in Git. Promoted through CI/CD. Every change reviewable. .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M24,6 L38,12 L38,26 C38,34 24,42 24,42 C24,42 10,34 10,26 L10,12 Z"} %polyline{points: "18,24 22,28 30,20"} %h4 Live governance %p Security Sentinel flags injection and misuse. Compliance Guard writes every agent decision to an evidence lake. Ready for audit. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %rect{x: "8", y: "10", width: "32", height: "24", rx: "2"} %line{x1: "14", y1: "18", x2: "34", y2: "18"} %line{x1: "14", y1: "24", x2: "28", y2: "24"} %line{x1: "16", y1: "40", x2: "32", y2: "40"} %h4 Real-time dashboards %p Usage, cost, accuracy, and compliance visible in one place. Drill into any agent interaction and trace it to the engineer who triggered it. .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %line{x1: "24", y1: "6", x2: "24", y2: "18"} %path{d: "M18,18 H30 L34,24 L30,30 H18 L14,24 Z"} %line{x1: "12", y1: "36", x2: "36", y2: "36"} %line{x1: "18", y1: "40", x2: "30", y2: "40"} %h4 Data protection at source %p Ingestion framework anonymises sensitive columns before anything reaches non-production. Anomalies flagged automatically. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M36,32 C36,36 30,40 24,40 C18,40 12,36 12,32 L12,22 C12,18 18,14 24,14 C30,14 36,18 36,22 Z"} %circle{cx: "24", cy: "10", r: "3"} %line{x1: "18", y1: "28", x2: "22", y2: "28"} %line{x1: "26", y1: "28", x2: "30", y2: "28"} %h4 24/7 operations %p On-call engineers on Slack, email, and phone. We patch the framework and fold in new agent protocols across all tenants.
.svc-wyg-detail
%h3 Everything included. Fixed monthly fee.
.svc-deliverables
.svc-del-group
%h4 Operations
%ul
%li 24/7 on-call and incident response
%li Agent runtime monitoring and cost controls
%li Framework patching and new-protocol roll-outs
%li Quota and rate-limit management
%li Monthly service review with usage and roadmap
.svc-del-group
%h4 Engineering
%ul
%li Prompt library and persona scaffolding
%li Git-based prompt promotion pipeline
%li Per-persona guardrail authoring and review
%li Integration of new models and tools
%li Advisory on agent architecture and cost
.svc-del-group
%h4 Compliance
%ul
%li ISO 27001 evidence pack export
%li CPS 230 control mapping
%li Complete audit trail for every agent call
%li Data classification and anonymisation
%li Incident evidence preparation
.container.inner %h2 How it works %p.center Agentic Ops is not a project. It runs alongside your product team, week after week. .svc-cycle-wrapper %svg.svc-cycle-infinity{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 800 120", fill: "none", preserveAspectRatio: "none"} %path{d: "M10,60 C10,15 190,15 400,60 C610,105 790,105 790,60 C790,15 610,15 400,60 C190,105 10,105 10,60 Z", stroke: "currentColor", "stroke-width" => "2", "stroke-dasharray" => "10,5"} %polygon{points: "300,32 310,36 303,42", fill: "currentColor"} %polygon{points: "500,88 490,84 497,78", fill: "currentColor"} .svc-cycle .svc-cycle-item %h3 Assess %p We map your current agents, personas, and guardrail gaps. Onboarding and ongoing. .svc-cycle-item %h3 Build %p Prompt libraries, identity scaffolding, and per-persona guardrails. Foundations your team extends. .svc-cycle-item %h3 Operate %p 24/7 runtime oversight. Cost, accuracy, and misuse monitored. Incidents handled before you see them. .svc-cycle-item %h3 Improve %p Weekly iterations on prompts, policies, and tooling. Framework updates folded in continuously.
.svc-trust-bar .svc-trust-inner %p.svc-trust-label Audited and certified .svc-trust-badges .svc-trust-badge %img{src: "/images/partners/2022_aws_partner.svg", alt: "AWS Advanced Partner", loading: "lazy"} %span AWS Advanced Partner .svc-trust-badge %img{src: "/images/ISO-27001-certified_col.svg", alt: "ISO 27001 Certified", loading: "lazy"} %span ISO 27001 Certified .svc-trust-badge %img{src: "/images/partners/saas_dark_bckgnd.svg", alt: "AWS SaaS Competency", loading: "lazy"} %span AWS SaaS Competency
.section-cta .section-inner .cta-content %h2.cta-heading See Agentic Ops running in your environment. %p.cta-sub Walk us through your agent roadmap and we will scope the onboarding. .cta-actions %a.cta-primary{:href => "#contact"} Talk to Us
= partial "faq_agentic_ai.html.haml"
.svc-crosslink-section .svc-crosslink-inner %h2 Not quite what you need? %p Every team is different. These may fit better. .svc-crosslinks %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/guardrails/"} Guardrails %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/mlops/"} MLOps %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/"} AI Factory
%a#contact = partial("contact_forms/inbuilt_contact_form.html.haml") ```
_partials/faq_agentic_ai.html.hamlOpen the file. Keep the JSON-LD + .container.service-faq structure. Replace the six primary .faq-item blocks (and matching JSON-LD entries) with the managed-service objection set:
| Q | A |
|---|---|
| What counts as one agent for billing? | A persona. A persona bundles a named role, a prompt library, a guardrail set, and an IAM identity. Adding more seats or interactions inside the same persona does not change pricing. |
| Can our developers still iterate fast? | Yes. Developers define personas and push prompt changes through normal Git flow. Promotion to production is CI/CD-gated; day-to-day iteration is unchanged. |
| Who sees our prompts and data? | Only your team. Prompts live in your Git repo. Agent execution stays in your AWS account under engineer-scoped IAM. We access for operations under federated roles you control. |
| What happens when we want to change models? | The managed framework abstracts the provider. Switching between Bedrock, Anthropic, or OpenAI is a configuration change, not a rewrite. We roll out and regression-test the change. |
| What is the SLA? | 99.9% monthly uptime on the managed framework. P1 incidents acknowledged within 15 minutes. Runbooks and postmortems shared after each incident. |
| How do we exit? | Everything is already in your AWS account and your Git. We run a knowledge transfer sprint — two to four weeks — and hand over the operating runbooks. |
Keep the remaining .faq-item cards (persona types, deploy speed, updates, compliance frameworks) as-is.
bash
bundle exec rake gen
grep -c "svc-wyg-card" _site/artificialintelligence/aifactory/agentic-ops/index.html
grep -q "Managed Service" _site/artificialintelligence/aifactory/agentic-ops/index.html && echo "EYEBROW OK"
grep -q "Assess" _site/artificialintelligence/aifactory/agentic-ops/index.html && echo "CYCLE OK"
grep -q "faq_agentic_ai" _site/artificialintelligence/aifactory/agentic-ops/index.html || echo "FAQ partial rendered (inline)"
grep -q "What counts as one agent for billing" _site/artificialintelligence/aifactory/agentic-ops/index.html && echo "FAQ OK"
grep -q "/artificialintelligence/aifactory/guardrails/" _site/artificialintelligence/aifactory/agentic-ops/index.html && echo "CROSSLINK OK"
Expected: count == 6 (six what-you-get cards), EYEBROW/CYCLE/FAQ/CROSSLINK OK lines print.
Preview http://localhost:4242/artificialintelligence/aifactory/agentic-ops/. Confirm: eyebrow "Managed Service", six what-you-get cards, Operations/Engineering/Compliance columns, four-step cycle Assess→Build→Operate→Improve, trust bar, section-cta, FAQ, crosslinks to Guardrails/MLOps/AI Factory, contact form.
bash
git add artificialintelligence/aifactory/agentic-ops/index.html.haml _partials/faq_agentic_ai.html.haml
git commit -m "feat(ai): refresh Agentic Ops page with managed-service template"
Files:
_partials/faq_guardrails.html.hamlartificialintelligence/aifactory/guardrails/index.html.hamlSource: existing on-page copy (strong — the ten guardrails list is the authoritative content).
Create _partials/faq_guardrails.html.haml with:
```haml -# Guardrails FAQ Partial -# Usage: = partial "faq_guardrails.html.haml"
-# SEO Structured Data for FAQ %script{:type => "application/ld+json"} :plain { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "Are guardrails a separate product?", "acceptedAnswer": { "@type": "Answer", "text": "No. Guardrails are the safety floor of the AI Factory. They are enforced in the platform layer that runs Agentic Ops and MLOps. You can engage this page's scope as a stand-alone managed service if you only need the guardrails today and will add agents or MLOps later." } }, { "@type": "Question", "name": "Which frameworks do the guardrails map to?", "acceptedAnswer": { "@type": "Answer", "text": "ISO 27001 and CPS 230 out of the box. APRA CPS 234 and SOC 2 with light mapping work during onboarding. The policies are version-controlled; adding a new framework is a change set rather than a rewrite." } }, { "@type": "Question", "name": "How are the guardrails enforced?", "acceptedAnswer": { "@type": "Answer", "text": "Through platform controls, not policy documents. Data is anonymised at ingestion. Agents run under engineer identities. Every decision is logged to an immutable evidence lake. Compliance Guard writes the record; Security Sentinel flags the misuse." } }, { "@type": "Question", "name": "Can we add our own guardrails?", "acceptedAnswer": { "@type": "Answer", "text": "Yes. The ten core guardrails are the baseline. Customer-specific policies sit on top — internal data-classification rules, regional residency requirements, or product-specific content filters. All version-controlled in your Git." } }, { "@type": "Question", "name": "Who owns the evidence pack?", "acceptedAnswer": { "@type": "Answer", "text": "You do. Evidence lives in your AWS account. We export it in the format your auditors ask for. If you end the service, the evidence stays." } }, { "@type": "Question", "name": "How quickly are new regulations absorbed?", "acceptedAnswer": { "@type": "Answer", "text": "Our R&D crew tracks incoming AI regulation. New controls are drafted, tested in a reference tenant, and rolled out across managed customers as a versioned change. You inherit the update without a procurement cycle." } } ] }
.svc-faq-section .svc-faq-inner %h2 Frequently asked questions .svc-faq-grid .svc-faq-card %h4 Are guardrails a separate product? %p No. Guardrails are the safety floor of the AI Factory. They are enforced in the platform layer that runs Agentic Ops and MLOps. You can engage this page's scope as a stand-alone managed service if you only need the guardrails today and will add agents or MLOps later. .svc-faq-card %h4 Which frameworks do the guardrails map to? %p ISO 27001 and CPS 230 out of the box. APRA CPS 234 and SOC 2 with light mapping work during onboarding. The policies are version-controlled; adding a new framework is a change set rather than a rewrite. .svc-faq-card %h4 How are the guardrails enforced? %p Through platform controls, not policy documents. Data is anonymised at ingestion. Agents run under engineer identities. Every decision is logged to an immutable evidence lake. Compliance Guard writes the record; Security Sentinel flags the misuse. .svc-faq-card %h4 Can we add our own guardrails? %p Yes. The ten core guardrails are the baseline. Customer-specific policies sit on top — internal data-classification rules, regional residency requirements, or product-specific content filters. All version-controlled in your Git. .svc-faq-card %h4 Who owns the evidence pack? %p You do. Evidence lives in your AWS account. We export it in the format your auditors ask for. If you end the service, the evidence stays. .svc-faq-card %h4 How quickly are new regulations absorbed? %p Our R&D crew tracks incoming AI regulation. New controls are drafted, tested in a reference tenant, and rolled out across managed customers as a versioned change. You inherit the update without a procurement cycle. ```
Open artificialintelligence/aifactory/guardrails/index.html.haml. Replace lines 1–13 with:
layout: "base" type: "service" title: "AI Guardrails | Ten essential managed guardrails" banner: "/images/banners/webp/mwm47241-devops.webp" mobile_banner: /images/banners/webp/480/mwm47241-devops-480w.webp tablet_banner: /images/banners/webp/800/mwm47241-devops-800w.webp banner_title: "AI Guardrails" banner_sub: "Ten essential safeguards enforced at the platform layer" meta_title: "AI Guardrails | Managed data protection and compliance for AI | base2Services" meta_description: "Ten essential AI guardrails enforced at the platform layer. ISO 27001 and CPS 230 evidence out of the box. Part of AI Factory." description: "AI Guardrails provides ten managed safeguards that protect data, meet ISO and CPS requirements, and keep AI deployments auditable. Enforced through platform controls, not policy documents." tags: ["AI Guardrails", "AI compliance", "data protection", "AI governance", "responsible AI"] search: "high" flyout_active: false exit_popup_active: false
service: "guardrails" service_faq_title: "AI Guardrails FAQ" service_faq_description: "Frequently asked questions about our managed AI guardrails service" service_faq_service_title: "AI Guardrails" — ```
Replace everything from line 14 (#content.page) to the end of file with:
```haml #content.page .container.inner %p.svc-eyebrow.center Managed Service %h2 Ten essential AI guardrails, managed for you. %p.center Data protection, accountability, transparency, and oversight enforced through platform controls rather than policy documents. ISO 27001 and CPS 230 evidence exported on demand. Fixed monthly fee. 24/7 included. %p.center Your engineers build the product. We keep the safety floor. .flex-container %a.btn-primary.blue.findoutmore.center{:href=>"#contact"} Talk to Us
%a#what-you-get .svc-what-you-get .svc-wyg-inner %h2 What you get .svc-wyg-grid .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M24,6 L38,12 L38,26 C38,34 24,42 24,42 C24,42 10,34 10,26 L10,12 Z"} %polyline{points: "18,24 22,28 30,20"} %h4 Data governance and security %p Classification, encryption, and provenance tracking enforced at ingestion. Cybersecurity controls applied to every AI data flow. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %rect{x: "10", y: "8", width: "28", height: "32", rx: "2"} %polyline{points: "16,18 20,22 28,14"} %line{x1: "16", y1: "28", x2: "32", y2: "28"} %line{x1: "16", y1: "34", x2: "28", y2: "34"} %h4 Accountability process %p Clear ownership, internal capability, and regulatory compliance strategy. Training programs for the teams that build and operate agents. .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M24,6 L42,40 L6,40 Z"} %line{x1: "24", y1: "20", x2: "24", y2: "30"} %circle{cx: "24", cy: "34", r: "1.5", fill: "rgba(255,255,255,0.7)"} %h4 Risk management %p Stakeholder-impact assessments and ongoing risk reviews. Mitigations mapped to system usage patterns and updated continuously. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %circle{cx: "24", cy: "24", r: "4"} %path{d: "M8,24 A16,16 0 0,1 40,24"} %path{d: "M40,24 A16,16 0 0,1 8,24"} %line{x1: "24", y1: "8", x2: "24", y2: "12"} %line{x1: "24", y1: "36", x2: "24", y2: "40"} %h4 Human control and oversight %p Intervention points across the AI lifecycle. Meaningful human review for decisions that matter. Documented escalation paths. .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %circle{cx: "24", cy: "24", r: "14"} %line{x1: "24", y1: "16", x2: "24", y2: "24"} %line{x1: "24", y1: "30", x2: "24", y2: "32"} %h4 User disclosure and challenge %p End users are told when they are talking to AI. Clear paths to challenge a decision, outcome, or interaction. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %rect{x: "10", y: "8", width: "24", height: "32", rx: "2"} %line{x1: "16", y1: "16", x2: "28", y2: "16"} %line{x1: "16", y1: "22", x2: "28", y2: "22"} %line{x1: "16", y1: "28", x2: "24", y2: "28"} %h4 Record keeping and testing %p Comprehensive AI inventory. Pre-deployment testing and continuous monitoring for behaviour change or unintended consequences.
.svc-wyg-detail
%h3 Everything included. Fixed monthly fee.
.svc-deliverables
.svc-del-group
%h4 Operations
%ul
%li 24/7 monitoring of guardrail enforcement
%li Continuous framework patching
%li Policy drift detection and remediation
%li Incident response for safety violations
%li Monthly compliance posture review
.svc-del-group
%h4 Engineering
%ul
%li Ten core guardrails deployed as platform controls
%li Custom-policy authoring and review
%li Evidence-lake schema and export pipelines
%li Data-classification tooling
%li Advisory on new AI regulation
.svc-del-group
%h4 Compliance
%ul
%li ISO 27001 evidence pack export
%li CPS 230 control mapping
%li APRA CPS 234 mapping on request
%li Auditor-facing read-only access
%li Stakeholder-engagement records
.container.inner %h2 How it works %p.center Guardrails are the first service deployed. Agentic Ops and MLOps inherit them. .svc-cycle-wrapper %svg.svc-cycle-infinity{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 800 120", fill: "none", preserveAspectRatio: "none"} %path{d: "M10,60 C10,15 190,15 400,60 C610,105 790,105 790,60 C790,15 610,15 400,60 C190,105 10,105 10,60 Z", stroke: "currentColor", "stroke-width" => "2", "stroke-dasharray" => "10,5"} %polygon{points: "300,32 310,36 303,42", fill: "currentColor"} %polygon{points: "500,88 490,84 497,78", fill: "currentColor"} .svc-cycle .svc-cycle-item %h3 Assess %p Your data, frameworks, and current controls. We map the gap to the ten-guardrail baseline. .svc-cycle-item %h3 Build %p Platform controls deployed. Policies authored in Git. Evidence lake stood up inside your AWS account. .svc-cycle-item %h3 Operate %p 24/7 enforcement monitoring. Every AI decision logged. Violations surfaced before auditors ask. .svc-cycle-item %h3 Improve %p New regulations tracked and absorbed. Policies iterated with your product team. Framework versions rolled forward.
.svc-trust-bar .svc-trust-inner %p.svc-trust-label Audited and certified .svc-trust-badges .svc-trust-badge %img{src: "/images/partners/2022_aws_partner.svg", alt: "AWS Advanced Partner", loading: "lazy"} %span AWS Advanced Partner .svc-trust-badge %img{src: "/images/ISO-27001-certified_col.svg", alt: "ISO 27001 Certified", loading: "lazy"} %span ISO 27001 Certified .svc-trust-badge %img{src: "/images/partners/saas_dark_bckgnd.svg", alt: "AWS SaaS Competency", loading: "lazy"} %span AWS SaaS Competency
.section-cta .section-inner .cta-content %h2.cta-heading See the ten guardrails mapped to your stack. %p.cta-sub Send us your current compliance posture and we will show you what changes. .cta-actions %a.cta-primary{:href => "#contact"} Talk to Us
= partial "faq_guardrails.html.haml"
.svc-crosslink-section .svc-crosslink-inner %h2 Not quite what you need? %p Every team is different. These may fit better. .svc-crosslinks %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/agentic-ops/"} Agentic Ops %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/mlops/"} MLOps %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/"} AI Factory
%a#contact = partial("contact_forms/inbuilt_contact_form.html.haml") ```
bash
bundle exec rake gen
grep -c "svc-wyg-card" _site/artificialintelligence/aifactory/guardrails/index.html
grep -q "Managed Service" _site/artificialintelligence/aifactory/guardrails/index.html && echo "EYEBROW OK"
grep -q "Ten essential AI guardrails" _site/artificialintelligence/aifactory/guardrails/index.html && echo "HERO OK"
grep -q "Are guardrails a separate product" _site/artificialintelligence/aifactory/guardrails/index.html && echo "FAQ OK"
grep -q "/artificialintelligence/aifactory/agentic-ops/" _site/artificialintelligence/aifactory/guardrails/index.html && echo "CROSSLINK OK"
Expected: count == 6, all OK lines print.
Preview http://localhost:4242/artificialintelligence/aifactory/guardrails/. Confirm hero, six what-you-get cards, three deliverable columns, four-step cycle, trust bar, section-cta, FAQ (six new cards), crosslinks, contact form.
bash
git add _partials/faq_guardrails.html.haml artificialintelligence/aifactory/guardrails/index.html.haml
git commit -m "feat(ai): refresh Guardrails page with managed-service template"
Files:
artificialintelligence/aifactory/mlops/index.html.haml_partials/faq_mlops.html.hamlSource: docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/mlops-as-a-service.txt, mlops-ebook.txt, mlops-partnership-spec.txt.
Open artificialintelligence/aifactory/mlops/index.html.haml. Replace lines 1–13 with:
layout: "base" type: "service" title: "MLOps | Managed model lifecycle on AWS" banner: "/images/banners/webp/mwm47241-devops.webp" mobile_banner: /images/banners/webp/480/mwm47241-devops-480w.webp tablet_banner: /images/banners/webp/800/mwm47241-devops-800w.webp banner_title: "MLOps" banner_sub: "Managed model lifecycle for data science teams" meta_title: "MLOps | Managed ML lifecycle on AWS | base2Services" meta_description: "Managed MLOps: reproducible pipelines, automated retraining, drift and accuracy dashboards on a compliant AWS backbone. Fixed monthly fee. 24/7 included." description: "Managed MLOps gives data science teams a reproducible, compliant lifecycle for custom models. Experiments, pipelines, retraining, and drift monitoring — run by our team, hosted in your AWS." tags: ["MLOps", "model lifecycle", "AI compliance", "data science", "managed AI"] search: "high" flyout_active: false exit_popup_active: false
service: "mlops" service_faq_title: "MLOps FAQ" service_faq_description: "Frequently asked questions about our managed MLOps service" service_faq_service_title: "MLOps" — ```
Replace everything from line 14 (#content.page) to the end of file with:
```haml #content.page .container.inner %p.svc-eyebrow.center Managed Service %h2 Managed model lifecycle for data science teams. %p.center Reproducible experiments, automated retraining, drift and accuracy dashboards on a compliant AWS backbone. Fixed monthly fee. 24/7 included. %p.center Your data scientists build the models. We run the lifecycle around them. .flex-container %a.btn-primary.blue.findoutmore.center{:href=>"#contact"} Talk to Us
%a#what-you-get .svc-what-you-get .svc-wyg-inner %h2 What you get .svc-wyg-grid .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %line{x1: "12", y1: "8", x2: "12", y2: "28"} %circle{cx: "30", cy: "12", r: "4"} %circle{cx: "12", cy: "32", r: "4"} %path{d: "M30,16 V22 A4,4 0 0,1 26,26 H18 A4,4 0 0,0 14,30"} %h4 Reproducible experiments %p Every dataset, feature set, and hyper-parameter version-controlled. Deterministic re-runs for audits or root-cause analysis. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %polygon{points: "20,8 10,20 18,20 18,40 22,40 22,20 30,20"} %polygon{points: "28,40 38,28 30,28 30,8 26,8 26,28"} %h4 Automated pipelines %p Schedule- or event-driven retraining. Candidate models walk from staging to production with no manual steps. .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %rect{x: "8", y: "10", width: "32", height: "24", rx: "2"} %polyline{points: "14,26 20,18 26,22 34,14"} %line{x1: "14", y1: "30", x2: "34", y2: "30", "stroke-dasharray" => "2,2"} %h4 Accuracy and drift monitoring %p Live predictions compared to ground truth. Precision, recall, and cost-per-prediction tracked with alerts on threshold breach. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %line{x1: "22", y1: "6", x2: "22", y2: "18"} %path{d: "M16,18 H28 L32,24 L28,30 H16 L12,24 Z"} %line{x1: "10", y1: "36", x2: "38", y2: "36"} %line{x1: "18", y1: "40", x2: "30", y2: "40"} %h4 Data-ingestion framework %p Raw data pulled, transformed, and sensitive columns anonymised before reaching non-production. Model improves, customer data stays private. .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %rect{x: "8", y: "14", width: "32", height: "20", rx: "2"} %line{x1: "14", y1: "22", x2: "20", y2: "22"} %line{x1: "14", y1: "28", x2: "34", y2: "28"} %circle{cx: "30", cy: "22", r: "3", fill: "rgba(255,255,255,0.4)"} %h4 Full compliance and audit %p Every experiment, deployment, and promotion logged. Evidence packs exported to auditors for ISO 27001, CPS 230, and SOC 2. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M36,32 C36,36 30,40 24,40 C18,40 12,36 12,32 L12,22 C12,18 18,14 24,14 C30,14 36,18 36,22 Z"} %circle{cx: "24", cy: "10", r: "3"} %line{x1: "18", y1: "28", x2: "22", y2: "28"} %line{x1: "26", y1: "28", x2: "30", y2: "28"} %h4 24/7 managed operations %p GPU fleet monitoring, runtime patching, framework upgrades. Your data scientists focus on experiments, not platform upkeep.
.svc-wyg-detail
%h3 Everything included. Fixed monthly fee.
.svc-deliverables
.svc-del-group
%h4 Operations
%ul
%li 24/7 GPU and inference fleet monitoring
%li Runtime patching and framework upgrades
%li Pipeline orchestration and scheduling
%li Incident response for training failures
%li Monthly service review with accuracy and cost
.svc-del-group
%h4 Engineering
%ul
%li Reproducible experiment workspaces
%li Automated retraining and promotion pipelines
%li Feature store and dataset versioning
%li Accuracy and drift dashboard authoring
%li Advisory on model architecture and tooling
.svc-del-group
%h4 Compliance
%ul
%li Deterministic re-runs for audit
%li Model lineage and provenance records
%li ISO 27001 and CPS 230 evidence packs
%li Data classification and anonymisation
%li Fairness and bias monitoring
.container.inner %h2 How it works %p.center MLOps runs week after week alongside your data science team. .svc-cycle-wrapper %svg.svc-cycle-infinity{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 800 120", fill: "none", preserveAspectRatio: "none"} %path{d: "M10,60 C10,15 190,15 400,60 C610,105 790,105 790,60 C790,15 610,15 400,60 C190,105 10,105 10,60 Z", stroke: "currentColor", "stroke-width" => "2", "stroke-dasharray" => "10,5"} %polygon{points: "300,32 310,36 303,42", fill: "currentColor"} %polygon{points: "500,88 490,84 497,78", fill: "currentColor"} .svc-cycle .svc-cycle-item %h3 Assess %p Your models, data sources, and lifecycle gaps. Onboarding and ongoing. .svc-cycle-item %h3 Build %p Reproducible workspaces, retraining pipelines, drift and accuracy dashboards. Foundations your data scientists extend. .svc-cycle-item %h3 Operate %p 24/7 runtime oversight. Training and inference monitored. Failures caught and triaged before you see them. .svc-cycle-item %h3 Improve %p Weekly iterations on pipelines, monitoring, and tooling. Framework upgrades rolled forward.
.svc-trust-bar .svc-trust-inner %p.svc-trust-label Audited and certified .svc-trust-badges .svc-trust-badge %img{src: "/images/partners/2022_aws_partner.svg", alt: "AWS Advanced Partner", loading: "lazy"} %span AWS Advanced Partner .svc-trust-badge %img{src: "/images/ISO-27001-certified_col.svg", alt: "ISO 27001 Certified", loading: "lazy"} %span ISO 27001 Certified .svc-trust-badge %img{src: "/images/partners/saas_dark_bckgnd.svg", alt: "AWS SaaS Competency", loading: "lazy"} %span AWS SaaS Competency
.section-cta .section-inner .cta-content %h2.cta-heading See MLOps running against your models. %p.cta-sub Walk us through a current model and we will show you the lifecycle wrapped around it. .cta-actions %a.cta-primary{:href => "#contact"} Talk to Us
= partial "faq_mlops.html.haml"
.svc-crosslink-section .svc-crosslink-inner %h2 Not quite what you need? %p Every team is different. These may fit better. .svc-crosslinks %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/agentic-ops/"} Agentic Ops %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/guardrails/"} Guardrails %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/"} AI Factory
%a#contact = partial("contact_forms/inbuilt_contact_form.html.haml") ```
_partials/faq_mlops.html.hamlOpen the file. Keep the JSON-LD + .container.service-faq structure. Replace the six primary .faq-item blocks (and matching JSON-LD entries) with:
| Q | A |
|---|---|
| Does this replace our data scientists? | No. Your data scientists still build the models. We run the lifecycle — experiment tracking, pipelines, monitoring, retraining, and compliance — so they spend time on modelling, not plumbing. |
| Which frameworks and tools are supported? | TensorFlow, PyTorch, scikit-learn, XGBoost, LightGBM, MLflow, Kubeflow, and SageMaker. Custom frameworks integrate through the same pipeline abstraction. |
| Where do models and training data live? | In your AWS account. Models in your registry. Training data in your S3. We operate under least-privilege federated roles you control. |
| What about GPUs and cost? | We size, monitor, and rightsize the fleet. Spot and on-demand blended to hit your cost target. Overruns on the managed service are on us; AWS consumption you pay directly. |
| What is the SLA? | 99.9% monthly uptime on the managed lifecycle control plane. Inference endpoints sized to your latency target. Training runs tracked to completion with automatic retries. |
| How do we exit? | Pipelines, models, and dashboards stay in your AWS account and your Git. We run a knowledge transfer sprint and hand over the operating runbooks. |
Keep the remaining cards (reproducible experiments, deployment, retraining, frameworks, deploy speed, maintenance, compliance) as-is.
bash
bundle exec rake gen
grep -c "svc-wyg-card" _site/artificialintelligence/aifactory/mlops/index.html
grep -q "Managed Service" _site/artificialintelligence/aifactory/mlops/index.html && echo "EYEBROW OK"
grep -q "Assess" _site/artificialintelligence/aifactory/mlops/index.html && echo "CYCLE OK"
grep -q "Does this replace our data scientists" _site/artificialintelligence/aifactory/mlops/index.html && echo "FAQ OK"
grep -q "/artificialintelligence/aifactory/guardrails/" _site/artificialintelligence/aifactory/mlops/index.html && echo "CROSSLINK OK"
Expected: count == 6, all OK lines print.
Preview http://localhost:4242/artificialintelligence/aifactory/mlops/. Confirm hero, six cards, three deliverable columns, cycle, trust bar, section-cta, FAQ, crosslinks, contact form.
bash
git add artificialintelligence/aifactory/mlops/index.html.haml _partials/faq_mlops.html.haml
git commit -m "feat(ai): refresh MLOps page with managed-service template"
Files:
_partials/faq_data_integration.html.hamlartificialintelligence/data/index.html.hamlSource: existing on-page copy is the authoritative source (no dedicated research document). Fall back to hub/mini-hub tone.
Create _partials/faq_data_integration.html.haml with:
```haml -# Data Integration FAQ Partial -# Usage: = partial "faq_data_integration.html.haml"
-# SEO Structured Data for FAQ %script{:type => "application/ld+json"} :plain { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "How long is a typical Data Integration engagement?", "acceptedAnswer": { "@type": "Answer", "text": "Six to twelve weeks depending on source systems. Discovery is one to two weeks, design two to three, delivery the remainder. We write the scope and acceptance criteria before anything is built." } }, { "@type": "Question", "name": "What do we own at the end?", "acceptedAnswer": { "@type": "Answer", "text": "Everything. Pipelines, infrastructure as code, runbooks, and documentation stay in your AWS account and your Git. You own the IP of anything we build from your data." } }, { "@type": "Question", "name": "How is this different from buying an ETL tool?", "acceptedAnswer": { "@type": "Answer", "text": "You're not buying a tool; you're getting a pipeline built on native AWS services with no third-party licence to renew. No per-user or per-seat limits. No forgotten integrations breaking in the night because a vendor changed their API." } }, { "@type": "Question", "name": "How do you handle PII and compliance?", "acceptedAnswer": { "@type": "Answer", "text": "Automated washing detects and anonymises PII and PHI before data leaves the source. Policy-as-code enforces classification, retention, and access rules. Evidence is captured for GDPR, CCPA, HIPAA, ISO 27001, and SOC 2." } }, { "@type": "Question", "name": "Can you run the pipelines for us after the engagement?", "acceptedAnswer": { "@type": "Answer", "text": "Yes, if you want. The AI Factory managed service picks up operations if you need ongoing 24/7 cover. Otherwise we do a knowledge transfer sprint and step out." } }, { "@type": "Question", "name": "Do you work alongside our existing data team?", "acceptedAnswer": { "@type": "Answer", "text": "That is the expectation. We design with your team, pair on build, and document as we go. The engagement ends with a handover workshop, not an account-management phase." } } ] }
.svc-faq-section .svc-faq-inner %h2 Frequently asked questions .svc-faq-grid .svc-faq-card %h4 How long is a typical Data Integration engagement? %p Six to twelve weeks depending on source systems. Discovery is one to two weeks, design two to three, delivery the remainder. We write the scope and acceptance criteria before anything is built. .svc-faq-card %h4 What do we own at the end? %p Everything. Pipelines, infrastructure as code, runbooks, and documentation stay in your AWS account and your Git. You own the IP of anything we build from your data. .svc-faq-card %h4 How is this different from buying an ETL tool? %p You're not buying a tool; you're getting a pipeline built on native AWS services with no third-party licence to renew. No per-user or per-seat limits. No forgotten integrations breaking in the night because a vendor changed their API. .svc-faq-card %h4 How do you handle PII and compliance? %p Automated washing detects and anonymises PII and PHI before data leaves the source. Policy-as-code enforces classification, retention, and access rules. Evidence is captured for GDPR, CCPA, HIPAA, ISO 27001, and SOC 2. .svc-faq-card %h4 Can you run the pipelines for us after the engagement? %p Yes, if you want. The AI Factory managed service picks up operations if you need ongoing 24/7 cover. Otherwise we do a knowledge transfer sprint and step out. .svc-faq-card %h4 Do you work alongside our existing data team? %p That is the expectation. We design with your team, pair on build, and document as we go. The engagement ends with a handover workshop, not an account-management phase. ```
Open artificialintelligence/data/index.html.haml. Replace lines 1–24 with:
layout: base type: service description: Consulting engagement to stand up secure, AI-ready data pipelines on AWS. Fixed scope, knowledge transfer, your team takes it forward. title: Data Integration for AI | Consulting engagement | base2Services tags: ["Data Integration", "Data Washing", "AI Data Preparation", "Data Pipelines", "Data Governance", "Data Security", "ETL for AI", "Data Compliance", "AWS Data Services"] banner: /images/banners/webp/mwm47241-devops.webp mobile_banner: /images/banners/webp/480/mwm47241-devops-480w.webp tablet_banner: /images/banners/webp/800/mwm47241-devops-800w.webp banner_title: Data Integration for AI banner_sub: Scoped consulting engagement to stand up secure, AI-ready data pipelines meta_title: Data Integration for AI | Consulting engagement on AWS | base2Services meta_description: Scoped consulting engagement to build secure, AI-ready data pipelines on AWS. Privacy-first ingestion and washing. Knowledge transfer at the end. meta_keywords: Data Integration, Data Washing, AI Data Preparation, Data Pipelines, Data Governance, AWS Data Services search: high flyout_active: false exit_popup_active: false
service: "data_integration" service_faq_title: "Data Integration FAQ" service_faq_description: "Frequently asked questions about our Data Integration consulting engagement" service_faq_service_title: "Data Integration" — ```
Replace everything from line 25 (#content) to the end of file with:
```haml #content.page .container.inner %p.svc-eyebrow.center Consulting Engagement %h2 Secure, AI-ready data pipelines on AWS. %p.center Engagement-based. Fixed scope. Knowledge transfer. We build privacy-first ingestion and washing pipelines inside your AWS account, then your team takes them forward. %p.center Native AWS services. No third-party ETL licences. No per-user quotas. No forgotten integrations breaking at 3am. .flex-container %a.btn-primary.blue.findoutmore.center{:href=>"#contact"} Talk to Us
%a#what-you-get .svc-what-you-get .svc-wyg-inner %h2 What you get .svc-wyg-grid .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %ellipse{cx: "24", cy: "12", rx: "16", ry: "5"} %path{d: "M8,12 L8,36 C8,39 15,42 24,42 C33,42 40,39 40,36 L40,12"} %path{d: "M8,24 C8,27 15,30 24,30 C33,30 40,27 40,24"} %h4 Privacy-first ingestion %p PII and PHI detected and anonymised at the source. Data never leaves your control. GDPR, CCPA, and HIPAA handled automatically. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %rect{x: "8", y: "8", width: "12", height: "12", rx: "1"} %rect{x: "28", y: "8", width: "12", height: "12", rx: "1"} %rect{x: "18", y: "28", width: "12", height: "12", rx: "1"} %line{x1: "14", y1: "20", x2: "22", y2: "28"} %line{x1: "34", y1: "20", x2: "26", y2: "28"} %h4 Centralised pipelines %p All integrations in one project, under version control. No shadow jobs. No forgotten crons. Every flow visible and documented. .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %polygon{points: "13 4 3 16 12 16 11 28 21 14 12 14"} %polygon{points: "35 4 25 16 34 16 33 28 43 14 34 14"} %h4 Real-time and batch %p Stream processing for low-latency AI model updates. Batch for large-dataset training. Same framework, same operational pattern. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %polygon{points: "24,6 8,14 24,22 40,14"} %polyline{points: "8,22 24,30 40,22"} %polyline{points: "8,30 24,38 40,30"} %h4 Data lake architecture %p Schema-on-read storage for flexible exploration. Decoupled ingestion and query. Ready for training, analytics, and BI from one store. .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M24,6 L38,12 L38,26 C38,34 24,42 24,42 C24,42 10,34 10,26 L10,12 Z"} %polyline{points: "18,24 22,28 30,20"} %h4 Policy-as-code guardrails %p Classification, retention, and access rules enforced in code. Consistent across environments. No drift, no human error. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %rect{x: "10", y: "10", width: "28", height: "28", rx: "2"} %polyline{points: "18,24 22,28 30,20"} %line{x1: "10", y1: "18", x2: "38", y2: "18"} %h4 Audit-ready by default %p Lineage, provenance, and data-movement records captured as metadata. ISO 27001 and SOC 2 evidence exportable.
.svc-wyg-detail
%h3 Scoped engagement. Clear deliverables.
.svc-deliverables
.svc-del-group
%h4 Discovery
%ul
%li Source-system inventory and data flow mapping
%li Privacy and compliance requirement review
%li Target AI use-case articulation
%li Gap analysis against current pipelines
%li Engagement scope and acceptance criteria
.svc-del-group
%h4 Design
%ul
%li Pipeline architecture on native AWS services
%li Data classification and washing strategy
%li Policy-as-code framework selection
%li Data lake and query layer design
%li Infrastructure-as-code approach
.svc-del-group
%h4 Delivery
%ul
%li Pipelines built and tested in your AWS
%li Washing and guardrails enforced end-to-end
%li Monitoring and alerting configured
%li Runbooks and operational documentation
%li Handover workshop with your data team
.container.inner %h2 How it works %p.center A scoped consulting engagement, not an open-ended project. .svc-cycle-wrapper %svg.svc-cycle-infinity{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 800 120", fill: "none", preserveAspectRatio: "none"} %path{d: "M10,60 C10,15 190,15 400,60 C610,105 790,105 790,60 C790,15 610,15 400,60 C190,105 10,105 10,60 Z", stroke: "currentColor", "stroke-width" => "2", "stroke-dasharray" => "10,5"} %polygon{points: "300,32 310,36 303,42", fill: "currentColor"} %polygon{points: "500,88 490,84 497,78", fill: "currentColor"} .svc-cycle .svc-cycle-item %h3 Discover %p Current pipelines, source systems, and privacy obligations mapped. Gap analysis against your target AI use-cases. .svc-cycle-item %h3 Design %p Architecture drafted and signed off. Native AWS services selected. Scope and acceptance criteria written down. .svc-cycle-item %h3 Build %p Pipelines, washing, and guardrails delivered end-to-end. Your team pairs with ours through the build. .svc-cycle-item %h3 Handover %p Documentation, runbooks, and a handover workshop. Your team owns and operates what we built.
.svc-trust-bar .svc-trust-inner %p.svc-trust-label Audited and certified .svc-trust-badges .svc-trust-badge %img{src: "/images/partners/2022_aws_partner.svg", alt: "AWS Advanced Partner", loading: "lazy"} %span AWS Advanced Partner .svc-trust-badge %img{src: "/images/ISO-27001-certified_col.svg", alt: "ISO 27001 Certified", loading: "lazy"} %span ISO 27001 Certified .svc-trust-badge %img{src: "/images/partners/saas_dark_bckgnd.svg", alt: "AWS SaaS Competency", loading: "lazy"} %span AWS SaaS Competency
.section-cta .section-inner .cta-content %h2.cta-heading Talk to us about your data. %p.cta-sub Share the source systems and the AI use-case, and we will scope an engagement. .cta-actions %a.cta-primary{:href => "#contact"} Talk to Us
= partial "faq_data_integration.html.haml"
.svc-crosslink-section .svc-crosslink-inner %h2 Not quite what you need? %p Every team is different. These may fit better. .svc-crosslinks %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/data/readiness.html"} Data Readiness %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/generativeai/"} Generative AI %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/"} AI Factory
%a#contact = partial("contact_forms/inbuilt_contact_form.html.haml") ```
bash
bundle exec rake gen
grep -c "svc-wyg-card" _site/artificialintelligence/data/index.html
grep -q "Consulting Engagement" _site/artificialintelligence/data/index.html && echo "EYEBROW OK"
grep -q "Discover" _site/artificialintelligence/data/index.html && echo "CYCLE OK"
grep -q "Scoped engagement. Clear deliverables" _site/artificialintelligence/data/index.html && echo "DETAIL OK"
grep -q "How long is a typical Data Integration engagement" _site/artificialintelligence/data/index.html && echo "FAQ OK"
Expected: count == 6, all OK lines print.
Preview http://localhost:4242/artificialintelligence/data/. Confirm hero eyebrow "Consulting Engagement", six cards, Discovery/Design/Delivery columns, Discover→Design→Build→Handover cycle, trust bar, section-cta, FAQ, crosslinks, contact form.
bash
git add _partials/faq_data_integration.html.haml artificialintelligence/data/index.html.haml
git commit -m "feat(ai): refresh Data Integration page with consulting template"
Files:
_partials/faq_data_readiness.html.hamlartificialintelligence/data/readiness.html.hamlSource: existing on-page copy is authoritative (no dedicated research document).
Create _partials/faq_data_readiness.html.haml with:
```haml -# Data Readiness FAQ Partial -# Usage: = partial "faq_data_readiness.html.haml"
-# SEO Structured Data for FAQ %script{:type => "application/ld+json"} :plain { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "How long is a Data Readiness engagement?", "acceptedAnswer": { "@type": "Answer", "text": "Three to six weeks. Discovery is one week, design one to two, delivery the rest. Output is an assessment report and a prioritised roadmap, not a build." } }, { "@type": "Question", "name": "What is in the final report?", "acceptedAnswer": { "@type": "Answer", "text": "A written assessment of data quality, pipeline reliability, privacy posture, and suitability for your target AI use-case. A prioritised remediation roadmap with effort estimates. Enough detail that a build engagement can start the next day." } }, { "@type": "Question", "name": "Do you recommend vendors or tools?", "acceptedAnswer": { "@type": "Answer", "text": "We recommend AWS-native patterns by default. Where a managed service genuinely adds value we say so. We do not have referral arrangements with data vendors." } }, { "@type": "Question", "name": "Can this run before we pick an AI use-case?", "acceptedAnswer": { "@type": "Answer", "text": "It can, but the assessment is sharper when we know the target use-case. If you are still choosing, we can run a shorter discovery first and sequence the full readiness review once the use-case is picked." } }, { "@type": "Question", "name": "What do we own at the end?", "acceptedAnswer": { "@type": "Answer", "text": "The report, the roadmap, and any discovery artefacts we produce. You can act on them with us, with another partner, or with your own team." } }, { "@type": "Question", "name": "Can you run the build afterwards?", "acceptedAnswer": { "@type": "Answer", "text": "Yes. The Data Integration consulting engagement picks up most readiness outcomes. The AI Factory managed service covers long-run operations." } } ] }
.svc-faq-section .svc-faq-inner %h2 Frequently asked questions .svc-faq-grid .svc-faq-card %h4 How long is a Data Readiness engagement? %p Three to six weeks. Discovery is one week, design one to two, delivery the rest. Output is an assessment report and a prioritised roadmap, not a build. .svc-faq-card %h4 What is in the final report? %p A written assessment of data quality, pipeline reliability, privacy posture, and suitability for your target AI use-case. A prioritised remediation roadmap with effort estimates. Enough detail that a build engagement can start the next day. .svc-faq-card %h4 Do you recommend vendors or tools? %p We recommend AWS-native patterns by default. Where a managed service genuinely adds value we say so. We do not have referral arrangements with data vendors. .svc-faq-card %h4 Can this run before we pick an AI use-case? %p It can, but the assessment is sharper when we know the target use-case. If you are still choosing, we can run a shorter discovery first and sequence the full readiness review once the use-case is picked. .svc-faq-card %h4 What do we own at the end? %p The report, the roadmap, and any discovery artefacts we produce. You can act on them with us, with another partner, or with your own team. .svc-faq-card %h4 Can you run the build afterwards? %p Yes. The Data Integration consulting engagement picks up most readiness outcomes. The AI Factory managed service covers long-run operations. ```
Open artificialintelligence/data/readiness.html.haml. Replace lines 1–24 with:
layout: base type: service description: Consulting engagement to assess whether your data is ready for AI. Quality, pipeline, and privacy review with a prioritised remediation roadmap. title: Data Readiness for AI | Consulting engagement | base2Services tags: ["Data Readiness", "AI Data Preparation", "Data Quality", "Data Assessment", "AI Consulting", "AWS Data Services"] banner: /images/banners/webp/mwm47241-devops.webp mobile_banner: /images/banners/webp/480/mwm47241-devops-480w.webp tablet_banner: /images/banners/webp/800/mwm47241-devops-800w.webp banner_title: Data Readiness for AI banner_sub: Scoped consulting engagement to assess whether your data can drive reliable AI outcomes meta_title: Data Readiness for AI | Consulting engagement on AWS | base2Services meta_description: Scoped consulting engagement that assesses whether your data is ready for AI. Quality review, pipeline review, privacy posture, and a prioritised remediation roadmap. meta_keywords: Data Readiness, AI Data Preparation, Data Quality, Data Pipeline Assessment, AWS AI search: high flyout_active: false exit_popup_active: false
service: "data_readiness" service_faq_title: "Data Readiness FAQ" service_faq_description: "Frequently asked questions about our Data Readiness consulting engagement" service_faq_service_title: "Data Readiness" — ```
Replace everything from line 25 to the end of file with:
```haml #content.page .container.inner %p.svc-eyebrow.center Consulting Engagement %h2 Is your data ready for AI? %p.center Engagement-based. Fixed scope. Knowledge transfer. We assess your data quality, pipeline reliability, and privacy posture — then deliver a prioritised remediation roadmap. %p.center Accuracy starts with the data. We tell you what is ready, what is not, and what to fix first. .flex-container %a.btn-primary.blue.findoutmore.center{:href=>"#contact"} Talk to Us
%a#what-you-get .svc-what-you-get .svc-wyg-inner %h2 What you get .svc-wyg-grid .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %rect{x: "10", y: "8", width: "28", height: "32", rx: "2"} %polyline{points: "16,18 20,22 28,14"} %line{x1: "16", y1: "28", x2: "32", y2: "28"} %line{x1: "16", y1: "34", x2: "28", y2: "34"} %h4 Data quality assessment %p Completeness, consistency, accuracy, and timeliness measured against your target AI use-case. Gaps surfaced with examples. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M8,24 H18 L22,12 L26,36 L30,20 L34,28 H40"} %h4 Pipeline review %p Every ingest, transform, and load path audited for reliability, observability, and cost. Shadow jobs and single points of failure flagged. .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M24,6 L38,12 L38,26 C38,34 24,42 24,42 C24,42 10,34 10,26 L10,12 Z"} %polyline{points: "18,24 22,28 30,20"} %h4 Privacy posture %p PII and PHI exposure mapped. Classification, retention, and consent gaps reviewed against ISO 27001, CPS 230, GDPR, and SOC 2. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %circle{cx: "24", cy: "24", r: "14"} %path{d: "M24,14 V24 L31,28"} %h4 Use-case fit %p We size the gap between your current data and the specific AI outcome you want. Go/no-go call before any build starts. .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %line{x1: "10", y1: "36", x2: "38", y2: "36"} %rect{x: "12", y: "26", width: "6", height: "10"} %rect{x: "21", y: "18", width: "6", height: "18"} %rect{x: "30", y: "10", width: "6", height: "26"} %h4 Prioritised roadmap %p Remediation items ranked by impact versus effort. Effort estimates on the three most important items so a build engagement can scope quickly. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M16,8 H32 L38,14 V40 H10 V14 Z"} %polyline{points: "32,8 32,14 38,14"} %line{x1: "16", y1: "22", x2: "32", y2: "22"} %line{x1: "16", y1: "28", x2: "32", y2: "28"} %line{x1: "16", y1: "34", x2: "26", y2: "34"} %h4 Written assessment %p A readable, share-with-the-board document. Plus a technical annex deep enough for your engineers.
.svc-wyg-detail
%h3 Scoped engagement. Clear deliverables.
.svc-deliverables
.svc-del-group
%h4 Discovery
%ul
%li Target AI use-case interviews
%li Data source and system inventory
%li Existing pipeline walk-through
%li Privacy and compliance context review
%li Success criteria and scope agreement
.svc-del-group
%h4 Design
%ul
%li Quality, reliability, and privacy rubric
%li Sampling and measurement plan
%li Pipeline review framework
%li Remediation option shortlist
%li Roadmap format and stakeholder map
.svc-del-group
%h4 Delivery
%ul
%li Quality, pipeline, and privacy assessment
%li Gap analysis against target use-case
%li Prioritised remediation roadmap with estimates
%li Written report plus technical annex
%li Handover workshop with leadership and engineering
.container.inner %h2 How it works %p.center A scoped consulting engagement that ends with a written report and a clear roadmap. .svc-cycle-wrapper %svg.svc-cycle-infinity{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 800 120", fill: "none", preserveAspectRatio: "none"} %path{d: "M10,60 C10,15 190,15 400,60 C610,105 790,105 790,60 C790,15 610,15 400,60 C190,105 10,105 10,60 Z", stroke: "currentColor", "stroke-width" => "2", "stroke-dasharray" => "10,5"} %polygon{points: "300,32 310,36 303,42", fill: "currentColor"} %polygon{points: "500,88 490,84 497,78", fill: "currentColor"} .svc-cycle .svc-cycle-item %h3 Discover %p Target AI use-case interviews and data source inventory. .svc-cycle-item %h3 Design %p Rubric, sampling plan, and review framework agreed with your team. .svc-cycle-item %h3 Build %p Assessment executed. Quality, reliability, and privacy measured against the target use-case. .svc-cycle-item %h3 Handover %p Written report, technical annex, and a handover workshop. Your team owns the roadmap.
.svc-trust-bar .svc-trust-inner %p.svc-trust-label Audited and certified .svc-trust-badges .svc-trust-badge %img{src: "/images/partners/2022_aws_partner.svg", alt: "AWS Advanced Partner", loading: "lazy"} %span AWS Advanced Partner .svc-trust-badge %img{src: "/images/ISO-27001-certified_col.svg", alt: "ISO 27001 Certified", loading: "lazy"} %span ISO 27001 Certified .svc-trust-badge %img{src: "/images/partners/saas_dark_bckgnd.svg", alt: "AWS SaaS Competency", loading: "lazy"} %span AWS SaaS Competency
.section-cta .section-inner .cta-content %h2.cta-heading Find out if your data can carry the AI you want to build. %p.cta-sub Share the use-case and the data sources, and we will scope the assessment. .cta-actions %a.cta-primary{:href => "#contact"} Talk to Us
= partial "faq_data_readiness.html.haml"
.svc-crosslink-section .svc-crosslink-inner %h2 Not quite what you need? %p Every team is different. These may fit better. .svc-crosslinks %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/data/"} Data Integration %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/generativeai/"} Generative AI %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/"} AI Factory
%a#contact = partial("contact_forms/inbuilt_contact_form.html.haml") ```
bash
bundle exec rake gen
grep -c "svc-wyg-card" _site/artificialintelligence/data/readiness.html
grep -q "Consulting Engagement" _site/artificialintelligence/data/readiness.html && echo "EYEBROW OK"
grep -q "Discover" _site/artificialintelligence/data/readiness.html && echo "CYCLE OK"
grep -q "How long is a Data Readiness engagement" _site/artificialintelligence/data/readiness.html && echo "FAQ OK"
Expected: count == 6, all OK lines print.
Preview http://localhost:4242/artificialintelligence/data/readiness.html. Confirm hero eyebrow, six cards, Discovery/Design/Delivery columns, Discover→Design→Build→Handover cycle, FAQ, crosslinks, contact form.
bash
git add _partials/faq_data_readiness.html.haml artificialintelligence/data/readiness.html.haml
git commit -m "feat(ai): refresh Data Readiness page with consulting template"
Files:
_partials/faq_generative_ai.html.hamlartificialintelligence/generativeai/index.html.hamlSource: docs/superpowers/plans/2026-04-15-ai-section-refresh-extracts/franchise-genai-portal.txt and existing on-page copy (existing solutions grid at the bottom of the current page has good capability descriptions).
Create _partials/faq_generative_ai.html.haml with:
```haml -# Generative AI FAQ Partial -# Usage: = partial "faq_generative_ai.html.haml"
-# SEO Structured Data for FAQ %script{:type => "application/ld+json"} :plain { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "How long is a Generative AI engagement?", "acceptedAnswer": { "@type": "Answer", "text": "Eight to sixteen weeks for a production feature. Discovery is two weeks, design two to three, delivery the remainder. We agree a fixed scope and acceptance criteria up front." } }, { "@type": "Question", "name": "Which model providers do you support?", "acceptedAnswer": { "@type": "Answer", "text": "AWS Bedrock, Anthropic, and OpenAI are supported natively. Custom or open-weight models run on your infrastructure. We write the integration to abstract the provider so you can switch later without a rewrite." } }, { "@type": "Question", "name": "Who owns the IP?", "acceptedAnswer": { "@type": "Answer", "text": "You do. All code, prompts, embeddings, fine-tuned artefacts, and infrastructure stay in your AWS account. We do not retain anything derived from your data or product." } }, { "@type": "Question", "name": "Can this be a RAG system, an agent, or a fine-tuned model?", "acceptedAnswer": { "@type": "Answer", "text": "Any of the three. We pick the pattern with you based on your data, latency target, and total cost of ownership. Most production features start as RAG plus a thin agent layer; fine-tuning comes later when the use-case is proven." } }, { "@type": "Question", "name": "How do you handle safety, accuracy, and compliance?", "acceptedAnswer": { "@type": "Answer", "text": "Every engagement inherits the same guardrail patterns used in the AI Factory managed service. Prompt injection protection, content filters, audit logs, and evaluation harnesses. ISO 27001 and CPS 230 evidence captured as we build." } }, { "@type": "Question", "name": "What happens after delivery?", "acceptedAnswer": { "@type": "Answer", "text": "Your team owns and operates the feature. If you want ongoing 24/7 operations, Agentic Ops picks it up. Otherwise we hand over runbooks and evaluations and step out." } } ] }
.svc-faq-section .svc-faq-inner %h2 Frequently asked questions .svc-faq-grid .svc-faq-card %h4 How long is a Generative AI engagement? %p Eight to sixteen weeks for a production feature. Discovery is two weeks, design two to three, delivery the remainder. We agree a fixed scope and acceptance criteria up front. .svc-faq-card %h4 Which model providers do you support? %p AWS Bedrock, Anthropic, and OpenAI are supported natively. Custom or open-weight models run on your infrastructure. We write the integration to abstract the provider so you can switch later without a rewrite. .svc-faq-card %h4 Who owns the IP? %p You do. All code, prompts, embeddings, fine-tuned artefacts, and infrastructure stay in your AWS account. We do not retain anything derived from your data or product. .svc-faq-card %h4 Can this be a RAG system, an agent, or a fine-tuned model? %p Any of the three. We pick the pattern with you based on your data, latency target, and total cost of ownership. Most production features start as RAG plus a thin agent layer; fine-tuning comes later when the use-case is proven. .svc-faq-card %h4 How do you handle safety, accuracy, and compliance? %p Every engagement inherits the same guardrail patterns used in the AI Factory managed service. Prompt injection protection, content filters, audit logs, and evaluation harnesses. ISO 27001 and CPS 230 evidence captured as we build. .svc-faq-card %h4 What happens after delivery? %p Your team owns and operates the feature. If you want ongoing 24/7 operations, Agentic Ops picks it up. Otherwise we hand over runbooks and evaluations and step out. ```
Open artificialintelligence/generativeai/index.html.haml. Replace lines 1–24 with:
layout: base type: service description: Consulting engagement to design, build, and hand over a production Generative AI feature on AWS — RAG, agent, or custom model. Fixed scope. Knowledge transfer. title: Generative AI | Consulting engagement on AWS | base2Services tags: ["Generative AI", "AI Consulting", "RAG", "AI Agents", "Custom AI Models", "AI on AWS"] banner: /images/banners/webp/mwm47241-devops.webp mobile_banner: /images/banners/webp/480/mwm47241-devops-480w.webp tablet_banner: /images/banners/webp/800/mwm47241-devops-800w.webp banner_title: Generative AI on AWS banner_sub: Scoped consulting engagement to design, build, and hand over a production GenAI feature meta_title: Generative AI | Consulting engagement on AWS | base2Services meta_description: Scoped consulting engagement to design, build, and hand over a production Generative AI feature on AWS. RAG, agents, or custom models. Your team owns the outcome. meta_keywords: Generative AI, AI Consulting, RAG, AI Agents, Custom AI Models, AWS AI search: high flyout_active: false exit_popup_active: false
service: "generative_ai" service_faq_title: "Generative AI FAQ" service_faq_description: "Frequently asked questions about our Generative AI consulting engagement" service_faq_service_title: "Generative AI" — ```
Replace everything from line 25 to the end of file with:
```haml #content.page .container.inner %p.svc-eyebrow.center Consulting Engagement %h2 Production Generative AI, built in your AWS. %p.center Engagement-based. Fixed scope. Knowledge transfer. We design, build, and hand over a working GenAI feature — RAG system, agent, or custom model — inside your AWS account. %p.center Your team owns the outcome. The code, the prompts, the evaluations, and the operational runbooks stay with you. .flex-container %a.btn-primary.blue.findoutmore.center{:href=>"#contact"} Talk to Us
%a#what-you-get .svc-what-you-get .svc-wyg-inner %h2 What you get .svc-wyg-grid .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M14,10 H30 L36,16 V38 H12 V10 Z"} %polyline{points: "30,10 30,16 36,16"} %circle{cx: "20", cy: "26", r: "3"} %line{x1: "25", y1: "26", x2: "30", y2: "26"} %h4 RAG-powered assistants %p Document-aware search and Q&A built on your knowledge base. Multi-modal (text, images, audio). Real-time updates. Access controls preserved. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %rect{x: "12", y: "16", width: "24", height: "20", rx: "3"} %path{d: "M20 16 V10 H16"} %line{x1: "8", y1: "26", x2: "12", y2: "26"} %line{x1: "36", y1: "26", x2: "40", y2: "26"} %line{x1: "20", y1: "24", x2: "20", y2: "28"} %line{x1: "28", y1: "24", x2: "28", y2: "28"} %h4 Autonomous agents %p Multi-step task automation with policy-driven safety. MCP servers for data access. Evaluation harnesses so you know the agent does the right thing. .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %circle{cx: "24", cy: "24", r: "4"} %path{d: "M24,8 L24,14 M24,34 L24,40 M8,24 L14,24 M34,24 L40,24 M12,12 L16,16 M32,32 L36,36 M12,36 L16,32 M32,16 L36,12"} %h4 Custom and fine-tuned models %p LLMs fine-tuned on your data for a domain-specific outcome. Continuous evaluation against the baseline. Rollback path when a new tune regresses. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %path{d: "M24,6 L38,12 L38,26 C38,34 24,42 24,42 C24,42 10,34 10,26 L10,12 Z"} %polyline{points: "18,24 22,28 30,20"} %h4 Safety and evaluation %p Prompt injection protection, content filtering, and an evaluation suite tailored to your use-case. Runs on every change before production. .svc-wyg-card.bg-green .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %line{x1: "12", y1: "8", x2: "12", y2: "28"} %circle{cx: "30", cy: "12", r: "4"} %circle{cx: "12", cy: "32", r: "4"} %path{d: "M30,16 V22 A4,4 0 0,1 26,26 H18 A4,4 0 0,0 14,30"} %h4 Infrastructure as code %p Every component in Terraform or CloudFormation. Reviewable, auditable, reproducible. No click-ops. Ready for your CI/CD. .svc-wyg-card.bg-blue .svc-wyg-icon %svg{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 48 48", fill: "none", stroke: "rgba(255,255,255,0.7)", "stroke-width" => "1.5", "stroke-linecap" => "round", "stroke-linejoin" => "round"} %rect{x: "8", y: "10", width: "32", height: "24", rx: "2"} %line{x1: "14", y1: "18", x2: "34", y2: "18"} %line{x1: "14", y1: "24", x2: "28", y2: "24"} %line{x1: "16", y1: "40", x2: "32", y2: "40"} %h4 Monitoring and runbooks %p Latency, cost, accuracy, and safety dashboards. Written runbooks for common failure modes. Your on-call team can operate it on day one.
.svc-wyg-detail
%h3 Scoped engagement. Clear deliverables.
.svc-deliverables
.svc-del-group
%h4 Discovery
%ul
%li Target use-case and success criteria
%li Data source and access review
%li Model-pattern selection (RAG, agent, fine-tune)
%li Compliance and safety context
%li Engagement scope and acceptance criteria
.svc-del-group
%h4 Design
%ul
%li Architecture and provider abstraction
%li Evaluation suite aligned to success criteria
%li Safety, injection, and content-filter plan
%li Infrastructure-as-code approach
%li Cost target and budget guardrails
.svc-del-group
%h4 Delivery
%ul
%li Feature built and integrated in your AWS
%li Evaluations running in CI
%li Monitoring and cost dashboards configured
%li Runbooks and operational documentation
%li Handover workshop with engineering and product
.container.inner %h2 How it works %p.center A scoped consulting engagement that ends with a production-ready feature you own. .svc-cycle-wrapper %svg.svc-cycle-infinity{xmlns: "http://www.w3.org/2000/svg", viewbox: "0 0 800 120", fill: "none", preserveAspectRatio: "none"} %path{d: "M10,60 C10,15 190,15 400,60 C610,105 790,105 790,60 C790,15 610,15 400,60 C190,105 10,105 10,60 Z", stroke: "currentColor", "stroke-width" => "2", "stroke-dasharray" => "10,5"} %polygon{points: "300,32 310,36 303,42", fill: "currentColor"} %polygon{points: "500,88 490,84 497,78", fill: "currentColor"} .svc-cycle .svc-cycle-item %h3 Discover %p Target feature, users, data sources, and success criteria agreed before scope is signed. .svc-cycle-item %h3 Design %p Architecture, model pattern, evaluation suite, and cost guardrails drafted and signed off. .svc-cycle-item %h3 Build %p Feature delivered end-to-end with your team pairing. Evaluations run in CI. Safety enforced. .svc-cycle-item %h3 Handover %p Runbooks, evaluation outputs, and infrastructure stay with you. Handover workshop closes the engagement.
.svc-trust-bar .svc-trust-inner %p.svc-trust-label Audited and certified .svc-trust-badges .svc-trust-badge %img{src: "/images/partners/2022_aws_partner.svg", alt: "AWS Advanced Partner", loading: "lazy"} %span AWS Advanced Partner .svc-trust-badge %img{src: "/images/ISO-27001-certified_col.svg", alt: "ISO 27001 Certified", loading: "lazy"} %span ISO 27001 Certified .svc-trust-badge %img{src: "/images/partners/saas_dark_bckgnd.svg", alt: "AWS SaaS Competency", loading: "lazy"} %span AWS SaaS Competency
.section-cta .section-inner .cta-content %h2.cta-heading Talk to us about the GenAI feature you want to ship. %p.cta-sub Share the use-case and the users, and we will scope a discovery. .cta-actions %a.cta-primary{:href => "#contact"} Talk to Us
= partial "faq_generative_ai.html.haml"
.svc-crosslink-section .svc-crosslink-inner %h2 Not quite what you need? %p Every team is different. These may fit better. .svc-crosslinks %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/data/"} Data Integration %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/data/readiness.html"} Data Readiness %a.btn-primary.blue.findoutmore{:href => "/artificialintelligence/aifactory/"} AI Factory
%a#contact = partial("contact_forms/inbuilt_contact_form.html.haml") ```
bash
bundle exec rake gen
grep -c "svc-wyg-card" _site/artificialintelligence/generativeai/index.html
grep -q "Consulting Engagement" _site/artificialintelligence/generativeai/index.html && echo "EYEBROW OK"
grep -q "Discover" _site/artificialintelligence/generativeai/index.html && echo "CYCLE OK"
grep -q "How long is a Generative AI engagement" _site/artificialintelligence/generativeai/index.html && echo "FAQ OK"
Expected: count == 6, all OK lines print.
Preview http://localhost:4242/artificialintelligence/generativeai/. Confirm hero, six cards, Discovery/Design/Delivery columns, Discover→Design→Build→Handover cycle, FAQ, crosslinks, contact form.
bash
git add _partials/faq_generative_ai.html.haml artificialintelligence/generativeai/index.html.haml
git commit -m "feat(ai): refresh Generative AI page with consulting template"
Files:
This is the "everything together" check. Runs one full build, greps for every crosslink target and eyebrow label, and does a final visual round-trip across all eight pages.
bash
bundle exec rake clean
bundle exec rake gen
Expected: exits 0. No Sass errors, no HAML errors.
Run this in one block. All nine echos should print OK.
bash
grep -q "/artificialintelligence/aifactory/" _site/artificialintelligence/index.html && echo "hub→aifactory OK"
grep -q "/artificialintelligence/data/" _site/artificialintelligence/index.html && echo "hub→data OK"
grep -q "/artificialintelligence/data/readiness.html" _site/artificialintelligence/index.html && echo "hub→readiness OK"
grep -q "/artificialintelligence/generativeai/" _site/artificialintelligence/index.html && echo "hub→genai OK"
grep -q "/artificialintelligence/aifactory/agentic-ops/" _site/artificialintelligence/aifactory/index.html && echo "minihub→agentic-ops OK"
grep -q "/artificialintelligence/aifactory/guardrails/" _site/artificialintelligence/aifactory/index.html && echo "minihub→guardrails OK"
grep -q "/artificialintelligence/aifactory/mlops/" _site/artificialintelligence/aifactory/index.html && echo "minihub→mlops OK"
grep -q "/artificialintelligence/aifactory/" _site/artificialintelligence/aifactory/agentic-ops/index.html && echo "agentic-ops→aifactory OK"
grep -q "/artificialintelligence/aifactory/" _site/artificialintelligence/generativeai/index.html && echo "genai→aifactory OK"
Each managed page must carry "Managed Service". Each consulting page must carry "Consulting Engagement".
```bash for p in \ _site/artificialintelligence/aifactory/index.html \ _site/artificialintelligence/aifactory/agentic-ops/index.html \ _site/artificialintelligence/aifactory/guardrails/index.html \ _site/artificialintelligence/aifactory/mlops/index.html; do grep -q "Managed Service" "$p" && echo "MANAGED OK: $p" || echo "MANAGED MISSING: $p" done
for p in \ _site/artificialintelligence/data/index.html \ _site/artificialintelligence/data/readiness.html \ _site/artificialintelligence/generativeai/index.html; do grep -q "Consulting Engagement" "$p" && echo "CONSULTING OK: $p" || echo "CONSULTING MISSING: $p" done ```
Expected: all seven lines print OK, none print MISSING.
Each secondary page must include: six svc-wyg-cards, three svc-del-groups, a four-item svc-cycle, a svc-trust-bar, a section-cta, a svc-crosslink-section, and the contact form.
bash
for p in \
_site/artificialintelligence/aifactory/agentic-ops/index.html \
_site/artificialintelligence/aifactory/guardrails/index.html \
_site/artificialintelligence/aifactory/mlops/index.html \
_site/artificialintelligence/data/index.html \
_site/artificialintelligence/data/readiness.html \
_site/artificialintelligence/generativeai/index.html; do
echo "=== $p ==="
echo "wyg-cards: $(grep -c 'svc-wyg-card' $p)"
echo "del-groups: $(grep -c 'svc-del-group' $p)"
echo "cycle-items: $(grep -c 'svc-cycle-item' $p)"
grep -q 'svc-trust-bar' $p && echo "trust-bar: OK"
grep -q 'section-cta' $p && echo "section-cta: OK"
grep -q 'svc-crosslink-section' $p && echo "crosslinks: OK"
grep -q 'contact_forms' $p || grep -q 'id="contact"' $p && echo "contact: OK"
done
Expected per page: wyg-cards == 6, del-groups == 3, cycle-items == 4, all four OK lines print.
Per the spec, no AI page should render testimonials or case-study grids yet.
bash
for p in \
_site/artificialintelligence/index.html \
_site/artificialintelligence/aifactory/index.html \
_site/artificialintelligence/aifactory/agentic-ops/index.html \
_site/artificialintelligence/aifactory/guardrails/index.html \
_site/artificialintelligence/aifactory/mlops/index.html \
_site/artificialintelligence/data/index.html \
_site/artificialintelligence/data/readiness.html \
_site/artificialintelligence/generativeai/index.html; do
grep -q 'section-testimonials' $p && echo "LEAKED testimonials: $p" || echo "clean: $p"
grep -q 'case-studies-grid' $p && echo "LEAKED case-studies: $p" || true
done
Expected: "clean:" prints for each of the eight pages, no "LEAKED" lines.
Start the preview (bundle exec rake preview) and open each of these in turn:
http://localhost:4242/artificialintelligence/http://localhost:4242/artificialintelligence/aifactory/http://localhost:4242/artificialintelligence/aifactory/agentic-ops/http://localhost:4242/artificialintelligence/aifactory/guardrails/http://localhost:4242/artificialintelligence/aifactory/mlops/http://localhost:4242/artificialintelligence/data/http://localhost:4242/artificialintelligence/data/readiness.htmlhttp://localhost:4242/artificialintelligence/generativeai/For each page, confirm:
#contact anchor from "Talk to Us" lands at the form.Stop the preview server.
This task does not produce a commit. If any of the checks above failed, open the offending file, fix the issue, and amend the commit from the task that produced it (via a new small fix(ai): ... commit — do not --amend).
docs/superpowers/specs/2026-04-15-ai-section-refresh-design.md) maps to at least one task in this plan. Verified:
[ ] Placeholder scan — no "TBD", no "appropriate X", no "similar to Task N" references. Full HAML provided in every body-replacement step. FAQ partials provided end-to-end in Steps 1 of Tasks 7, 9, 10, 11. FAQ retune Q&A tables provided in Steps 3 of Tasks 4, 5, 6, 8.
Managed Service (Tasks 4 hub-card, 5, 6, 7, 8) vs Consulting Engagement (Tasks 6, 9, 10, 11 hero) and Consulting (Task 4 hub-card only — shorter label on the router cards as per the spec's Hub Template section). Matched across all tasks.faq_artificialintelligence.html.haml, faq_ai_factory.html.haml, faq_agentic_ai.html.haml, faq_mlops.html.haml, faq_guardrails.html.haml, faq_data_integration.html.haml, faq_data_readiness.html.haml, faq_generative_ai.html.haml — all used consistently..svc-eyebrow, .svc-what-you-get, .svc-wyg-grid, .svc-wyg-card.bg-green / .bg-blue, .svc-wyg-icon, .svc-wyg-detail, .svc-deliverables, .svc-del-group, .svc-cycle-wrapper, .svc-cycle-infinity, .svc-cycle, .svc-cycle-item, .svc-trust-bar, .svc-trust-inner, .svc-trust-label, .svc-trust-badges, .svc-trust-badge, .svc-faq-section, .svc-faq-inner, .svc-faq-grid, .svc-faq-card, .svc-crosslink-section, .svc-crosslink-inner, .svc-crosslinks, .section-cta, .section-inner, .cta-content, .cta-heading, .cta-sub, .cta-actions, .cta-primary — all reused from existing SCSS, none redefined except .svc-eyebrow in Task 3.Assess → Build → Operate → Improve (Tasks 6, 7, 8), consulting Discover → Design → Build → Handover (Tasks 9, 10, 11). Mini-hub uses three service names (Guardrails, Agentic Ops, MLOps), not verbs — correct per spec.