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 */}