Skip to content

[v0.3] Add ticker lookup UI to the local dashboard with input validation #37

@Codex-Crusader

Description

@Codex-Crusader

Parent Issue

Part of #35 — v0.3 Arbitrary Ticker Support

Depends on #36 — keyword generation must exist before the UI can call it.

Context

The current dashboard/main.py (or pulseengine/local/dashboard.py after #33) only shows the 24 hardcoded assets from config/settings.py in a dropdown. There is no way for a user to analyse a stock that isn't in that list.

This sub-issue adds a ticker lookup input to the local dashboard sidebar so users can type any ticker symbol and trigger a full signal analysis.

UI Specification

A new "Look up any ticker" section in the sidebar (below the existing asset selector) containing:

  1. A text input labelled "Ticker symbol (e.g. PLTR, ARM, TSMC)"
  2. An "Analyse" button (or on-enter trigger)
  3. A small validation hint if the input is not a recognisable ticker

The input should:

  • Accept 1–10 character strings
  • Convert to uppercase automatically
  • Validate against Yahoo Finance (a quick yfinance.Ticker(symbol).fast_info check is sufficient)
  • Show a spinner while fetching
  • On success: render the full signal analysis panel for the looked-up ticker
  • On unknown ticker: show a friendly error message ("No data found for {symbol}. Check the ticker symbol and try again.")

Interaction with Existing Code

Acceptance Criteria

  • Sidebar contains a ticker lookup input and analyse button
  • Input is validated before analysis is triggered (no empty strings, no excessively long inputs)
  • Unknown or invalid tickers show a user-friendly error, not a stack trace
  • Valid tickers render a complete signal analysis panel (signal score, explanation, price chart, news feed)
  • The existing 24-asset dropdown continues to work without regression
  • No Streamlit state is leaked between ticker lookups (fresh analysis each time)
  • Works correctly after the [v0.3] Create pulseengine/local/ surface with full-feature Streamlit dashboard #33 restructure (lives in pulseengine/local/)

Notes

This feature must only appear in the local dashboard (local/). In the web demo (web/), the ticker lookup section should be replaced by a "Download the local app" call-to-action (tracked in #34).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions