CLAUDE.md
CLAUDE.md
This file gives Claude (and any other AI assistant) the working context required to safely edit the Umplify website. The site is a Jekyll project deployed via GitHub Pages at https://umplify.com.
What this site is
Umplify is a Toronto-based AI transformation and Azure cloud platform engineering partner. The website is a marketing and lead-generation site for software-led businesses, ISVs, scale-ups, and enterprise teams in Canada and the United States.
Primary visitor goals (in priority order):
- Book a free discovery call (
/contact/). - Understand the AI transformation and Azure platform service offering.
- Read insight content on the blog at
/blog/.
Tech stack
- Static site generator: Jekyll, deployed via GitHub Pages.
- Theme:
mmistakes/minimal-mistakesv4.24.0 viaremote_theme(do not vendor the theme). - Markdown: kramdown with GFM input.
- Plugins (must stay GitHub Pages compatible):
jekyll-paginatejekyll-sitemapjekyll-gistjekyll-feedjekyll-include-cachejekyll-redirect-from
- Hosting: GitHub Pages with custom domain via
CNAME. - Analytics: Google gtag (
G-WSEKFYVPNE) configured in_config.yml.
If a change requires a plugin not on the GitHub Pages allow-list, do not add it. Find another approach.
Repository layout
_config.yml Site config (title, plugins, defaults, analytics)
_data/
navigation.yml Top nav order and labels
ui-text.yml Theme UI strings (do not edit lightly)
_includes/ Theme overrides and partials
head/custom.html Custom head: favicon, OG tags, JSON-LD schemas
masthead.html Top nav (overrides theme default)
footer.html, etc.
_layouts/ Theme layouts (single, splash, home, archive, etc.)
_pages/ All non-blog pages (services, home, about, contact, faq)
_posts/ Blog articles. Filename pattern: YYYY-MM-DD-slug.md
_sass/ Theme SCSS overrides
assets/
images/
revamp/ Current hero/diagram SVGs
splash/ Feature-row icons
logos/ Brand logos
robots.txt Allows all, points to sitemap.xml
CNAME umplify.com
Content authoring rules
Brand voice
- Plain, senior, production-first. The reader is a CTO, VP Engineering, founder, or senior architect. Speak in their language.
- No fluff. Every sentence either establishes credibility or drives a decision.
- No em dashes (—). Use commas, periods, semicolons, parentheses, or restructure the sentence. (See
memory/feedback_no_em_dashes.mdin the user’s memory.) - Canadian English spellings where they differ (e.g., “modernize” is fine, “centre” not “center” only in proper nouns; the site uses US-style “modernize/optimize”).
- Avoid hype words: “revolutionary”, “cutting-edge”, “10x”, “game-changer”, “transformative” without proof.
- Outcomes before features. Lead with what the reader gets, then explain how.
- CTA ladder. Every important page should end with at least one primary CTA (
Book a free discovery call) and one secondary (e.g.,How we engage,Read the FAQ).
Page front matter conventions
Service pages should look like this:
---
title: "Service Name"
permalink: /service-slug/
layout: single
author_profile: false
service_schema: true # renders Schema.org Service JSON-LD via _includes/head/custom.html
excerpt: "One sentence used for meta description and OG/Twitter card."
header:
overlay_color: "#08142C"
overlay_filter: "0.22"
overlay_image: /assets/images/revamp/hero-ai.svg # AI pages
# or /assets/images/revamp/hero-cloud.svg # platform/Azure pages
redirect_from: # optional, requires jekyll-redirect-from
- /old-url/
---
Landing pages (home, ai-transformation, cloud-solutions) use layout: splash and feature rows. See _pages/home.md for the canonical pattern.
Permalinks
Service pages use top-level slugs (/agentic-workflow-design/). Legacy URLs under /cloud-solutions/... are kept as redirect_to: stubs for SEO continuity. Do not break existing permalinks. If a page is retired, replace its content with a stub:
---
title: "..."
permalink: /old/url/
sitemap: false
redirect_to: /new/url/
---
Internal linking
Every service page should:
- Link to at least three related service pages.
- Link to
/contact/. - Link to
/how-we-engage/if appropriate.
Use markdown link syntax with leading slash: [Label](/path/).
Images
- Hero/header images live in
assets/images/revamp/. - Feature row icons live in
assets/images/splash/. - Always include alt text on
. - SVG is preferred. Avoid raster heroes when an SVG exists.
- The site
og_imageis/assets/images/revamp/hero-ai.svg. Some social platforms reject SVG OG images; prefer setting a page-specificheader.overlay_imageso the head template emits a usable URL.
SEO and structured data
_includes/head/custom.html already emits:
OrganizationJSON-LD on every page.ServiceJSON-LD when a page hasservice_schema: truein its front matter.FAQPageJSON-LD on/faq/(kept in sync with_pages/faq.md).BlogPostingJSON-LD on blog posts.
If you add a new FAQ question on _pages/faq.md, also update the FAQPage JSON-LD block in _includes/head/custom.html. They must stay synchronized.
If you add a new service page, set service_schema: true to get Service JSON-LD for free.
Navigation
Top nav is driven by _data/navigation.yml. Keep the list short (target eight items or fewer). New service detail pages should be cross-linked from the relevant landing page (/ai-transformation/ or /cloud-solutions/), not added to the top nav.
Blog posts
Blog posts live in _posts/ with filenames YYYY-MM-DD-slug.md. They are excluded from the audit process Claude runs on marketing pages. Do not modify blog articles unless explicitly asked. When writing new posts:
- No em dashes (this is a project-wide rule, not blog-only).
- Use the same kramdown/GFM conventions as existing posts.
- Posts inherit
layout: singleand other defaults from_config.yml.
Local development
bundle install
bundle exec jekyll serve
# open http://127.0.0.1:4000/
Built output goes to _site/. Never commit _site/.
Things to avoid
- Em dashes anywhere in site content.
- Adding plugins outside the GitHub Pages allow-list.
- Editing files inside the
mmistakes/minimal-mistakestheme directly. Override via_includes/,_layouts/, or_sass/instead. - Changing existing permalinks without a
redirect_from:(orredirect_to:stub) covering the old URL. - Committing build artifacts (
_site/,.jekyll-cache/,.sass-cache/). - Hard-coding the site URL. Use
https://umplify.comor| absolute_url/| relative_urlfilters.
Useful tasks for Claude
- Add a new service page. Copy the front matter pattern above, set
service_schema: true, write the body, cross-link from_pages/ai-transformation.mdor_pages/cloud-solutions.md, and link related pages from inside the new page. - Retire a page. Replace its content with the
redirect_to:stub pattern shown above and verify nothing else in the repo links to it (grep -r "/old-url/" _pages _data _includes). - Add a new FAQ question. Edit both
_pages/faq.mdand theFAQPageJSON-LD block inside_includes/head/custom.html. - Update the brand description. Update
_config.yml(title,description,subtitle) and re-check_includes/head/custom.htmlOrganizationJSON-LD if structural details change. - Audit content for em dashes before commit.
grep -rn "—" _pages _data _includes _config.yml _posts. The result should be empty.
Contact for questions
Repository owner: Arash Sabet (arash.sabet@umplify.com). The site reflects positioning that has been deliberately chosen; large strategic shifts (positioning, pricing language, ICP) should be confirmed before being shipped.