Skip to content

fix: SEO#186

Merged
gocanto merged 2 commits intomainfrom
chore/fix-seo-metadata-showing-gustavo
Mar 20, 2026
Merged

fix: SEO#186
gocanto merged 2 commits intomainfrom
chore/fix-seo-metadata-showing-gustavo

Conversation

@gocanto
Copy link
Copy Markdown
Contributor

@gocanto gocanto commented Mar 20, 2026

Summary by CodeRabbit

  • Style

    • Applied content width constraint to markdown pages for improved readability
  • Chores

    • Updated site locale to en-GB for regional targeting
    • Refreshed SEO messaging and keywords across all pages, focusing on AI architecture consultancy and resilient systems
    • Refined brand positioning to emphasize company focus over founder identity

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 20, 2026

Warning

Rate limit exceeded

@gocanto has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 18 minutes and 52 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: dca8b725-35ba-4ad0-8612-d23a00bd3e12

📥 Commits

Reviewing files that changed from the base of the PR and between 9250e82 and 45681e5.

📒 Files selected for processing (3)
  • src/support/seo.ts
  • tests/support/seo-content.test.ts
  • tests/support/seo.test.ts

Walkthrough

This PR updates SEO and branding content across the website to position "Oullin" (brand) instead of "Gustavo" (person), shifts focus to "AI-era modernisation" and "resilient systems," refactors the SEO title composition from dash-based to pipe-based formatting with deduplication logic, and adds comprehensive content validation tests.

Changes

Cohort / File(s) Summary
SEO Title Formatting
src/support/seo.ts, tests/support/seo.test.ts
Modified title generation to use pipe delimiter (|) instead of dash, added deduplication logic to prevent repeated SITE_NAME when title equals SITE_NAME, updated test assertions to reflect new format and added deduplication test case.
HTML Metadata & Branding
index.html
Updated locale from en-US to en-GB, replaced descriptions/keywords to emphasize AI-era consulting for startups/scale-ups, updated organization logo URL to /brand/logo-touch.png.
Content Fixture Updates (Brand Repositioning)
storage/fixtures/home-page.json, storage/fixtures/about-page.json, storage/fixtures/contact-page.json, storage/fixtures/projects-page.json, storage/fixtures/work-with-us-page.json, storage/fixtures/writing-page.json, storage/fixtures/terms-and-policies-page.json, storage/fixtures/site.json
Rebranded SEO metadata to position "Oullin" (brand) instead of "Gustavo" (person), updated descriptions and keywords to focus on resilient systems, AI-era modernisation, and high-trust environments, removed Person schema entries for founder.
SEO Content Validation
tests/support/seo-content.test.ts
Added new comprehensive test suite to validate SEO alignment between fixtures and compiled HTML, verify brand-led positioning (no founder references), and assert proper metadata in index.html.
Typography Layout
src/css/app.css
Set .post-markdown max-width constraint to 85ch (was none).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title "fix: SEO" is overly vague and does not convey the specific nature of the changes—which involve a comprehensive rebranding from person-focused to organization-focused SEO metadata. Consider a more descriptive title like "fix: Rebrand SEO metadata from person-led to organization-focused" or "fix: Update SEO content and locale to en-GB" to better reflect the scope of changes.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/fix-seo-metadata-showing-gustavo
📝 Coding Plan
  • Generate coding plan for human review comments

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 and usage tips.

@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request improves the SEO of the Oullin website by updating metadata, descriptions, and keywords to align with the company's focus on AI architecture, resilient systems, and engineering judgment. It also includes technical SEO enhancements and new tests to maintain content quality and prevent outdated information.

