From 1bc7d66de9355920754109ade82591582bafad7f Mon Sep 17 00:00:00 2001 From: vibemarketerpromax Date: Thu, 12 Feb 2026 10:45:17 +0530 Subject: [PATCH 1/9] fix: Improve homepage heading spacing, title case, footer layout, and logo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Increase heading-to-subheading spacing (mb-4 → mb-6 sm:mb-8) across HowWeWork, CTA, ValueProposition, EngagementModels, and Team sections - Apply proper title case to all section headings (lowercase stop words like "and", "to", "from", "by") - Improve footer menu spacing: h3 mb-4→mb-5, link spacing 2.5→3, section gap mb-6→mb-8 - Fix cropped Procedure logo in FooterReveal (w-[120%] → w-full) Co-Authored-By: Claude Opus 4.6 --- components/FooterReveal.tsx | 2 +- components/footer.tsx | 24 ++++++++++----------- components/sections/CTA.tsx | 4 ++-- components/sections/EngagementModels.tsx | 4 ++-- components/sections/FAQ.tsx | 2 +- components/sections/FeaturedCaseStudies.tsx | 2 +- components/sections/HowWeWork.tsx | 6 +++--- components/sections/Services.tsx | 2 +- components/sections/Stats.tsx | 2 +- components/sections/Team.tsx | 2 +- components/sections/Testimonials.tsx | 2 +- components/sections/ValueProposition.tsx | 4 ++-- 12 files changed, 28 insertions(+), 28 deletions(-) diff --git a/components/FooterReveal.tsx b/components/FooterReveal.tsx index 5c395c6..7f607e8 100644 --- a/components/FooterReveal.tsx +++ b/components/FooterReveal.tsx @@ -13,7 +13,7 @@ export function FooterReveal() { textColor="var(--color-text-muted)" dotColor="var(--color-text-muted)" variant="outlined" - className="w-[120%] max-w-none h-auto opacity-70" + className="w-full max-w-none h-auto opacity-70" /> diff --git a/components/footer.tsx b/components/footer.tsx index abd38da..dba15f3 100644 --- a/components/footer.tsx +++ b/components/footer.tsx @@ -163,10 +163,10 @@ export function Footer() { {/* Column 1: AI & ML + Engineering */}
-

+

AI & ML

-
    +
      {footerLinks.aiServices.map((link) => (
    • -

      +

      Engineering

      -
        +
          {footerLinks.productEngineering.map((link) => (
        • -

          +

          Cloud & Design

          -
            +
              {footerLinks.cloudDesign.map((link) => (
            • -

              +

              Industries

              -
                +
                  {footerLinks.industries.map((link) => (
                • -

                  +

                  Company

                  -
                    +
                      {footerLinks.company.map((link) => (
                    • -

                      +

                      Resources

                      -
                        +
                        • -

                          - Ready to secure your AI initiatives? +

                          + Ready to Secure Your AI Initiatives?

                          Whether you're building your first LLM application or scaling diff --git a/components/sections/EngagementModels.tsx b/components/sections/EngagementModels.tsx index a710012..d6e2e88 100644 --- a/components/sections/EngagementModels.tsx +++ b/components/sections/EngagementModels.tsx @@ -111,8 +111,8 @@ export function EngagementModels() {

                          Engagement Models

                          -

                          - Enterprise partnership models built for scale +

                          + Enterprise Partnership Models Built for Scale

                          Three proven engagement frameworks designed for different business diff --git a/components/sections/FAQ.tsx b/components/sections/FAQ.tsx index 03ce225..cdb546d 100644 --- a/components/sections/FAQ.tsx +++ b/components/sections/FAQ.tsx @@ -67,7 +67,7 @@ export function FAQ() { FAQ

                          - Frequently asked questions + Frequently Asked Questions

                          diff --git a/components/sections/FeaturedCaseStudies.tsx b/components/sections/FeaturedCaseStudies.tsx index eefbc21..24862ac 100644 --- a/components/sections/FeaturedCaseStudies.tsx +++ b/components/sections/FeaturedCaseStudies.tsx @@ -35,7 +35,7 @@ export function FeaturedCaseStudies({ caseStudies }: FeaturedCaseStudiesProps) { Proven Results

                          - AI that ships. Results that matter. + AI That Ships. Results That Matter.

Our Process

-

- From first call to{" "} - production-ready code +

+ From First Call to{" "} + Production-Ready Code

A proven engagement process built for enterprise velocity. Your team diff --git a/components/sections/Services.tsx b/components/sections/Services.tsx index c64d452..d5318d3 100644 --- a/components/sections/Services.tsx +++ b/components/sections/Services.tsx @@ -177,7 +177,7 @@ export function Services() { What You Get

- AI engineering and product development services + AI Engineering and Product Development Services

diff --git a/components/sections/Stats.tsx b/components/sections/Stats.tsx index 85fc30d..36df9bb 100644 --- a/components/sections/Stats.tsx +++ b/components/sections/Stats.tsx @@ -20,7 +20,7 @@ interface StatsProps { } export function Stats({ - title = "Proven results from embedded engineering", + title = "Proven Results from Embedded Engineering", stats = defaultStats, }: StatsProps) { return ( diff --git a/components/sections/Team.tsx b/components/sections/Team.tsx index 14aa8d8..d4bb99e 100644 --- a/components/sections/Team.tsx +++ b/components/sections/Team.tsx @@ -171,7 +171,7 @@ export function Team() {

Our Team

-

+

Senior Engineers. Production Focus. Your Extended Team.

diff --git a/components/sections/Testimonials.tsx b/components/sections/Testimonials.tsx index eb6f51f..fe04a06 100644 --- a/components/sections/Testimonials.tsx +++ b/components/sections/Testimonials.tsx @@ -29,7 +29,7 @@ export function Testimonials() { Testimonials

- Trusted by engineering leaders + Trusted by Engineering Leaders

diff --git a/components/sections/ValueProposition.tsx b/components/sections/ValueProposition.tsx index dcdf6b4..437d68e 100644 --- a/components/sections/ValueProposition.tsx +++ b/components/sections/ValueProposition.tsx @@ -97,8 +97,8 @@ export function ValueProposition() {

Why teams choose us

-

- AI engineers who build, not consultants who advise +

+ AI Engineers Who Build, Not Consultants Who Advise

Procedure delivers senior AI engineers who write production code, not From 24cf33bdf48ffd308199a09b4093324d9eb17355 Mon Sep 17 00:00:00 2001 From: vibemarketerpromax Date: Thu, 12 Feb 2026 11:23:53 +0530 Subject: [PATCH 2/9] fix: Use consistent read time between blog cards and blog pages The blog listing cards used the Notion "Read Time" property (default 5), while the blog post page recalculated from word count at 200 wpm. This caused different read times to show. Now both use the Notion property value consistently. Co-Authored-By: Claude Opus 4.6 --- lib/notion-blog.ts | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/lib/notion-blog.ts b/lib/notion-blog.ts index 66af460..87ca46f 100644 --- a/lib/notion-blog.ts +++ b/lib/notion-blog.ts @@ -275,15 +275,6 @@ function generateSlug(title: string): string { } // ============================================================================= -// Read Time Calculation -// ============================================================================= - -function calculateReadTime(content: string): number { - const wordsPerMinute = 200; - const words = content.trim().split(/\s+/).length; - return Math.ceil(words / wordsPerMinute); -} - // ============================================================================= // Transform Notion Page to BlogPost // ============================================================================= @@ -787,18 +778,18 @@ export const getNotionBlogPostBySlug = cache( // Cache any images in the content to public folder await cacheContentImages(notionContent, slug, "blog"); - // Generate content string for read time calculation + // Generate content string const contentText = notionContent .filter((block) => block.text) .map((block) => block.text) .join(" "); - const readTime = calculateReadTime(contentText) || detail.readTime; - + // Use the same readTime from Notion property as the listing cards + // to ensure consistency between blog cards and blog post pages. + // The Notion "Read Time" property (or default 5) is set in processNotionPage(). return { ...detail, content: contentText, - readTime, notionContent, }; } From 871fab96c48ce2963fc2ea303ad3c4255d5f0fad Mon Sep 17 00:00:00 2001 From: vibemarketerpromax Date: Thu, 12 Feb 2026 11:27:27 +0530 Subject: [PATCH 3/9] feat: Add contextual blog CTAs and fix About page layout - Blog CTA now adapts heading, description, and service link based on post category (AI Engineering, LLM, Engineering, Product Dev, etc.) - Increase spacing between Trust & Compliance heading and badges on About page - Make value cards equal height regardless of content length Co-Authored-By: Claude Opus 4.6 --- app/about-us/page.tsx | 5 +- app/blogs/[slug]/page.tsx | 2 +- components/blog/BlogCTA.tsx | 96 +++++++++++++++++++++++++++++++++---- 3 files changed, 92 insertions(+), 11 deletions(-) diff --git a/app/about-us/page.tsx b/app/about-us/page.tsx index f440b4c..f2e4d2c 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}
@@ -521,7 +522,7 @@ export default function AboutPage() {

Trust & Compliance

-

+

Enterprise-grade security you can trust

diff --git a/app/blogs/[slug]/page.tsx b/app/blogs/[slug]/page.tsx index 50634a6..5cfe3cb 100644 --- a/app/blogs/[slug]/page.tsx +++ b/app/blogs/[slug]/page.tsx @@ -775,7 +775,7 @@ export default async function BlogPostPage({ params }: BlogPostPageProps) { )} {/* CTA Section */} - + ); } diff --git a/components/blog/BlogCTA.tsx b/components/blog/BlogCTA.tsx index f991748..7271fd7 100644 --- a/components/blog/BlogCTA.tsx +++ b/components/blog/BlogCTA.tsx @@ -3,7 +3,89 @@ import Link from "next/link"; import { motion } from "framer-motion"; -export function BlogCTA() { +interface CTAContent { + headingLine1: string; + headingLine2: string; + description: string; + secondaryLabel: string; + secondaryHref: string; +} + +const categoryCTAMap: Record = { + "ai-engineering": { + headingLine1: "Ready to Build Production", + headingLine2: "AI Systems?", + description: + "Our team has deployed AI systems serving billions of requests. Let\u2019s talk about your AI engineering challenges and how we can help.", + secondaryLabel: "Explore AI Engineering Services", + secondaryHref: "/services/ai-engineering", + }, + "llm-applications": { + headingLine1: "Ready to Build with", + headingLine2: "Large Language Models?", + description: + "From RAG pipelines to AI agents, we build LLM-powered applications that scale in production. Let\u2019s discuss your use case.", + secondaryLabel: "Explore AI Engineering Services", + secondaryHref: "/services/ai-engineering", + }, + engineering: { + headingLine1: "Need Senior Engineers", + headingLine2: "Who Ship from Day One?", + description: + "Our embedded engineering teams write production code from week one. Scale your team with senior developers who integrate seamlessly.", + secondaryLabel: "Explore Engineering Services", + secondaryHref: "/services/frontend-development", + }, + "product-development": { + headingLine1: "Ready to Ship Your", + headingLine2: "Product Faster?", + description: + "From concept to production in weeks, not months. Our product engineering teams have shipped 100+ products to production.", + secondaryLabel: "Explore Product Development", + secondaryHref: "/services/product-build", + }, + "industry-insights": { + headingLine1: "Ready to Transform", + headingLine2: "Your Business with AI?", + description: + "Our team brings deep industry expertise and proven engineering practices to every engagement. Let\u2019s discuss your next project.", + secondaryLabel: "View Our Work", + secondaryHref: "/work", + }, + "ai-security": { + headingLine1: "Need to Secure Your", + headingLine2: "AI Systems?", + description: + "From prompt injection defense to model security, we help teams ship AI systems that are secure by design.", + secondaryLabel: "Explore AI Security Services", + secondaryHref: "/services/ai-security", + }, + "cloud-infrastructure": { + headingLine1: "Ready to Scale Your", + headingLine2: "Cloud Infrastructure?", + description: + "Our cloud architects design and implement infrastructure that scales reliably. From Kubernetes to multi-cloud, we\u2019ve got you covered.", + secondaryLabel: "Explore Cloud Services", + secondaryHref: "/services/cloud", + }, +}; + +const defaultCTA: CTAContent = { + headingLine1: "Ready to Build Production", + headingLine2: "AI Systems?", + description: + "Our team has deployed AI systems serving billions of requests. Let\u2019s talk about your engineering challenges and how we can help.", + secondaryLabel: "View Our Work", + secondaryHref: "/work", +}; + +interface BlogCTAProps { + categorySlug?: string; +} + +export function BlogCTA({ categorySlug }: BlogCTAProps) { + const cta = (categorySlug && categoryCTAMap[categorySlug]) || defaultCTA; + return (
@@ -14,14 +96,12 @@ export function BlogCTA() { transition={{ duration: 0.6 }} >

- Ready to Build Production + {cta.headingLine1}
- AI Systems? + {cta.headingLine2}

- Our team has deployed AI systems serving billions of requests. - Let's talk about your engineering challenges and how we can - help. + {cta.description}

{/* Dual CTAs */} @@ -46,10 +126,10 @@ export function BlogCTA() { - View Our Work + {cta.secondaryLabel}
From 4827abde1ac1ea2e601adaebc2acff52270f46e2 Mon Sep 17 00:00:00 2001 From: vibemarketerpromax Date: Thu, 12 Feb 2026 13:34:54 +0530 Subject: [PATCH 4/9] fix: AI Security page alignment, CTA fixes, and misc page improvements - Center-align section headings on AI Security page for consistency - Fix "See How We Work" CTA linking to wrong section - Replace inline FAQ with shared accordion FAQSection component - Update AI Upskill CTA text, cohort date to Q2 2026, remove redundant final CTA - Genericize secondary CTA text on startups and scale-ups pages --- app/about-us/page.tsx | 4 +- app/ai-safety/page.tsx | 8 +- app/ai-upskill/page.tsx | 110 +------------------ app/approach/page.tsx | 49 +++------ app/careers/page.tsx | 6 +- app/contact-us/page.tsx | 4 +- app/culture/page.tsx | 21 ++-- app/events/page.tsx | 10 +- app/services/[slug]/AISecurityPageClient.tsx | 50 ++------- app/services/[slug]/ExpertisePageClient.tsx | 2 +- app/services/[slug]/ServicePageClient.tsx | 10 +- app/why-us/page.tsx | 6 +- app/work/[slug]/CaseStudyDetailClient.tsx | 2 +- content/services/scale-ups.mdx | 2 +- content/services/startups.mdx | 2 +- 15 files changed, 61 insertions(+), 225 deletions(-) diff --git a/app/about-us/page.tsx b/app/about-us/page.tsx index f2e4d2c..71cd503 100644 --- a/app/about-us/page.tsx +++ b/app/about-us/page.tsx @@ -314,7 +314,7 @@ export default function AboutPage() {

Leadership

-

+

Choosing a mentor is more important than choosing a company

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

Why Procedure

-

+

The numbers speak for themselves

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/careers/page.tsx b/app/careers/page.tsx index 3177838..719d589 100644 --- a/app/careers/page.tsx +++ b/app/careers/page.tsx @@ -211,7 +211,7 @@ export default function CareersPage() {

Why Join Procedure

-

+

Benefits Designed for Senior AI Engineers

@@ -275,7 +275,7 @@ export default function CareersPage() {

Our Engineering Culture

-

+

The Values That Drive Our Work

@@ -346,7 +346,7 @@ export default function CareersPage() {

Current Openings

-

+

Remote AI and Engineering Positions

diff --git a/app/contact-us/page.tsx b/app/contact-us/page.tsx index f7af1ab..cd2cdf7 100644 --- a/app/contact-us/page.tsx +++ b/app/contact-us/page.tsx @@ -565,7 +565,7 @@ export default function ContactPage() { transition={{ duration: 0.6 }} className="text-center mb-12" > -

+

Global presence, local expertise

@@ -646,7 +646,7 @@ export default function ContactPage() { transition={{ duration: 0.6 }} className="text-center mb-12" > -

+

Frequently asked questions

diff --git a/app/culture/page.tsx b/app/culture/page.tsx index c214f52..661fd94 100644 --- a/app/culture/page.tsx +++ b/app/culture/page.tsx @@ -464,18 +464,15 @@ export default function CulturePage() {

How It Started

-

+

Procedure started as a small crew that just loved making things work better, and that hasn't changed. -

-

- Today, we're still experimenting, breaking, fixing, and - shipping together, because that's how real products and real - teams grow. Our team is a mixed bag. Of the smart and the hard - workers. Of the organised and slightly chaotic. Of the early - risers and the burners of the midnight oil. We appreciate - diversity and truly like having differing perspectives in the - room. + +

+ We're still experimenting, breaking, fixing, and shipping + together—because that's how real products and real + teams grow. A diverse mix of perspectives, personalities, and + working styles, united by a shared love for the craft.

@@ -520,7 +517,7 @@ export default function CulturePage() { {/* Beliefs Grid */} -
+
{workBeliefs.map((belief, idx) => ( {/* Card glow effect */}
diff --git a/app/events/page.tsx b/app/events/page.tsx index bf7fac3..edb942a 100644 --- a/app/events/page.tsx +++ b/app/events/page.tsx @@ -316,7 +316,7 @@ export default function EventsPage() {

Flagship Meetup

-

+

Mumbai Meets AI - Edition 4

@@ -532,7 +532,7 @@ export default function EventsPage() {

Event Archive

-

+

Where We've Been

@@ -828,7 +828,7 @@ export default function EventsPage() {

Our Philosophy

-

+

Why We Show Up

@@ -926,7 +926,7 @@ export default function EventsPage() {

-

+

Stay in the Loop

@@ -1000,7 +1000,7 @@ export default function EventsPage() {

Join Us

-

+

There's a Place for You Here

diff --git a/app/services/[slug]/AISecurityPageClient.tsx b/app/services/[slug]/AISecurityPageClient.tsx index dfb92c4..76a994d 100644 --- a/app/services/[slug]/AISecurityPageClient.tsx +++ b/app/services/[slug]/AISecurityPageClient.tsx @@ -3,7 +3,7 @@ import { motion } from "framer-motion"; import { PageHero } from "@/components/ui"; import { CalInline } from "@/components/CalInline"; -import { RelatedExpertise } from "@/components/expertise"; +import { RelatedExpertise, FAQSection } from "@/components/expertise"; interface RelatedPage { slug: string; @@ -140,7 +140,7 @@ export default function AISecurityPageClient({ data, relatedPages }: Props) { headlineAccent={data.hero.headlineAccent} description={data.hero.description} primaryCTA={{ text: "Book Security Assessment", href: "#book-call" }} - secondaryCTA={{ text: "See How We Work", href: "#services" }} + secondaryCTA={{ text: "See How We Work", href: "#process" }} /> {/* Risks Section */} @@ -150,7 +150,7 @@ export default function AISecurityPageClient({ data, relatedPages }: Props) { initial={{ opacity: 0, y: 20 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true }} - className="mb-12" + className="text-center mb-12" >

The Risks @@ -193,7 +193,7 @@ export default function AISecurityPageClient({ data, relatedPages }: Props) { initial={{ opacity: 0, y: 20 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true }} - className="mb-12" + className="text-center mb-12" >

What We Do @@ -240,13 +240,13 @@ export default function AISecurityPageClient({ data, relatedPages }: Props) { {/* Process Section */} -

+

How We Work @@ -283,7 +283,7 @@ export default function AISecurityPageClient({ data, relatedPages }: Props) { initial={{ opacity: 0, y: 20 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true }} - className="mb-12" + className="text-center mb-12" >

Is This For You? @@ -344,39 +344,7 @@ export default function AISecurityPageClient({ data, relatedPages }: Props) {

{/* FAQ Section */} -
-
- -

- Questions -

-

- Frequently Asked Questions -

-
- -
- {data.faqs.map((faq, idx) => ( - -

{faq.question}

-

{faq.answer}

-
- ))} -
-
-
+ {data.faqs.length > 0 && } {/* Related Expertise */} {relatedPages.length > 0 && ( @@ -392,7 +360,7 @@ export default function AISecurityPageClient({ data, relatedPages }: Props) { viewport={{ once: true }} className="text-center mb-10" > -

+

Let's Find the Gaps{" "} Before Attackers Do

diff --git a/app/services/[slug]/ExpertisePageClient.tsx b/app/services/[slug]/ExpertisePageClient.tsx index 05084eb..92251ee 100644 --- a/app/services/[slug]/ExpertisePageClient.tsx +++ b/app/services/[slug]/ExpertisePageClient.tsx @@ -378,7 +378,7 @@ export default function ExpertisePageClient({ viewport={{ once: true }} transition={{ duration: 0.6 }} > -

+

Discuss Your .NET Project

diff --git a/app/services/[slug]/ServicePageClient.tsx b/app/services/[slug]/ServicePageClient.tsx index ac34089..2451eea 100644 --- a/app/services/[slug]/ServicePageClient.tsx +++ b/app/services/[slug]/ServicePageClient.tsx @@ -101,7 +101,7 @@ export default function ServicePageClient({ service }: Props) { viewport={{ once: true }} className="text-center mb-16" > -

+

{benefitsTitle}

@@ -151,7 +151,7 @@ export default function ServicePageClient({ service }: Props) { viewport={{ once: true }} className="text-center mb-16" > -

+

{processTitle}

@@ -202,7 +202,7 @@ export default function ServicePageClient({ service }: Props) { viewport={{ once: true }} className="text-center mb-12" > -

+

{additionalItemsTitle}

@@ -235,7 +235,7 @@ export default function ServicePageClient({ service }: Props) { viewport={{ once: true }} className="text-center mb-12" > -

+

Compliance & Security

@@ -267,7 +267,7 @@ export default function ServicePageClient({ service }: Props) { viewport={{ once: true }} className="text-center mb-12" > -

+

{idealForTitle}

diff --git a/app/why-us/page.tsx b/app/why-us/page.tsx index 0217f74..3174a74 100644 --- a/app/why-us/page.tsx +++ b/app/why-us/page.tsx @@ -230,7 +230,7 @@ export default function WhyUsPage() {

Why Choose Procedure

-

+

Five reasons teams choose{" "} Procedure for AI

@@ -278,7 +278,7 @@ export default function WhyUsPage() {

The Comparison

-

+

This is not your typical consultancy

@@ -451,7 +451,7 @@ export default function WhyUsPage() {

Our Process

-

+

From first call to{" "} production AI

diff --git a/app/work/[slug]/CaseStudyDetailClient.tsx b/app/work/[slug]/CaseStudyDetailClient.tsx index 4738ab0..2beee20 100644 --- a/app/work/[slug]/CaseStudyDetailClient.tsx +++ b/app/work/[slug]/CaseStudyDetailClient.tsx @@ -463,7 +463,7 @@ export function CaseStudyDetailClient({ viewport={{ once: true }} transition={{ duration: 0.6 }} > -

+

Ready to Build Your
Success Story? diff --git a/content/services/scale-ups.mdx b/content/services/scale-ups.mdx index 0237773..0310f12 100644 --- a/content/services/scale-ups.mdx +++ b/content/services/scale-ups.mdx @@ -9,7 +9,7 @@ primaryCTA: text: "Scale Your Team Now" href: "/contact-us" secondaryCTA: - text: "View Scale-Up Case Studies" + text: "See Case Studies" href: "/work" benefits: - title: "Add Senior Capacity in Days" diff --git a/content/services/startups.mdx b/content/services/startups.mdx index 14943c6..f1b19cc 100644 --- a/content/services/startups.mdx +++ b/content/services/startups.mdx @@ -8,7 +8,7 @@ primaryCTA: text: "Talk to Us This Week" href: "/contact-us" secondaryCTA: - text: "See Startup Case Studies" + text: "See Case Studies" href: "/work" benefits: - title: "Weeks to Market, Not Months" From 1ea612c9d1ae375aa7821d7e0476ff55175dfc84 Mon Sep 17 00:00:00 2001 From: vibemarketerpromax Date: Thu, 12 Feb 2026 13:49:59 +0530 Subject: [PATCH 5/9] fix: Uniform industry grid layout, remove expertise hero taglines - SolutionsGrid: Replace asymmetric featured card layout with uniform 3-col grid - SuccessMetrics: Consistent card heights with flex layout and aligned values - Remove tagline from all expertise page hero sections (keep only description) --- app/services/[slug]/ExpertisePageClient.tsx | 1 - components/industries/SolutionsGrid.tsx | 138 ++++---------------- components/industries/SuccessMetrics.tsx | 14 +- 3 files changed, 38 insertions(+), 115 deletions(-) diff --git a/app/services/[slug]/ExpertisePageClient.tsx b/app/services/[slug]/ExpertisePageClient.tsx index 92251ee..8a43d91 100644 --- a/app/services/[slug]/ExpertisePageClient.tsx +++ b/app/services/[slug]/ExpertisePageClient.tsx @@ -204,7 +204,6 @@ export default function ExpertisePageClient({ badge={pageData.hero.badge} headline={pageData.hero.headline} headlineAccent={pageData.hero.headlineAccent} - tagline={pageData.hero.tagline} description={pageData.hero.description} primaryCTA={ expertise.slug === "frontend-development" diff --git a/components/industries/SolutionsGrid.tsx b/components/industries/SolutionsGrid.tsx index e4946eb..501aa7f 100644 --- a/components/industries/SolutionsGrid.tsx +++ b/components/industries/SolutionsGrid.tsx @@ -42,9 +42,6 @@ export function SolutionsGrid({ subtitle, solutions, }: SolutionsGridProps) { - const featuredSolution = solutions.find((s) => s.featured); - const regularSolutions = solutions.filter((s) => !s.featured); - return (
@@ -66,124 +63,47 @@ export function SolutionsGrid({ )} - {/* Solutions layout */} + {/* Uniform solutions grid */} - {/* Featured + side cards layout */} - {featuredSolution && ( -
- {/* Featured card - takes 2 columns */} - ( + +
-
-
- {featuredSolution.icon} -
+
+ {solution.icon}
- -

- {featuredSolution.title} -

-

- {featuredSolution.description} -

- - - {/* Side cards */} -
- {regularSolutions.slice(0, 2).map((solution, index) => ( - -
-
- {solution.icon} -
-
-

- {solution.title} -

-

- {solution.description} -

-
- ))}
-
- )} - - {/* Bottom row */} -
- {(featuredSolution ? regularSolutions.slice(2) : solutions).map( - (solution, index) => ( - -
-
- {solution.icon} -
-
-

- {solution.title} -

-

- {solution.description} -

-
- ), - )} -
+

+ {solution.title} +

+

+ {solution.description} +

+ + ))}
diff --git a/components/industries/SuccessMetrics.tsx b/components/industries/SuccessMetrics.tsx index a4dee9a..c34edf7 100644 --- a/components/industries/SuccessMetrics.tsx +++ b/components/industries/SuccessMetrics.tsx @@ -72,22 +72,26 @@ export function SuccessMetrics({ key={index} variants={cardVariants} className={cn( - "p-6 sm:p-8 rounded-2xl text-center", + "p-6 sm:p-8 rounded-2xl text-center flex flex-col", "bg-gradient-to-br from-accent/10 to-accent-secondary/10", "border border-accent/20", "hover:border-accent/40 transition-colors duration-300", )} > -
- {metric.value} +
+
+ {metric.value} +
-
+
{metric.label}
- {metric.context && ( + {metric.context ? (
{metric.context}
+ ) : ( +
 
)} ))} From d99faceb5f61696a9c28ef2bf645a9d5f3075b23 Mon Sep 17 00:00:00 2001 From: vibemarketerpromax Date: Thu, 12 Feb 2026 16:08:31 +0530 Subject: [PATCH 6/9] fix: Metrics parser, SuccessMetrics display, healthcare page cleanup - Fix parseMetricsFromContent regex to handle $ prefix and stop greedy word capture - Remove whitespace-nowrap from SuccessMetrics to prevent overflow on long values - Remove Compliance & Trust section from healthcare page - Remove redundant "100% HIPAA compliant" metric from healthcare results --- components/industries/SuccessMetrics.tsx | 16 ++++++---------- content/industries/healthcare.mdx | 11 +---------- lib/content.ts | 3 ++- 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/components/industries/SuccessMetrics.tsx b/components/industries/SuccessMetrics.tsx index c34edf7..4ebec41 100644 --- a/components/industries/SuccessMetrics.tsx +++ b/components/industries/SuccessMetrics.tsx @@ -72,26 +72,22 @@ export function SuccessMetrics({ key={index} variants={cardVariants} className={cn( - "p-6 sm:p-8 rounded-2xl text-center flex flex-col", + "p-6 rounded-2xl text-center", "bg-gradient-to-br from-accent/10 to-accent-secondary/10", "border border-accent/20", "hover:border-accent/40 transition-colors duration-300", )} > -
-
- {metric.value} -
+
+ {metric.value}
-
+
{metric.label}
- {metric.context ? ( -
+ {metric.context && ( +
{metric.context}
- ) : ( -
 
)} ))} diff --git a/content/industries/healthcare.mdx b/content/industries/healthcare.mdx index 165bc8c..677a29f 100644 --- a/content/industries/healthcare.mdx +++ b/content/industries/healthcare.mdx @@ -43,15 +43,7 @@ solutions: - title: "Population Health Analytics" description: "Predictive models for risk stratification, care gaps, and population health management. Data-driven insights for better outcomes." icon: "chart" -compliance: - - name: "HIPAA" - description: "Compliant" - - name: "HITRUST" - description: "Certified" - - name: "HL7 FHIR" - description: "Compatible" - - name: "FDA" - description: "Pathway Ready" +compliance: [] useCases: - clinical-documentation - diagnostic-support @@ -89,6 +81,5 @@ seo: ## Results We've Delivered - **30-50% reduction** in documentation time -- **100% HIPAA compliant** across all deployments - **15-25% improvement** in clinical workflow efficiency - **85%+ clinician satisfaction** with AI-assisted tools diff --git a/lib/content.ts b/lib/content.ts index 7bb33fd..47250bd 100644 --- a/lib/content.ts +++ b/lib/content.ts @@ -1011,8 +1011,9 @@ function parseMetricsFromContent( if (match) { const [, boldPart, context] = match; // Try to split bold part into value and label + // Matches: optional $, digits/symbols, optional letter suffix (e.g. "ms", "M", "x"), optional trailing +/% const valueLabelMatch = boldPart.match( - /^([\d\.\-<>%\+]+\s*[\w]*)\s+(.+)$/, + /^(\$?[\d.\-<>%+]+[A-Za-z]*[+%]?)\s+(.+)$/, ); if (valueLabelMatch) { return { From 9731e4904d3b3395f735d53788683e868ae0201c Mon Sep 17 00:00:00 2001 From: vibemarketerpromax Date: Thu, 12 Feb 2026 16:09:09 +0530 Subject: [PATCH 7/9] fix: Remove Compliance & Trust section from all industry pages --- content/industries/education.mdx | 10 +--------- content/industries/financial-services.mdx | 10 +--------- content/industries/saas.mdx | 10 +--------- 3 files changed, 3 insertions(+), 27 deletions(-) diff --git a/content/industries/education.mdx b/content/industries/education.mdx index ee3dd45..e36eb1a 100644 --- a/content/industries/education.mdx +++ b/content/industries/education.mdx @@ -43,15 +43,7 @@ solutions: - title: "Accessibility-First Design" description: "Build educational AI that works for all learners. Screen reader compatibility, caption generation, and inclusive design patterns." icon: "users" -compliance: - - name: "FERPA" - description: "Compliant" - - name: "COPPA" - description: "Compliant" - - name: "WCAG 2.1 AA" - description: "Accessible" - - name: "SOC 2" - description: "Certified" +compliance: [] useCases: - adaptive-learning - content-generation diff --git a/content/industries/financial-services.mdx b/content/industries/financial-services.mdx index bc2a93c..4da2b83 100644 --- a/content/industries/financial-services.mdx +++ b/content/industries/financial-services.mdx @@ -43,15 +43,7 @@ solutions: - title: "Compliance & RegTech" description: "Automated compliance monitoring, transaction surveillance, and regulatory reporting. AI that helps you stay compliant, not create new risks." icon: "clipboard" -compliance: - - name: "SOC 2 Type II" - description: "Certified" - - name: "PCI-DSS" - description: "Compliant" - - name: "FINRA/SEC" - description: "Ready" - - name: "GDPR" - description: "Compliant" +compliance: [] useCases: - fraud-detection - algorithmic-trading diff --git a/content/industries/saas.mdx b/content/industries/saas.mdx index 7c775d2..64f03c2 100644 --- a/content/industries/saas.mdx +++ b/content/industries/saas.mdx @@ -43,15 +43,7 @@ solutions: - title: "API & Platform AI" description: "Build AI capabilities into your platform that customers and partners can leverage. AI as a product differentiator." icon: "code" -compliance: - - name: "SOC 2" - description: "Certified" - - name: "GDPR" - description: "Compliant" - - name: "API Security" - description: "Best Practices" - - name: "Data Privacy" - description: "By Design" +compliance: [] useCases: - ai-copilot - intelligent-search From e116c889c7aa0c4e8b107dc25bce9c868ee311e8 Mon Sep 17 00:00:00 2001 From: vibemarketerpromax Date: Thu, 12 Feb 2026 16:18:31 +0530 Subject: [PATCH 8/9] fix: Increase heading margin in About Us trust section --- app/about-us/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/about-us/page.tsx b/app/about-us/page.tsx index 71cd503..29d41c6 100644 --- a/app/about-us/page.tsx +++ b/app/about-us/page.tsx @@ -522,7 +522,7 @@ export default function AboutPage() {

Trust & Compliance

-

+

Enterprise-grade security you can trust

From 4a085693b9d63bd9ba9dce3eef1d2161e13e21e8 Mon Sep 17 00:00:00 2001 From: vibemarketerpromax Date: Thu, 12 Feb 2026 16:20:27 +0530 Subject: [PATCH 9/9] fix: Tighten footer link spacing within groups, increase group separation --- components/footer.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/footer.tsx b/components/footer.tsx index dba15f3..15dbfa7 100644 --- a/components/footer.tsx +++ b/components/footer.tsx @@ -166,7 +166,7 @@ export function Footer() {

AI & ML

-
    +
      {footerLinks.aiServices.map((link) => (
    • Engineering

-
    +
      {footerLinks.productEngineering.map((link) => (
    • Cloud & Design -
        +
          {footerLinks.cloudDesign.map((link) => (
        • Industries -
            +
              {footerLinks.industries.map((link) => (
            • Company -
                +
                  {footerLinks.company.map((link) => (
                • Resources -
                    +