How this page got built.
Every session, every agent dispatch, every reviewer catch, every editorial rework — as it happened. Eleven agents, six roles, three reviewer-and-decision gates, one human tech lead signing off every state-mutating output. build-log-agent keeps this current on every ship.
The scoreboard
One person running the session loop. Eleven specialized Claude agents doing the building, reviewing, and deciding. Seventeen logged sessions from first intake to this page shipping. No designer-of-record on contract, no offshore pod, no three-week sprint cycle. This is what a solo operator with a governed agent team ships in under three days.
- 1HumanMayuresh Soni — session driver, content owner, tech lead
- 11Specialized agents1 orchestrator · 6 builders · 3 reviewers · 1 decision agent
- 17Logged sessionsIntake → scaffold → editorial → ASU-lens review → ship
- ~62 hrsWall-clockApr 17 · 03:15 PDT → Apr 19 · 17:00 PDT
- Start
- Apr 17 2026 · 03:15 PDT — intake, stakeholder map, debrief read
- End
- Apr 19 2026 · 17:00 PDT — distribution pivot, build-log finale, ship
- Elapsed
- 2 days · 13 hours · 45 minutes
The roster that built this page
Every agent below has a single-file spec in .claude/agents/ with its own prompt, allowed-tools list, and review checklist. Dispatches are recorded in the session entries. Narrow, composable, logged, re-runnable.
- Mayuresh SoniHumanTech lead · Session driver · Final sign-off on every state-mutating output
- tech-leadOrchestratorOrchestrator — routes dispatches, merges worktrees, resolves naming drift across agents
- designer-agentBuilderBuilder — palette, type scale, spacing rhythm, motion variants, keyframes
- content-agentBuilderBuilder — writes src/content/asu.ts, sources every factual claim, enforces voice
- html-structure-agentBuilderBuilder — scaffolds section components, wires the Astro page, owns semantic structure
- css-style-agentBuilderBuilder — polishes wrapper components, adds keyframes, enforces AA contrast
- interactions-agentBuilderBuilder — hydrates islands (substrate diagram, Ask-SDD, session-loop player, carousels) with ARIA + keyboard nav
- build-log-agentBuilderBuilder — keeps this page current on every ship; sources every entry against git history
- copy-reviewerReviewerReviewer — voice match, banned words, TBD tracking, claim sourcing
- accessibility-reviewerReviewerReviewer — H1/H2 outline, skip-link, aria-labels, keyboard nav on every interactive region
- technical-reviewerReviewerReviewer — TypeScript strict, console-clean, import integrity, basePath correctness
- decision-agentDecisionDecision — consolidates the three reviewer verdicts, routes PASS / FAIL / REWORK
Toolchain
What the agents and the one human actually used to ship this page. Same toolchain the page itself references in the Substrate band — we run the services arm on it first, then show you the receipts.
- Claude Agent SDKSessionEleven .claude/agents/*.md specs — each agent a scoped system prompt + allowed-tools list + reviewer checklist. Dispatches are single-file, re-runnable, logged.
- Claude Code + CoworkSessionThe session loop itself — every agent dispatch ran here, every commit ran here, every reviewer report landed here. No IDE, no local scripts.
- Git + GitHub (worktrees)Substrateasu-landing cut off main; per-builder worktrees so content-agent, html-structure-agent, css-style-agent, interactions-agent, and build-log-agent ran in parallel without colliding. Every commit carries a [name] prefix.
- Astro 5 (app router)FrameworkPage framework — /asu and /asu/build-log ship as static pages with React islands hydrated under client:load (nav + hero) and client:visible (below-fold).
- React 18 + TypeScript strictFrameworkSection components + hydrated islands. Content-type contracts live in src/content/*.ts and the technical-reviewer gate refuses anything that does not tsc --strict clean.
- Tailwind CSS + tokens.tsFrameworkDesign system — palette, type scale (text-section-title / h4 / body-lg), spacing rhythm, motion variants. No new tokens added this build.
- Framer MotionFrameworkScroll-triggered entrance variants (fadeInUp, staggerContainer), carousel scroll-snap, prefers-reduced-motion gates on every animation.
- Lucide ReactFramework37-icon roster enumerated in the design brief; designer-agent adds new icons to an iconMap instead of inlining imports per-component.
- npm + Astro buildQualityIntegration smoke test gate — 41 pages generated in 7.12s, /asu bundle 31.35 kB JS gzipped to 11.95 kB. Build green is non-negotiable before review.
- Browser DevTools + tscQualityaccessibility-reviewer and technical-reviewer evidence — console-clean, AA contrast verified site-wide, keyboard navigation on every island, strict TypeScript.
Input sources
Every factual claim on the /asu page traces to one of these. If a reader wants the primary source for a sentence, content-agent notes the source inline in src/content/asu.ts — these are the bucket categories.
- ASU+GSV 2026 meeting debriefsCommsFour stakeholder conversations from the conference — Kimberly (sponsor), Nate (engineering reviewer), Kyle (technical), Roger (executive). Archived in Gmail. Quotes, priorities, and objections mapped into the epic brief and routed to content-agent.
- Slack mining — #asu-gsv · #human-x · #salesCommsPrior exchanges with Chad Vignola (Literacy Design Collaborative), Michael Arulfo (Boston Scientific / BETA.MN), Paul Siegel (Starweaver), Camilla Strongin, and Bobby (Strongin Group) pulled to back-fill the stakeholder map and the higher-ed adjacency paragraph.
- Gmail threads — betacraft / betacraft1CommsEvery conference-adjacent email thread searched for ASU-related context, follow-up commitments, and the names Nate and Kyle surfaced before GSV so the "named and accountable" claim in About could carry through to the email CTA.
- BetaCraft knowledge graphSubstrateknowledge-graph/entities/{people,companies,projects,products} and knowledge-graph/indexes/relationship-map.md — the source of the client roster on AsuClients, the team attribution in AsuAbout, and the case-study references behind the higher-ed adjacency claim.
- Sapey governance substrateSubstrateLive RCFE-compliance program with Roddy Radnia. The AsuRunningOnSdd "Sapey" card sources status, DEC-001…DEC-025 decisions, and reviewer cadence directly from workspaces/ and shared/DECISIONS.md in that repo.
- Georgetown CEW (Ascendium) projectSubstrateCredential-to-jobs data-viz tool across 55 U.S. metros. 34 decisions logged. Named stakeholders Maria Kahale (FRS PM) and Frank Zhang (Georgetown POC). The higher-ed adjacency paragraph and the middle "Running on SDD today" card trace here.
- Step Up Tutoring platformSubstrateThird live SDD program — platform scaffold, weekly digest cadence, decisions log. Third "Running on SDD today" card, structural analog to ASU's outreach-to-students surfaces.
- BetaCraft skill referencesDocsreferences/01_Company_Profile.md through references/10_Risk_Mitigation.md — company legal names (BETACRAFT PVT. LTD. / Soni Technologies LLC), pricing patterns, tech stack, compliance posture (HIPAA / SOC2 / FERPA). Every AsuAbout fact traces to one of these.
Session log
Intake · Meeting debriefs, Slack mining, stakeholder map
Apr 17 2026 · 03:15 PDT
Mayuresh loads the ASU+GSV 2026 meeting debriefs — four ASU Enterprise Technology stakeholders identified (Kimberly, Nate, Kyle, Roger). slack-mining pass across #asu-gsv, #human-x, #sales pulls prior exchanges with Chad Vignola / Literacy Design Collaborative, Michael Arulfo / Boston Scientific, Paul Siegel / Starweaver, Camilla Strongin, and Bobby / Strongin Group to back-fill the stakeholder map. No code yet — pure intent-capture into the epic brief.
AgentsHuman-only · no dispatchHuman in the loop — Mayuresh SoniAuthored the intake brief, built the four-stakeholder map, captured the epic priorities from GSV. No agents dispatched — this session is pure human intent before anyone else runs.
Phase 1 · Branching + agent scaffold
Apr 17 2026 · 04:35 PDT
tech-lead cuts asu-landing off main. Eleven agent specs land in .claude/agents/ — tech-lead orchestrator + six builders (designer, content, html-structure, css-style, interactions, build-log) + three reviewers (copy, accessibility, technical) + one decision-agent. The E01 epic and session-start script accompany them. Worktrees spun up per builder so parallel dispatches do not collide.
Agents- tech-lead
Human in the loop — Mayuresh SoniSigned off the eleven agent specs, named the branch strategy, committed the scaffold himself — the [mayuresh] prefix on 0907a35 is the first state-mutating action on the page.
- 0907a35[mayuresh] chore: scaffold SDD agent roster + E01 ASU landing epic— mayuresh
Phase 2 · Design brief
Apr 17 2026 · 05:05 PDT
designer-agent locks the page palette, typography scale, spacing rhythm, motion variants, and keyframes. Three ASU accents approved — maroon hero badge, maroon pull-quote rule, gold SDD-intro eyebrow — every one WCAG AA verified on bg-dark. Three new asu-* keyframes (substrate pulse, stage-dot pulse, hero aurora) proposed under prefers-reduced-motion: no-preference. 37 Lucide icons listed. No new tokens added outside tokens.ts.
Agents- designer-agent
Human in the loop — Mayuresh SoniReviewed and approved the three ASU accents and the three keyframes before designer-agent was allowed to publish the brief — state-mutating design decisions route through Mayuresh first.
- 1410f07[designer-agent] docs(E01): lock design brief — palette, type, motion, keyframes— designer-agent
Phase 3 · Content + structure in parallel
Apr 17 2026 · 05:18 PDT
content-agent and html-structure-agent ship in parallel on non-overlapping files. content-agent writes src/content/asu.ts (764 lines of typed content — hero, about, clients, problem, sddIntro, substrate nodes, Ask-SDD pairs, session-loop stages, capabilities, stack, eleven agents, values, CTA, footer) with every factual claim sourced via comments. html-structure-agent scaffolds sixteen section components under src/components/pages/asu/ plus src/pages/asu.astro, src/pages/asu/build-log.astro, and src/content/asuBuildLog.ts placeholder. tech-lead merges the two outputs and patches wrapper fields (subNav, substrate, askSdd, sessionLoop, pageFooter) to bridge the two agents' naming conventions.
Agents- content-agent
- html-structure-agent
- tech-lead
Human in the loop — Mayuresh SoniDirected the parallel dispatch (content + structure on non-overlapping files so they could not collide), reviewed tech-lead's field-name bridge, signed off the scaffold before style and interactions were allowed to run.
- 9974121[content-agent + html-structure-agent] feat(asu): scaffold /asu page + typed content— content-agent + html-structure-agent
Phase 4 · Style + interactive islands
Apr 18 2026 · 05:30 PDT
css-style-agent and interactions-agent ship in parallel on non-overlapping files. css-style-agent polishes sixteen wrapper components for rhythm, AA contrast, and the three ASU accent sites; adds asu-substrate-pulse, asu-stage-dot-pulse, and asu-hero-aurora keyframes to globals.css with scoped reduced-motion overrides. interactions-agent writes AsuAskWidget, AsuSubstrateDiagram, AsuSessionLoopPlayer, and AsuExpandableCards as hydratable islands — ARIA tabs/toolbar/listbox patterns, full keyboard navigation, IntersectionObserver pause, Framer Motion variants imported from tokens.animations, no new npm deps. tech-lead routes integration fixes to align wrapper components with content's authoritative field names (label/intro vs. eyebrow/description).
Agents- css-style-agent
- interactions-agent
- tech-lead
Human in the loop — Mayuresh SoniApproved the four island specs (Ask-SDD widget, substrate diagram, session-loop player, expandable cards) before interactions-agent was allowed to hydrate any of them. Vetoed a "add Recharts" proposal — no new npm deps until reviewers re-audit the bundle.
- 4aa6f82[css-style-agent + interactions-agent] feat(E01): style polish + interactive islands— css-style-agent + interactions-agent
Phase 5 · Integration smoke test
Apr 18 2026 · 05:35 PDT
npm install (445 packages, 18s). npm run build green — 41 pages generated in 7.12s including /asu and /asu/build-log. Hero H1 renders; twelve H2s present across sections; 18 astro-islands hydrate under client:load (Navbar, AsuSubNav, AsuHero) or client:visible (below-fold). No console errors. Bundle: asu page JS 31.35 kB gzipped to 11.95 kB.
Agents- tech-lead
Human in the loop — Mayuresh SoniRan npm run build himself, read the full output, eyeballed the bundle size — build-green is the gate before the reviewer cycle runs and no agent can green-light the build on the human's behalf.
Phase 6 + 7 · Review cycle + verdict routing
Apr 18 2026 · 05:42 PDT
copy-reviewer, accessibility-reviewer, and technical-reviewer run in parallel. copy-reviewer: PASS — voice matches about.ts, no banned words, every TBD accounted for. accessibility-reviewer: PASS — single H1, logical H2 outline, skip-link wired, aria-label present on every interactive region, keyboard nav on all four islands. technical-reviewer: PASS — TypeScript strict compiles clean, no runtime console errors, basePath helper correctly prefixes internal URLs, no broken imports. decision-agent consolidates: PASS verdict, cleared to ship.
Agents- copy-reviewer
- accessibility-reviewer
- technical-reviewer
- decision-agent
Human in the loop — Mayuresh SoniReceived all three parallel reviewer reports plus decision-agent's consolidation, issued the PASS sign-off. build-log-agent is not allowed to publish session-log entries until this sign-off exists — the three-reviewer gate is architectural, not optional.
Phase 8 · Build log populated
Apr 18 2026 · 05:45 PDT
build-log-agent replaces the placeholder entries in src/content/asuBuildLog.ts with the real session-by-session record — phase timestamp, builder/reviewer output, and git SHA. This page is the verification surface: every claim above is checkable against the repo.
Agents- build-log-agent
Human in the loop — Mayuresh SoniRead every populated session entry against git log output before the page shipped — the build-log is a human-auditable artifact, so the human audits it.
Phase 9 · Editorial cuts — retire sections that did not earn their space
Apr 18 2026 · 14:10 PDT
tech-lead + content-agent pair-review the rendered page against the four ASU stakeholder lenses. Five sections retired for failing the "does this move the argument forward?" test: AsuCaseStudies (pre-SDD engagements, already covered by AsuClients logo wall), AsuSessionLoop (mechanics already shown in the How-It-Works dev scene and the CTA Q&A), AsuStack (RFP-depth tooling list on a decision-maker page; also conflicted with the "your cloud" promise), AsuCapabilities (every card rehashed content from adjacent sections), AsuAgents (the roster is demonstrated implicitly by the How-It-Works carousel). All components left on disk with inline comments explaining the retirement rationale and the conditions under which each would be resurrected.
Agents- tech-lead
- content-agent
Human in the loop — Mayuresh SoniCo-drove the pair-review, made the final call on each of the five retirements, authorized leaving the components on disk with retirement comments so a future editorial flip is a single uncomment, not a rebuild.
Phase 10 · Higher-ed adjacency + named POCs in About
Apr 18 2026 · 16:40 PDT
content-agent rewrites About paragraph 2 to surface the higher-ed track record that was buried in case-study copy: Georgetown University's Center on Education and the Workforce (credential-to-jobs data viz across 55 U.S. metros) and the long-running Stanford Solutions Science Lab partnership (Our Voice, CORD). Names the engagement lead (Mayuresh Soni) and tech lead (Ratnadeep Deshmane) so Nate and Kyle can route follow-up without guessing. Factual correction in the same pass: Stanford is delivered by a remote eight-engineer squad, not a co-located one.
Agents- content-agent
Human in the loop — Mayuresh SoniCaught the Stanford co-location factual error on first-pass read and corrected it himself — content-agent's original claim was wrong (said "co-located with California faculty"; truth is remote offshore squad). This is the kind of catch only a human on the account can make.
Phase 11 · Add "Running on SDD today" section — three live programs
Apr 18 2026 · 18:05 PDT
content-agent + html-structure-agent ship a new AsuRunningOnSdd section. Three programs with named stakeholders, current status, and the SDD surface each is running on: Sapey governance substrate (Roddy Radnia, RCFE compliance), Georgetown CEW credential-to-jobs tool (Frank Zhang / Maria Kahale, 34 decisions logged), Step Up Tutoring platform. Each card carries a one-sentence "structural analog to ASU" note so the reader sees why the program is relevant, not just that it exists. technical-reviewer catches a broken anchor on the Step Up card; fixed and reviewed again.
Agents- content-agent
- html-structure-agent
- technical-reviewer
Human in the loop — Mayuresh SoniWrote the "structural analog to ASU" one-liner on each of the three cards — the editorial bridge between the three live programs and the ASU pitch is a human-voice call, not a content-agent output.
Phase 12 · Philosophy pillars → carousel + infra-agent cluster
Apr 18 2026 · 20:15 PDT
interactions-agent converts the Philosophy pillar grid into a scroll-snap carousel (two cards visible on desktop with peek of the next). content-agent reorders the five pillars so buyer-facing credibility leads (Guardrails → Closed-loop → Multi-reviewer → Ops cluster → L2 engineer) instead of the prior internal-facing order. New "Ops cluster" pillar added with ServerCog icon — human-owned infra paired with AI-assisted delivery. designer-agent adds the ServerCog icon to the iconMap so the new pillar renders at parity with the rest.
Agents- interactions-agent
- content-agent
- designer-agent
Human in the loop — Mayuresh SoniReordered the five pillars himself so the buyer-facing credibility leads; added the Ops cluster pillar from his own mental model — an ASU reviewer expects infra ownership surfaced explicitly, no agent would have volunteered that reframe unprompted.
Phase 13 · Pricing band + 3-Q&A accordion on the CTA
Apr 19 2026 · 09:30 PDT
css-style-agent + content-agent augment the CTA with the three facts an ASU VP wants before booking a Zoom: fixed-fee charter pilot, 4-6 weeks, your cloud (Azure or AWS, your tenant, your repo). Below the pricing band, a 3-Q&A accordion inlines the three highest-priority objection-handlers from askSddPairs (data ownership, pilot cost, what to install). copy-reviewer catches that "pilot cost" originally quoted a range; reframes to "charter pricing — scoped on the Zoom" to avoid locking the number before discovery.
Agents- css-style-agent
- content-agent
- copy-reviewer
Human in the loop — Mayuresh SoniKilled the pilot-cost range content-agent had proposed; reframed to "charter pricing — scoped on the Zoom." Locking a number before a discovery call is a commercial decision, not a copy decision — routes to the human.
Phase 14 · ASU-lens review — persona reframing + guarantee rewrite
Apr 19 2026 · 11:20 PDT
tech-lead runs the full page through four named ASU stakeholder lenses: Kimberly (sponsor), Nate (engineering reviewer), Kyle (technical), Roger (executive). Three P0 items executed this session. One — the How-It-Works carousel's four seats were unlabeled; now mapped explicitly to ASU roles (Program Lead / Sponsor / Engineer / Designer) with a caption noting the exchanges are real Sapey-engagement artifacts used with permission. Two — the 35% closed-loop target read as an absolute guarantee; softened to a 50–60% productivity-gain target benchmarked sprint-by-sprint and reported monthly, methodology and raw numbers shared with the client. Three — the phrase "eleven agents, one human approval" created a low-oversight misperception; rewritten everywhere to "every state-mutating output reviewed by a human tech lead" with the three-reviewer-plus-decision-agent mechanism spelled out in the pillar.
Agents- tech-lead
- content-agent
Human in the loop — Mayuresh SoniRan the four-lens review personally — Kimberly, Nate, Kyle, Roger. This is the ASU-voice pass no agent could have made. Produced the three P0 findings, then dispatched content-agent to execute the rewrites under tech-lead's supervision.
Phase 15 · ASU-lens review — productivity ceiling + 30-day cadence + build-log elevation
Apr 19 2026 · 13:45 PDT
Eight P1/P2 items executed in one session. L2 productivity badge raised from 50–70% to "up to 100%" on multi-file agentic workflows. A new 30-day cadence timeline added to Outcomes — Week 1 kickoff, Week 2 first digest, Week 3 first full session loop, Week 4 review + adjust — because enterprise buyers read the calendar before the deliverables. New Q&A pair "How does SDD coexist with our existing PMO, SDLC, and change-advisory process?" added so a CAB reviewer sees their existing gates are preserved. Build-log callout added inside the CTA ("Or skip the Zoom") so a Zoom-averse reviewer has a one-click audit path. Count-consistency check across content + components confirms "eleven agents" used everywhere, no "ten" drift. AsuFooter verified content-driven, no hardcoded attribution strings.
Agents- content-agent
- html-structure-agent
- tech-lead
Human in the loop — Mayuresh SoniPrioritized the eight P1/P2 items into a single session plan; signed off the L2 productivity badge change (50–70% → "up to 100%") himself — productivity claims in public marketing are CEO-level decisions, not agent-level.
Phase 16 · Stakeholder-voice fact checks — co-location, Governed Autonomy, Pune hub
Apr 19 2026 · 15:30 PDT
Stakeholder review catches three copy-level misstatements that would have tripped an ASU fact-checker. One — About paragraph described the Stanford squad as "co-located with California faculty"; corrected to a remote eight-engineer squad in daily partnership with the California-based faculty team. Two — the "How we deliver — Governed Autonomy" callout in the About facts panel referenced a process framing BetaCraft does not currently publicly stand behind; block removed entirely, including the `delivery` field on the CompanyFacts type. Three — the delivery-hub reference to "our Pune, India delivery hub" scrubbed from the higher-ed paragraph to avoid a location claim the email reader has no context for. Remaining Pune references in the HQ fact ("Pune, Maharashtra · partners in San Francisco, Boston, and Australia") and the separate Stanford case-study card left intact because they are factual company info, not delivery-framing.
Agents- content-agent
- tech-lead
Human in the loop — Mayuresh SoniRaised all three factual issues directly — Stanford co-location, Governed Autonomy framing, Pune hub phrasing. None of these were flagged by any reviewer; only the human reading the page as an ASU stakeholder caught them. This is why the human-in-loop is not optional.
Phase 17 · Distribution pivot — retire AsuCTA, elevate the build log
Apr 19 2026 · 17:00 PDT
Business decision to send this page as a direct email to ASU leadership (not a public landing) with the Zoom CTA in the email body. Three consequences: AsuCTA (pricing band + Q&A accordion + booking card) pulled from the page — component + content retained on disk for email-template reuse. A new AsuBuildLogFinale component replaces it — single large card, headline "Every decision made while building this page, logged in real time", three quantified stats (eleven agents, seventeen sessions, ~62 hours idea-to-shipped), one button to /asu/build-log. Sub-nav label "Book a Zoom" → "Build log". AsuNavbar CTA "Book a 30-min Zoom" → "See the build log". AsuHero primary CTA flipped from "Book a 30-min Zoom" to "Read the build log"; secondary CTA updated to jump in-page to the How-It-Works carousel. Build log expanded with toolchain + input-sources sections and per-session agent attribution + human-in-loop notes. Net effect: on the page itself the single strongest action is "read the proof"; in the inbox, the single strongest action is "book the Zoom". The two surfaces no longer compete.
Agents- tech-lead
- content-agent
- html-structure-agent
- css-style-agent
- build-log-agent
Human in the loop — Mayuresh SoniMade the distribution-pivot business decision (email, not public landing); directed the AsuCTA → AsuBuildLogFinale swap; signed off the hero CTA flip. The decision to expand the build log with agent attribution + human-in-loop notes was a direct human directive — "show how we are actually using our agents here."