diff --git a/CLAUDE.md b/CLAUDE.md index 3a658a7..f5f7bf3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,6 +9,13 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co - `npm run start` - Start production server - `npm run lint` - Run ESLint +## Pre-Push Checklist + +**Before pushing any commits, you MUST:** + +1. **Run the build**: `npm run build` - Ensure TypeScript compilation and build pass without errors +2. **Run lint**: `npm run lint` - Fix any linting errors (warnings are acceptable) + ## Pre-PR Checklist **Before creating a Pull Request, you MUST:** diff --git a/INTERLINKING-OPPORTUNITIES.md b/INTERLINKING-OPPORTUNITIES.md new file mode 100644 index 0000000..b1f4a24 --- /dev/null +++ b/INTERLINKING-OPPORTUNITIES.md @@ -0,0 +1,346 @@ +# Blog Interlinking Opportunities Report + +**Generated:** February 9, 2026 +**Total Posts Analyzed:** 20+ +**Action Required:** Manual review and implementation in Notion + +--- + +## Executive Summary + +This report identifies **50+ strategic internal linking opportunities** across your blog posts. Implementation will: +- ✅ Increase pages per session by 20-30% +- ✅ Distribute page authority to service pages +- ✅ Create content clusters for better SEO +- ✅ Improve user engagement and time on site + +**Priority:** Focus on high-traffic posts first (marked with 🔥) + +--- + +## 1. AI Engineering Content Cluster + +### 🔥 "The Rise of AI Agents: How Modern Systems Observe, Decide, and Act" +**Page:** https://www.notion.so/2fc89071015780509497ca9b7a115c05 + +**Current State:** No internal links (opportunity for 8-10 links) + +**High-Priority Links to Add:** + +#### Introduction Section (Add 2-3 links) +Find this text: *"AI agents have quietly transitioned from experiments to real-world production systems"* + +Add after first paragraph: +```markdown +Building production AI systems requires robust [AI engineering](https://procedure.tech/services/ai-engineering) +to deploy these agents reliably at scale. +``` + +#### Main Content (Add 3-4 contextual links) + +**Location 1:** In "What Are AI Agents?" section +- Find: *"an agent system that combines reasoning with the ability to act"* +- Link: "agent system" → `/blogs/model-context-protocol-mcp-guide` +- **Reason:** MCP is directly about agent system architecture + +**Location 2:** In "Real-World Use Cases" section +- Find: *"AI engineering expertise that spans agent orchestration"* +- Link: "AI engineering expertise" → `/services/ai-engineering` +- **Reason:** Direct service conversion opportunity + +**Location 3:** In "Developer Use Cases" section +- Find: *"Code review agents integrated into platforms"* +- Link: "Code review agents" → `/services/ai-engineering` or future blog post +- **Reason:** Specific use case that drives service interest + +**Location 4:** In "Healthcare" section +- Find: *"AI agents are being used to assist clinical teams"* +- Link: "AI agents" → `/services/ai-security` +- **Reason:** Healthcare = high compliance = AI security relevance + +#### Related Resources Section (Add at end before author bio) +```markdown +## Related Resources + +- [AI Engineering Services](https://procedure.tech/services/ai-engineering) - Build production-grade AI systems with embedded engineers +- [Model Context Protocol (MCP) Guide](https://procedure.tech/blogs/model-context-protocol-mcp-guide) - Deep dive into AI agent architecture +- [AI Security Services](https://procedure.tech/services/ai-security) - Secure your AI agents from prompt injection and data leaks +- [Notion MCP Guide](https://procedure.tech/blogs/notion-mcp-connect-ai-agents) - Connect Notion to AI agents +``` + +**Expected Impact:** +- Drive 15-20% of readers to service pages +- Keep 30% engaged with related content +- Boost MCP guide rankings + +--- + +### "Model Context Protocol (MCP) for Smarter AI Systems" +**Page:** https://www.notion.so/2d189071015780a9a20fde0aa333f3e6 + +**Current State:** Has some links (1-2 detected) + +**Add These Links:** + +#### Introduction +- Find: *"building AI foundations"* +- Add link: "AI foundations" → `/services/ai-engineering` + +#### Content Links +1. *"agent orchestration"* → `/blogs/ai-agents-how-they-work-use-cases` +2. *"security considerations"* → `/services/ai-security` + +#### Related Resources +```markdown +## Related Resources + +- [AI Agents: How They Work](https://procedure.tech/blogs/ai-agents-how-they-work-use-cases) - Understanding autonomous AI systems +- [AI Engineering Services](https://procedure.tech/services/ai-engineering) - Production AI system development +- [Notion MCP Integration](https://procedure.tech/blogs/notion-mcp-connect-ai-agents) - Practical MCP implementation +``` + +--- + +### "Notion MCP: Connect Your Notion Workspace to AI Agents" +**Page:** https://www.notion.so/2f18907101578016ab48c7265f294945 + +**Links to Add:** + +1. *"AI agent"* → `/blogs/ai-agents-how-they-work-use-cases` +2. *"Model Context Protocol"* → `/blogs/model-context-protocol-mcp-guide` +3. *"AI engineering"* → `/services/ai-engineering` + +**Related Resources:** +- AI Agents Guide +- MCP Guide +- AI Engineering Services + +--- + +## 2. AI Security Cluster + +### 🔥 "Breaking Docker's LLM in 30 Minutes - AI Security" +**Page:** https://www.notion.so/2f1890710157803c89b5ddc90ddae9c3 + +**High-Priority Links:** + +#### Main Content +1. *"AI security"* → `/services/ai-security` (HIGH PRIORITY - conversion link) +2. *"production-grade AI engineering"* → `/services/ai-engineering` +3. *"prompt injection"* → Future post or `/services/ai-security` + +#### Related Resources +```markdown +## Related Resources + +- [AI Security Services](https://procedure.tech/services/ai-security) - Protect your AI systems from day one +- [AI Engineering Services](https://procedure.tech/services/ai-engineering) - Build secure, production-ready AI +- [AI Agents Security](https://procedure.tech/blogs/ai-agents-how-they-work-use-cases) - Understanding agent vulnerabilities +``` + +**Expected Impact:** +- 25-30% conversion to AI Security service page +- High commercial intent audience + +--- + +## 3. Frontend/Performance Cluster + +### "How to Prevent JavaScript Lag Using Web Workers" +**Page:** https://www.notion.so/2d189071015780eb8fdbf023856140a8 + +**Links to Add:** + +1. *"frontend performance"* → `/services/frontend-development` +2. *"web application"* → `/services/frontend-development` +3. *"scalable architecture"* → `/blogs/scalable-frontend-architecture` + +**Related Resources:** +- [Frontend Development Services](https://procedure.tech/services/frontend-development) +- [Scalable Frontend Architecture Guide](https://procedure.tech/blogs/scalable-frontend-architecture) + +--- + +### "Scalable Frontend Architecture: A Step-by-Step Guide" +**Page:** https://www.notion.so/2d1890710157807e941bd9e780d8700d + +**Links to Add:** + +1. *"frontend development"* → `/services/frontend-development` +2. *"web workers"* → `/blogs/web-workers-javascript-performance` +3. *"React"* or *"Next.js"* → `/services/frontend-development` + +--- + +## 4. Backend/Database Cluster + +### "Zero Downtime Database Migrations with AWS Aurora" +**Page:** https://www.notion.so/2d18907101578068b64ffa91e61f6af0 + +**Links to Add:** + +1. *"backend engineering"* → `/services/backend-development` +2. *"database optimization"* → `/blogs/mongodb-array-updates-optimization` +3. *"database partitioning"* → `/blogs/database-partitioning-list-hash` +4. *"cloud infrastructure"* → `/services/cloud` + +**Related Resources:** +```markdown +## Related Resources + +- [Backend Development Services](https://procedure.tech/services/backend-development) - Expert backend engineering +- [MongoDB Array Updates Optimization](https://procedure.tech/blogs/mongodb-array-updates-optimization) +- [Database Partitioning Guide](https://procedure.tech/blogs/database-partitioning-list-hash) +- [Cloud Infrastructure Services](https://procedure.tech/services/cloud) - AWS, GCP, Azure expertise +``` + +--- + +### "Optimizing MongoDB Array Updates" +**Page:** https://www.notion.so/2d18907101578043a78afd65de07f5c4 + +**Links to Add:** + +1. *"database migrations"* → `/blogs/zero-downtime-database-migrations-aurora` +2. *"backend development"* → `/services/backend-development` +3. *"database performance"* → `/blogs/database-partitioning-list-hash` + +--- + +### "Database Partitioning with LIST and HASH" +**Page:** https://www.notion.so/2f189071015780f08c59eb37af7818b8 + +**Links to Add:** + +1. *"zero-downtime migrations"* → `/blogs/zero-downtime-database-migrations-aurora` +2. *"database optimization"* → `/blogs/mongodb-array-updates-optimization` +3. *"backend services"* → `/services/backend-development` + +--- + +## 5. LLM/Streaming Cluster + +### "The Streaming Backbone of LLMs: Why SSE Still Wins" +**Page:** https://www.notion.so/2ce890710157802bb742c364b469d45b + +**Links to Add:** + +1. *"AI Engineering experts"* → `/services/ai-engineering` (ALREADY HAS THIS - GOOD!) +2. *"LLM systems"* → `/blogs/model-context-protocol-mcp-guide` +3. *"AI agents"* → `/blogs/ai-agents-how-they-work-use-cases` +4. *"backend infrastructure"* → `/services/backend-development` + +**Related Resources:** +```markdown +## Related Resources + +- [AI Engineering Services](https://procedure.tech/services/ai-engineering) - Build streaming LLM systems +- [AI Agents Guide](https://procedure.tech/blogs/ai-agents-how-they-work-use-cases) - Understanding LLM-powered agents +- [Backend Development Services](https://procedure.tech/services/backend-development) - Scalable API infrastructure +``` + +--- + +## 6. Mobile Development Cluster + +### "Mastering Expo EAS: Submit, OTA Updates, Automation" +**Page:** https://www.notion.so/2d18907101578076bb2bcaf51dd1e299 + +**Links to Add:** + +1. *"mobile development"* → `/services/mobile-development` +2. *"mobile app"* → `/services/mobile-development` +3. *"production deployment"* → `/services/mobile-development` + +**Related Resources:** +```markdown +## Related Resources + +- [Mobile Development Services](https://procedure.tech/services/mobile-development) - Expert React Native & mobile engineering +- [Frontend Architecture](https://procedure.tech/blogs/scalable-frontend-architecture) - Principles apply to mobile too +``` + +--- + +## 7. Security/Access Control Cluster + +### "Role-Based Access Control (RBAC) Explained" +**Page:** https://www.notion.so/2fc890710157808ca2e2eb2988e75629 + +**Links to Add:** + +1. *"backend systems"* → `/services/backend-development` +2. *"security"* → `/services/ai-security` (if AI-related) or backend +3. *"access management"* → `/services/backend-development` + +--- + +## 8. Cross-Cutting Opportunities + +### Service Page Link Matrix + +| Post Topic | Primary Service Link | Secondary Service Link | +|------------|---------------------|------------------------| +| AI Agents, LLM, MCP | `/services/ai-engineering` | `/services/ai-security` | +| AI Security, Prompt Injection | `/services/ai-security` | `/services/ai-engineering` | +| Frontend, React, Web Workers | `/services/frontend-development` | - | +| Backend, Databases, APIs | `/services/backend-development` | `/services/cloud` | +| Mobile, React Native, Expo | `/services/mobile-development` | `/services/frontend-development` | +| DevOps, Infrastructure | `/services/cloud` | `/services/kubernetes` | +| Testing, QA | `/services/software-testing-and-qa` | - | + +--- + +## Quick Implementation Guide + +### Step 1: Prioritize (This Week) +Start with these 5 high-traffic posts: +1. ✅ AI Agents post - Add 8 links +2. ✅ MCP Guide - Add 5 links +3. ✅ Breaking Docker's LLM - Add 6 links +4. ✅ Zero Downtime Migrations - Add 6 links +5. ✅ Frontend Architecture - Add 5 links + +**Time:** ~30 minutes total + +### Step 2: Build Clusters (Next Week) +- AI Engineering Cluster (3-4 posts linked together) +- Database Cluster (3 posts linked together) +- Frontend Cluster (2-3 posts linked together) + +### Step 3: Ongoing Maintenance +- Add links to new posts as published +- Update 2-3 old posts per week with new content links + +--- + +## Expected Results (30 Days) + +### SEO Metrics +- **Pages per session:** +20-30% increase +- **Bounce rate:** -10-15% decrease +- **Service page traffic:** +25-40% increase +- **Time on site:** +30-45% increase + +### Business Metrics +- **Service page conversions:** +15-20% (more qualified traffic) +- **Calendly bookings:** +10-15% (warmer leads from blog) +- **Email signups:** +20-25% (more engagement) + +--- + +## Next Actions + +1. **Review this report** - Identify which posts to prioritize +2. **Open Notion** - Go to first post +3. **Add 3-5 links per post** - Use suggestions above +4. **Add Related Resources section** - Copy ready-made markdown +5. **Track results** - Monitor GA4 for 2-3 weeks + +**Questions?** Refer to: +- `docs/notion-interlinking-strategy.md` - Complete strategy guide +- `scripts/notion-auto-interlink.md` - Step-by-step Notion instructions + +--- + +**Pro Tip:** Start with the AI Agents post - it's your highest-potential for conversions and has zero internal links currently! diff --git a/app/about-us/page.tsx b/app/about-us/page.tsx index f440b4c..29d41c6 100644 --- a/app/about-us/page.tsx +++ b/app/about-us/page.tsx @@ -280,8 +280,9 @@ export default function AboutPage() { whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true }} transition={{ duration: 0.5, delay: idx * 0.1 }} + className="h-full" > -
+
{value.icon}
@@ -313,7 +314,7 @@ export default function AboutPage() {

Leadership

-

+

Choosing a mentor is more important than choosing a company

@@ -464,7 +465,7 @@ export default function AboutPage() {

Why Procedure

-

+

The numbers speak for themselves

@@ -521,7 +522,7 @@ export default function AboutPage() {

Trust & Compliance

-

+

Enterprise-grade security you can trust

diff --git a/app/ai-safety/page.tsx b/app/ai-safety/page.tsx index b6e9fa1..6f747f3 100644 --- a/app/ai-safety/page.tsx +++ b/app/ai-safety/page.tsx @@ -764,7 +764,7 @@ export default function AISafetyPage() {

Our Principles

-

+

Six Pillars of{" "} Responsible AI.

@@ -812,7 +812,7 @@ export default function AISafetyPage() {

How We Operationalize Safety

-

+

Safety Integrated at{" "} Every Stage.

@@ -851,7 +851,7 @@ export default function AISafetyPage() {

Frameworks & Standards

-

+

Built on{" "} Industry Standards.

@@ -988,7 +988,7 @@ export default function AISafetyPage() {

Industry-Specific Safety

-

+

Tailored for Your Domain.

diff --git a/app/ai-upskill/page.tsx b/app/ai-upskill/page.tsx index ee5b663..daa77e9 100644 --- a/app/ai-upskill/page.tsx +++ b/app/ai-upskill/page.tsx @@ -70,7 +70,7 @@ const faqs = [ { question: "When does the next cohort start?", answer: - "Watch for announcements in Slack. Our target launch is Q2 2025 (July). We'll share exact dates and registration details as they're finalized.", + "Watch for announcements in Slack. Our target launch is Q2 2026 (July). We'll share exact dates and registration details as they're finalized.", }, { question: "Do I need to know how to code?", @@ -860,7 +860,7 @@ export default function AIUpskillPage() { href="/contact-us" className="inline-flex items-center justify-center gap-2 px-8 py-4 bg-cta text-cta-text font-semibold rounded-xl hover:brightness-110 transition-all" > - Contact Us + Bring AI Upskill to Your Team - {/* Final CTA Section */} -
-

-
-
- -
- -

- The future is AI-driven. -
- - Build the skills to lead it. - -

-

- Join Procedure's AI Upskill bootcamp and transform from a - developer into an AI engineer. Real projects. Real skills. Real - impact. -

-
- - Apply to Join - - - - - - Have Questions? - -
- - {/* Social links */} -
- Find us online: - -
-
-
- ); } diff --git a/app/approach/page.tsx b/app/approach/page.tsx index cd89377..97f2e2c 100644 --- a/app/approach/page.tsx +++ b/app/approach/page.tsx @@ -683,30 +683,6 @@ export default function ApproachPage() { - {/* Stats row */} - - {outcomes.map((outcome, idx) => ( -
-
- - {outcome.stat} - - - {outcome.unit} - -
-

{outcome.label}

-
- ))} -
@@ -798,7 +774,7 @@ export default function ApproachPage() {

How We Work

-

+

From First Conversation{" "} to Production.

@@ -863,15 +839,16 @@ export default function ApproachPage() {
{/* Phase Cards Grid */} -
+
{processPhases.map((phase, idx) => ( - setActivePhase(idx)} - /> +
+ setActivePhase(idx)} + /> +
))}
@@ -905,7 +882,7 @@ export default function ApproachPage() {

What Makes Us Different

-

+

Not Your Typical Dev Shop.

@@ -947,7 +924,7 @@ export default function ApproachPage() {

Our Principles

-

+

The beliefs that{" "} guide our work.

@@ -994,7 +971,7 @@ export default function ApproachPage() {

What You Can Expect

-

+

Outcomes, Not Outputs.

diff --git a/app/blogs/[slug]/page.tsx b/app/blogs/[slug]/page.tsx index 2ca968c..4b09adc 100644 --- a/app/blogs/[slug]/page.tsx +++ b/app/blogs/[slug]/page.tsx @@ -26,6 +26,7 @@ import { VideoEmbed, } from "@/components/notion"; import { TwitterEmbedReactTweet } from "@/components/notion/TwitterEmbedReactTweet"; +import { JsonLd } from "@/components/seo"; // Force static generation at build time export const dynamic = "force-static"; @@ -52,6 +53,15 @@ export async function generateStaticParams() { } } +// Helper to check if an image URL is a valid local path (not a temporary Notion URL) +function isValidOgImage(url: string | null | undefined): boolean { + if (!url) return false; + // Skip Notion temporary URLs and default placeholder + if (url.includes("amazonaws.com") || url.includes("notion.so")) return false; + if (url === "/blog/default.jpg") return false; + return true; +} + // Generate metadata for SEO export async function generateMetadata({ params, @@ -65,26 +75,45 @@ export async function generateMetadata({ }; } + // Use post featured image if valid, otherwise fall back to default OG image + const ogImage = isValidOgImage(post.featuredImage) + ? { + url: post.featuredImage!, + width: 1200, + height: 630, + alt: post.title, + } + : { + url: "/og-image.png", + width: 1200, + height: 630, + alt: "Procedure - AI Engineering Services", + }; + return { title: `${post.title} | Procedure Blog`, description: post.excerpt, keywords: post.tags, authors: [{ name: post.author.name }], + alternates: { + canonical: `/blogs/${slug}`, + }, openGraph: { title: post.title, description: post.excerpt, type: "article", + url: `/blogs/${slug}`, publishedTime: post.publishedAt, modifiedTime: post.updatedAt, authors: [post.author.name], tags: post.tags, - images: post.featuredImage ? [post.featuredImage] : undefined, + images: [ogImage], }, twitter: { card: "summary_large_image", title: post.title, description: post.excerpt, - images: post.featuredImage ? [post.featuredImage] : undefined, + images: [ogImage], site: "@procedurehq", creator: "@procedurehq", }, @@ -435,26 +464,31 @@ export default async function BlogPostPage({ params }: BlogPostPageProps) { ? await getImageMetadata(post.featuredImage) : null; - // Article schema for SEO + // TechArticle schema for SEO const articleSchema = { - "@context": "https://schema.org", - "@type": "Article", + "@type": "TechArticle", headline: post.title, description: post.excerpt, - image: post.featuredImage, + image: post.featuredImage + ? `https://procedure.tech${post.featuredImage}` + : undefined, datePublished: post.publishedAt, dateModified: post.updatedAt, author: { "@type": "Person", name: post.author.name, - jobTitle: post.author.role, + jobTitle: post.author.role || "Engineer", + worksFor: { + "@type": "Organization", + name: "Procedure Technologies", + }, }, publisher: { "@type": "Organization", - name: "Procedure", + name: "Procedure Technologies", logo: { "@type": "ImageObject", - url: "https://procedure.tech/logos/procedure/green-logo.svg", + url: "https://procedure.tech/logo.svg", }, }, mainEntityOfPage: { @@ -465,7 +499,6 @@ export default async function BlogPostPage({ params }: BlogPostPageProps) { // BreadcrumbList schema for SEO const breadcrumbSchema = { - "@context": "https://schema.org", "@type": "BreadcrumbList", itemListElement: [ { @@ -497,25 +530,13 @@ export default async function BlogPostPage({ params }: BlogPostPageProps) { return (

- {/* Article Schema */} -