Skip to content

Add enterprise landing page - #36

Merged
willwashburn merged 2 commits into
mainfrom
codex/enterprise-page
Jul 30, 2026
Merged

Add enterprise landing page#36
willwashburn merged 2 commits into
mainfrom
codex/enterprise-page

Conversation

@willwashburn

@willwashburn willwashburn commented Jul 30, 2026

Copy link
Copy Markdown
Member

What changed

  • add a new /enterprise landing page aligned with the Agent Relay homepage
  • explain deployment options, governance controls, engagement stages, and the enterprise sales process
  • add booking calls to action that link to agentrelay.com/will
  • add the Enterprise link to the site footer and include the route in the sitemap
  • add enterprise-specific metadata, canonical URL, index directives, keywords, Service JSON-LD, and a dedicated Open Graph image

Why

Agent Relay needs a focused enterprise destination that explains how teams can deploy coordinated agents around their systems, security requirements, data boundaries, and operating model.

User impact

Enterprise visitors now have a clear path from the value proposition through deployment choices and governance considerations to a 30-minute exploratory call.

Validation

  • npm test (22 tests passed)
  • npm run build
  • TypeScript validation through the Next.js production build
  • responsive browser review at desktop and mobile sizes
  • verified /enterprise and /enterprise/og.png prerender successfully

Summary by cubic

Adds a dedicated /enterprise landing page that explains deployment options, security/governance, and our engagement process. Creates a clear path for enterprise visitors to book a 30-minute call and improves SEO for enterprise traffic.

  • New Features
    • Added /enterprise page with foundations, deployment choices (Relay Cloud, private cloud, self-managed), security controls, engagement stages, and a blended hero background.
    • Added booking CTAs linking to agentrelay.com/will.
    • Implemented enterprise SEO: canonical URL, index directives, keywords, Service JSON-LD, and a dedicated Open Graph image via a static og.png route.
    • Linked the page in the site footer and added the route to the sitemap.

Written for commit e49d292. Summary will update on new commits.

Review in cubic

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Changes

Enterprise marketing page

Layer / File(s) Summary
Enterprise page content and layout
web/app/enterprise/page.tsx, web/app/enterprise/enterprise.module.css, web/components/SiteFooter.tsx
Adds the Enterprise page sections, metadata, structured data, calls to action, responsive styling, reduced-motion behavior, and a footer link.
Enterprise social image generation
web/app/enterprise/og.png/route.tsx
Adds a static OG image route using brand fonts and Enterprise-specific copy.
Enterprise route discovery
web/app/sitemap.ts
Adds /enterprise to the sitemap with monthly change frequency and priority metadata.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

Poem

A rabbit hops through grids so bright,
With cards and calls arranged just right.
The Enterprise trail joins the way,
While fonts make social previews sway.
“Hop onward!” cheers the footer light.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly and concisely summarizes the main change: adding an enterprise landing page.
Description check ✅ Passed The description matches the changeset and covers the new page, SEO, footer link, sitemap entry, and OG image.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/enterprise-page

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@willwashburn
willwashburn marked this pull request as ready for review July 30, 2026 17:45
@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Preview deployed!

Environment URL
Web https://01b3ba73-agentrelay-web.agent-workforce.workers.dev

This is a Cloudflare Workers preview version of this PR's build.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5982175863

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

import { FadeIn } from '../../components/FadeIn';
import { SiteFooter } from '../../components/SiteFooter';
import { SiteNav } from '../../components/SiteNav';
import { ScribbleUnderline } from '../../components/home/icons';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep the homepage stylesheet out of this route

Importing ScribbleUnderline from components/home/icons also imports landing.module.css, because that component obtains its SVG class from the homepage CSS module. Consequently, a visitor loading /enterprise must download the entire 131 KB unminified homepage stylesheet in addition to the new enterprise CSS just to render one underline. Move the underline and its small style set into a standalone component/module, or let this page supply the class, to avoid bloating this new landing route.

Useful? React with 👍 / 👎.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
web/app/enterprise/page.tsx (1)

334-345: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

s.engagementItemContent isn't defined in enterprise.module.css.

This resolves to undefined, so the wrapping <div> renders without any class. Functionally harmless today because .engagementItem h3 / .engagementItem p are descendant selectors, but it's a dangling reference — either add the missing rule if a layout tweak was intended, or drop the unused class.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/app/enterprise/page.tsx` around lines 334 - 345, Resolve the undefined
s.engagementItemContent reference in the engagement.map markup by either adding
the intended engagementItemContent rule to enterprise.module.css or removing the
className from its wrapping div; keep the existing engagementItem descendant
styling intact.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web/app/enterprise/enterprise.module.css`:
- Around line 1-15: Insert a blank line in the .page rule between the
custom-property declarations and the min-height declaration, preserving all
existing styles.

In `@web/app/enterprise/page.tsx`:
- Around line 210-229: Update the hero markup in the enterprise page to render
the existing eyebrow badge with the label “Enterprise” above the headline,
matching the OG image route and using the defined s.eyebrow styling. If the
badge is intentionally not part of the page, remove the unused .eyebrow rule
from enterprise.module.css instead.

---

Nitpick comments:
In `@web/app/enterprise/page.tsx`:
- Around line 334-345: Resolve the undefined s.engagementItemContent reference
in the engagement.map markup by either adding the intended engagementItemContent
rule to enterprise.module.css or removing the className from its wrapping div;
keep the existing engagementItem descendant styling intact.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8b6224c7-f15a-439f-98cd-770eff704d2a

📥 Commits

Reviewing files that changed from the base of the PR and between 6817409 and 5982175.

📒 Files selected for processing (5)
  • web/app/enterprise/enterprise.module.css
  • web/app/enterprise/og.png/route.tsx
  • web/app/enterprise/page.tsx
  • web/app/sitemap.ts
  • web/components/SiteFooter.tsx

Comment on lines +1 to +15
.page {
--enterprise-bg: #0d2638;
--enterprise-surface: #0b1c2a;
--enterprise-surface-strong: #152e44;
--enterprise-line: rgba(116, 184, 226, 0.2);
--enterprise-line-strong: rgba(116, 184, 226, 0.34);
--enterprise-text: #edf4fb;
--enterprise-muted: #a8b8c8;
--enterprise-faint: #77879a;
--enterprise-accent: #74b8e2;
min-height: 100vh;
overflow-x: clip;
background: var(--enterprise-bg);
color: var(--enterprise-text);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Missing empty line before declaration (stylelint).

Line 11 (min-height: 100vh;) directly follows the custom-property block without a blank line, which the repo's declaration-empty-line-before rule flags.

🎨 Proposed fix
   --enterprise-accent: `#74b8e2`;
