A retail-investor web app that scores whether a company will actually deliver on claims made in earnings calls and press articles. Bloomberg-terminal register, real Claude API backend.
pnpm install
pnpm devOpen http://localhost:3000 — you'll be redirected to /live.
/live— Live Mode. YouTube earnings call + streaming claim list + credibility score./depth— Depth Mode. 2x2 WIP analysis grid (Background / Past / Present / Future) → Overview with verdict.
- Backend with Claude API. A FastAPI backend in
backend/calls the Claude API (Anthropic) to generate real credibility scores, claim analysis, and feed lines. Run it withpnpm dev:backend(requiresANTHROPIC_API_KEYinbackend/.env). The Next route handlers at/api/live-streamand/api/depth-streamproxy to this backend. - Streaming. AI SDK v6
createUIMessageStreamwith typeddata-claim/data-feed-line/data-scoreparts. The client (useChat<AppUIMessage>DefaultChatTransport) is unchanged whether the backend is live or mocked.
- State. Zustand for global UI (selected claim, panel completion, depth view,
final score).
useChatowns streaming state. - Stack. Next 16.2 App Router + React 19.2 + Tailwind v4 (CSS-first @theme, OKLCH muted-warm palette) + shadcn/ui + JetBrains Mono. Python 3 FastAPI backend.
- Constraints honored. Sharp edges everywhere (
--radius: 0+ globalborder-radius: 0 !importantoverride). No whole-page scroll —html, body { overflow: hidden }; scroll lives only inside panels. - Hardcoded MVP values.
DEFAULT_VIDEO_ID = "dQw4w9WgXcQ"(placeholder),DEFAULT_COMPANY = Acme Robotics (ACME),DEFAULT_CLAIMis the Q4 2026 margin claim.
# Terminal 1 — frontend + backend together
pnpm dev:all
# Or separately:
pnpm dev # Next.js frontend
pnpm dev:backend # FastAPI backend (requires backend/.env with ANTHROPIC_API_KEY)The backend must be running for real Claude-powered scores. Without it, the Next route handlers fall back to fixture data.