Highlights

  • SEO Improvements: This PR focuses on enhancing the SEO of the Oullin website by updating metadata, descriptions, and keywords to better reflect the company's current positioning as a boutique software engineering and architecture consultancy specializing in AI-era modernization and resilient systems.
  • Content Updates: The descriptions and keywords across various pages (Home, About, Contact, Projects, Writing, Work With Us, and Terms and Policies) have been refined to emphasize AI architecture, resilient systems, and engineering judgment in regulated and high-trust environments.
  • Technical SEO: The PR updates the site language and locale to 'en-GB' and modifies the title formatting in the SEO class to avoid duplication of the brand name.
  • Testing: A new test file was added to ensure the SEO content fixtures remain aligned with the current Oullin positioning and to prevent the reintroduction of stale, person-led metadata.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a comprehensive set of Search Engine Optimization (SEO) improvements across the website. The changes include updating metadata such as descriptions and keywords, refining the page title generation logic to be more robust, and ensuring consistency in localization settings. A significant and valuable addition is the new suite of tests that verify SEO-related content, which will help prevent future regressions. The changes are well-executed and align with the goal of improving SEO. I have identified one area for improvement regarding image consistency in meta tags.

Comment thread index.html
@gocanto gocanto marked this pull request as ready for review March 20, 2026 09:20
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/support/seo.ts`:
- Around line 74-75: The current title composition logic (variables
normalizedPageTitle and title using SITE_NAME) only checks for exact equality
and can produce duplicates for pre-composed titles like "Projects | Oullin";
update the logic to first normalize and strip any existing brand suffix from
normalizedPageTitle (e.g., remove trailing patterns like " | SITE_NAME", " -
SITE_NAME" or ", SITE_NAME", case-insensitive, after trimming) and then compose
the final title as either SITE_NAME (if empty after stripping) or
`${strippedTitle} | ${SITE_NAME}`; modify the block that defines
normalizedPageTitle and title to perform the suffix-strip before the equality
check so pre-composed titles are de-duplicated.

In `@tests/support/seo-content.test.ts`:
- Around line 27-28: The tests use JSON.stringify to look for a
'"@type":"Person"' substring which is fragile; update the assertions in
tests/support/seo-content.test.ts to parse the jsonLd value (or use it directly
if it is already an object) for aboutPageContent.seo.jsonLd and
contactPageContent.seo.jsonLd, normalize to an array if needed, extract the
`@type` fields from each node, and assert that none of the types strictly equal
'Person' (handle string and array-valued `@type`). This makes the check
whitespace- and formatting-robust while keeping the checks targeted to
aboutPageContent and contactPageContent.

In `@tests/support/seo.test.ts`:
- Around line 149-157: Add a new test in tests/support/seo.test.ts mirroring the
existing "does not duplicate the brand name..." case but pass a title string
with surrounding spaces (e.g., `  ${SITE_NAME}  `) to instance.apply so it
verifies trimming behavior; assert document.title, og:title and twitter:title
all equal SITE_NAME to lock in the normalization branch in
Seo.apply/instance.apply.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1e478f32-c01d-4084-9922-df9c0b6d6594

📥 Commits

Reviewing files that changed from the base of the PR and between 70065f7 and 9250e82.

📒 Files selected for processing (13)
  • index.html
  • src/css/app.css
  • src/support/seo.ts
  • storage/fixtures/about-page.json
  • storage/fixtures/contact-page.json
  • storage/fixtures/home-page.json
  • storage/fixtures/projects-page.json
  • storage/fixtures/site.json
  • storage/fixtures/terms-and-policies-page.json
  • storage/fixtures/work-with-us-page.json
  • storage/fixtures/writing-page.json
  • tests/support/seo-content.test.ts
  • tests/support/seo.test.ts

Comment thread src/support/seo.ts Outdated
Comment thread tests/support/seo-content.test.ts Outdated
Comment thread tests/support/seo.test.ts
@gocanto gocanto merged commit ac0b593 into main Mar 20, 2026
6 checks passed
@gocanto gocanto deleted the chore/fix-seo-metadata-showing-gustavo branch March 20, 2026 09:35
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