+
   min-height: 100vh;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.page {
--enterprise-bg: #0d2638;
--enterprise-surface: #0b1c2a;
--enterprise-surface-strong: #152e44;
--enterprise-line: rgba(116, 184, 226, 0.2);
--enterprise-line-strong: rgba(116, 184, 226, 0.34);
--enterprise-text: #edf4fb;
--enterprise-muted: #a8b8c8;
--enterprise-faint: #77879a;
--enterprise-accent: #74b8e2;
min-height: 100vh;
overflow-x: clip;
background: var(--enterprise-bg);
color: var(--enterprise-text);
}
.page {
--enterprise-bg: `#0d2638`;
--enterprise-surface: `#0b1c2a`;
--enterprise-surface-strong: `#152e44`;
--enterprise-line: rgba(116, 184, 226, 0.2);
--enterprise-line-strong: rgba(116, 184, 226, 0.34);
--enterprise-text: `#edf4fb`;
--enterprise-muted: `#a8b8c8`;
--enterprise-faint: `#77879a`;
--enterprise-accent: `#74b8e2`;
min-height: 100vh;
overflow-x: clip;
background: var(--enterprise-bg);
color: var(--enterprise-text);
}
🧰 Tools
🪛 Stylelint (17.14.1)

[error] 11-11: Expected empty line before declaration (declaration-empty-line-before)

(declaration-empty-line-before)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/app/enterprise/enterprise.module.css` around lines 1 - 15, Insert a blank
line in the .page rule between the custom-property declarations and the
min-height declaration, preserving all existing styles.

Source: Linters/SAST tools

Comment on lines +210 to +229
<section className={s.hero}>
<div className={s.heroGrid}>
<div className={s.heroCopy}>
<h1>
We&apos;ll build you a team of agents that deliver{' '}
<span className={s.outcomesWord}>
outcomes
<ScribbleUnderline />
</span>
</h1>
<p className={s.heroLead}>
We connect the models, tools, data, and guardrails, then help your organization take the system from its
first workflow to production.
</p>
<div className={s.heroActions}>
<SalesButton href={exploratoryCallHref} label="Book Exploratory Call" />
</div>
</div>
</div>
</section>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Hero may be missing the "Enterprise" eyebrow badge.

enterprise.module.css defines a .eyebrow class (styled as an uppercase pill label, lines 39-51) that isn't referenced anywhere in this file. The OG image route (web/app/enterprise/og.png/route.tsx) explicitly renders eyebrow="Enterprise" above the same headline, suggesting the hero was meant to show a matching "Enterprise" label but the markup got dropped. If intentional, the unused CSS rule should be removed instead.

💡 Possible fix if the badge was intended
             <div className={s.heroCopy}>
+              <span className={s.eyebrow}>Enterprise</span>
               <h1>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<section className={s.hero}>
<div className={s.heroGrid}>
<div className={s.heroCopy}>
<h1>
We&apos;ll build you a team of agents that deliver{' '}
<span className={s.outcomesWord}>
outcomes
<ScribbleUnderline />
</span>
</h1>
<p className={s.heroLead}>
We connect the models, tools, data, and guardrails, then help your organization take the system from its
first workflow to production.
</p>
<div className={s.heroActions}>
<SalesButton href={exploratoryCallHref} label="Book Exploratory Call" />
</div>
</div>
</div>
</section>
<section className={s.hero}>
<div className={s.heroGrid}>
<div className={s.heroCopy}>
<span className={s.eyebrow}>Enterprise</span>
<h1>
We&apos;ll build you a team of agents that deliver{' '}
<span className={s.outcomesWord}>
outcomes
<ScribbleUnderline />
</span>
</h1>
<p className={s.heroLead}>
We connect the models, tools, data, and guardrails, then help your organization take the system from its
first workflow to production.
</p>
<div className={s.heroActions}>
<SalesButton href={exploratoryCallHref} label="Book Exploratory Call" />
</div>
</div>
</div>
</section>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/app/enterprise/page.tsx` around lines 210 - 229, Update the hero markup
in the enterprise page to render the existing eyebrow badge with the label
“Enterprise” above the headline, matching the OG image route and using the
defined s.eyebrow styling. If the badge is intentionally not part of the page,
remove the unused .eyebrow rule from enterprise.module.css instead.

@willwashburn
willwashburn merged commit d6a0763 into main Jul 30, 2026
3 checks passed
@willwashburn
willwashburn deleted the codex/enterprise-page branch July 30, 2026 19:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant