diff --git a/apps/website/src/components/landing/FairComparisonSection.tsx b/apps/website/src/components/landing/FairComparisonSection.tsx index 5a30f921c..b6e51e5a1 100644 --- a/apps/website/src/components/landing/FairComparisonSection.tsx +++ b/apps/website/src/components/landing/FairComparisonSection.tsx @@ -74,7 +74,7 @@ export function FairComparisonSection() { fontStyle: 'italic', fontSize: '1.05rem', color: tokens.colors.textSecondary, maxWidth: 560, margin: '0 auto', }}> - LangChain and LangGraph are excellent. This is what the Angular production layer provides on top. + LangGraph and @langchain/langgraph-sdk are excellent. This is what the Angular production layer provides on top.

@@ -101,7 +101,7 @@ export function FairComparisonSection() { borderBottom: `1px solid ${tokens.glass.border}`, padding: '14px 24px', }}> - {['Capability', 'LangChain + Angular alone', 'With Angular Stream Resource'].map((h, i) => ( + {['Capability', '@langchain/langgraph-sdk', 'With Angular Stream Resource'].map((h, i) => (

- Most Angular teams are 77% of the way there. Our structured 3-month co-pilot engagement closes the gap. + Half of GenAI projects die after proof of concept. Yours doesn't have to. Our structured 3-month co-pilot engagement closes the gap.

- Most teams are 77% of the way there. Angular Stream Resource closes the gap. Start with a conversation. + Half of GenAI projects die after proof of concept. Angular Stream Resource closes the gap. Start with a conversation.

{/* CTA buttons */} diff --git a/apps/website/src/components/landing/PilotHero.tsx b/apps/website/src/components/landing/PilotHero.tsx index 4e4b11a67..64d37eb77 100644 --- a/apps/website/src/components/landing/PilotHero.tsx +++ b/apps/website/src/components/landing/PilotHero.tsx @@ -4,11 +4,11 @@ import { motion } from 'framer-motion'; import { tokens } from '../../../lib/design-tokens'; import { CitationBadge } from './CitationBadge'; -const citation77 = { - source: 'McKinsey — State of AI 2024', - url: 'https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai', - stat: 'Most companies remain in experimentation or pilot phases', - note: 'Workflow redesign and human validation are what drive real production value.', +const gartnerCitation = { + source: 'Gartner — GenAI Project Failure (2026)', + url: 'https://www.gartner.com/en/articles/genai-project-failure', + stat: '50% of GenAI projects abandoned after proof of concept by end of 2025', + note: 'Poor data quality, inadequate risk controls, escalating costs, and unclear business value are the primary causes.', }; export function PilotHero() { @@ -114,7 +114,7 @@ export function PilotHero() { marginBottom: '2.5rem', }} > - Most Angular teams are 77% of the way there. Angular Stream Resource closes the + Half of GenAI projects die after proof of concept. Yours doesn't have to. Angular Stream Resource closes the gap — app deployment license, fixed price, your team owns the result. diff --git a/apps/website/src/components/landing/ProblemSection.tsx b/apps/website/src/components/landing/ProblemSection.tsx index b19b3597b..7d167fa70 100644 --- a/apps/website/src/components/landing/ProblemSection.tsx +++ b/apps/website/src/components/landing/ProblemSection.tsx @@ -16,13 +16,13 @@ const STATS: Array<{ num: string; label: string; citation: Citation }> = [ }, }, { - num: '31%', - label: 'of prioritized AI use cases actually reach production', + num: '50%', + label: 'of GenAI projects abandoned after proof of concept', citation: { - source: 'ISG — AI Adoption Reports', - url: 'https://isg-one.com', - stat: '~31% of prioritized AI use cases reach production', - note: 'Enterprise AI initiatives consistently stall between pilot and production.', + source: 'Gartner — GenAI Project Failure (2026)', + url: 'https://www.gartner.com/en/articles/genai-project-failure', + stat: '50% of GenAI projects abandoned after proof of concept by end of 2025', + note: 'Poor data quality, inadequate risk controls, escalating costs, and unclear business value are the primary causes.', }, }, { @@ -69,21 +69,21 @@ export function ProblemSection() { `linear-gradient(90deg, rgba(221,0,49,.6), rgba(221,0,49,.4))` ); const [fillTransition, setFillTransition] = useState('none'); - const counterRunning77 = phase === 'filling'; + const counterRunning50 = phase === 'filling'; const counterRunning100 = phase === 'closing' || phase === 'done'; - const count77 = useCounter(77, 1700, counterRunning77); - const count100 = useCounter(23, 1000, counterRunning100); + const count50 = useCounter(50, 1700, counterRunning50); + const count100 = useCounter(50, 1000, counterRunning100); // 'done' timeout (4400ms) fires after closing counter finishes (3200 + 1000 = 4200ms) - // so 77 + count100 always reaches 100 before the phase snaps to literal 100 - const displayCount = phase === 'done' ? 100 : phase === 'closing' ? 77 + count100 : count77; + // so 50 + count100 always reaches 100 before the phase snaps to literal 100 + const displayCount = phase === 'done' ? 100 : phase === 'closing' ? 50 + count100 : count50; const runAnimation = useCallback(() => { if (phase !== 'idle') return; const timers: ReturnType[] = []; - // Phase 1 (150ms): fill to 77% + // Phase 1 (150ms): fill to 50% — half of projects reach POC timers.push(setTimeout(() => { setFillTransition('width 1.7s cubic-bezier(.4,0,.2,1)'); - setFillWidth('77%'); + setFillWidth('50%'); setPhase('filling'); }, 150)); // Phase 2 (2100ms): stall — marker + hatch + shake @@ -92,7 +92,7 @@ export function ProblemSection() { timers.push(setTimeout(() => { setFillTransition('width 1s cubic-bezier(.4,0,.2,1)'); setFillGradient( - 'linear-gradient(90deg, rgba(221,0,49,.5) 0%, rgba(221,0,49,.38) 70%, rgba(0,64,144,.8) 82%, #004090 100%)' + 'linear-gradient(90deg, rgba(221,0,49,.5) 0%, rgba(221,0,49,.38) 40%, rgba(0,64,144,.8) 60%, #004090 100%)' ); setFillWidth('100%'); setPhase('closing'); @@ -266,8 +266,8 @@ export function ProblemSection() { {/* Hatch overlay (gap zone) — decorative */}