diff --git a/app/(app)/insights/page.tsx b/app/(app)/insights/page.tsx
index 77164d5..39244b7 100644
--- a/app/(app)/insights/page.tsx
+++ b/app/(app)/insights/page.tsx
@@ -7,6 +7,7 @@ import { getBurndownData } from '@/lib/insights/burndown'
import { getSprintStatusBreakdown } from '@/lib/insights/sprint-status'
import { getVerifyResultStats, getAlignmentTrend } from '@/lib/insights/verify-stats'
import { getJobsPerDay } from '@/lib/insights/agent-throughput'
+import { getTokenStats } from '@/lib/insights/token-stats'
import { getVelocity } from '@/lib/insights/velocity'
import { getBacklogHealth } from '@/lib/insights/backlog-health'
import { SprintInfoStrip } from './components/sprint-info-strip'
@@ -15,6 +16,7 @@ import { SprintStatusDonut } from './components/sprint-status-donut'
import { PlanQualityCard } from './components/plan-quality'
import { AlignmentTrend } from './components/alignment-trend'
import { AgentThroughputCard } from './components/agent-throughput'
+import { TokenUsageCard } from './components/token-usage'
import { VelocityChart } from './components/velocity-chart'
import { BacklogHealthCard } from './components/backlog-health'
@@ -76,6 +78,11 @@ export default async function InsightsPage({ searchParams }: InsightsPageProps)
getBacklogHealth(userId),
])
+ const activeSprintId = activeSprints.find(s => s.product.id === filterProductId)?.id ?? ''
+ const tokenStats = await (activeSprints.length > 0 && filterProductId
+ ? getTokenStats(userId, activeSprintId)
+ : Promise.resolve({ kpi: { totalTokens: 0, totalCostUsd: 0, avgCostPerJob: 0, jobCount: 0 }, jobs: [] }))
+
// Date.now is an impure call but used once per request — safe in a Server Component.
// eslint-disable-next-line react-hooks/purity
const nowMs = Date.now()
@@ -142,6 +149,12 @@ export default async function InsightsPage({ searchParams }: InsightsPageProps)
/>
+ {/* Token usage */}
+
+
{/* Velocity */}