Set up OpenSpec spec-driven workflow and fully specify the first change, stock-deep-evaluation: a Next.js/TS app for thorough single-stock evaluation (valuation reasoning, macro factors, entry/exit points, stop-loss) with a pluggable data layer and Claude analysis agent. Includes proposal, design, specs (market-data, equity-evaluation, analysis-agent, evaluation-app), tasks, and the DE gold-standard example. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.6 KiB
ADDED Requirements
Requirement: Ticker search entry point
The web app SHALL present a search input where a user enters an NYSE/Nasdaq ticker to request an evaluation. Invalid or unresolvable symbols SHALL produce an inline error without navigating away.
Scenario: User searches a valid ticker
- WHEN a user enters a resolvable ticker and submits
- THEN the app initiates an evaluation for that ticker
Scenario: User searches an invalid ticker
- WHEN a user submits a symbol that does not resolve
- THEN the app shows an inline not-found message and stays on the search view
Requirement: Evaluation request orchestration
The app SHALL orchestrate the pipeline for a request: fetch market data, run the equity-evaluation engine, then invoke the analysis agent, returning both the structured evaluation and the written analysis to the client.
Scenario: Full pipeline succeeds
- WHEN a valid ticker is evaluated with data and an agent key available
- THEN the app returns the structured evaluation and the written analysis
Scenario: Partial pipeline (agent unavailable)
- WHEN market data succeeds but the agent is unavailable
- THEN the app returns the structured evaluation and indicates the narrative is pending
Requirement: Evaluation report view
The app SHALL render the evaluation as a report with clearly delineated sections: current standing, earnings recap and quality-of-earnings caveats, financials and segments, valuation and over/undervalued reasoning, macro factors, timing, entry levels, exit/targets, stop-loss, bull-versus-bear, the actionable plan, and the disclaimer. Tabular data SHALL render as tables and unavailable values SHALL be shown as such rather than as zero.
Scenario: Report sections rendered
- WHEN an evaluation result is available
- THEN the report view displays each populated section in order
Scenario: Unavailable values shown honestly
- WHEN a section contains an unavailable value
- THEN the view displays it as unavailable rather than as a zero or blank number
Requirement: Price chart with marked levels
The app SHALL render a price chart with the computed moving averages and overlay markers for the recommended entry bands, exit/target levels, and stop-loss levels so the user can see them against price history.
Scenario: Levels overlaid on chart
- WHEN the report renders with computed levels
- THEN the chart shows price history with entry, exit, and stop-loss markers
Requirement: Loading and error states
The app SHALL show progress while an evaluation runs and SHALL present typed errors (data unavailable, rate-limited, agent failed) as user-readable messages without blank screens.
Scenario: Loading indicator during evaluation
- WHEN an evaluation is in progress
- THEN the app shows a loading state until results or an error return
Scenario: Error surfaced to user
- WHEN the pipeline returns a typed error
- THEN the app displays a readable message describing what failed
Requirement: API key configuration in the app
The app SHALL provide a way to configure the market-data and Anthropic API keys via environment/config, SHALL NOT expose secret keys to the browser, and SHALL indicate when a required key is missing.
Scenario: Keys read server-side only
- WHEN the app calls external providers
- THEN secret keys are used only in server-side code and never sent to the client
Scenario: Missing key indicated
- WHEN a required key is absent
- THEN the app indicates which capability is unavailable until the key is set