Growth Artha is an AI-assisted market intelligence platform for Indian equities. It combines radar-style opportunity detection, chart pattern intelligence, portfolio-aware chat, and an early-stage AI video pipeline.
The stack is split into:
- Backend: FastAPI + data/signal pipelines + AI orchestration
- Frontend: React + TypeScript + Vite
Growth Artha focuses on helping users identify high-conviction setups quickly, without replacing investor judgment.
Core capabilities already implemented:
- Opportunity radar scan with Act, Watch, and Exit buckets
- Signal scoring from technical, fundamental, sentiment, and bulk-deal context
- Pattern detection with per-symbol backtest data surface
- Portfolio-aware chat response schema with citations and guardrails
- Audit trail for tool calls and scan reasoning
- Video storyboard/render job pipeline (JSON/MP4 depending on ffmpeg availability)
Roadmap capabilities (in progress across phase documents):
- Broader filings and quarterly event ingestion
- Insider/regulatory signal expansion
- Commentary shift analysis
- Fuller video studio UX and pipeline automation
Entry point:
backend/main.py
Domain routers:
backend/api/radar.py: run scans, poll jobs, latest results, audit trailbackend/api/stocks.py: market overview, OHLC, stock info, backtest, explanation, sentiment, live pricebackend/api/portfolio.py: save/get portfolio by sessionbackend/api/chat.py: ask market questions with retrieval plan, citations, portfolio impact, schema validationbackend/api/video.py: storyboard generation and async render jobs (create/status/retry/cancel/download)
Pipeline modules:
backend/data/: NSE/Yahoo fetchers, fundamentals, universe expansionbackend/patterns/: pattern detection + backtestingbackend/signals/: sentiment and convergence scoringbackend/agents/: orchestrator, tool executor, multi-step agent flowbackend/ai/gemini_client.py: Gemini integration with fallback behavior
Location:
frontend/
Frontend responsibilities:
- Dashboard and radar views
- Stock detail and pattern/backtest presentation
- Chat experience with evidence and portfolio impact
- Video page integration with backend job endpoints
The frontend calls the backend using:
VITE_API_BASE_URL(defaults tohttp://localhost:8002/api)
Primary cache directory:
data/cache/
Important cached artifacts:
latest_radar_result.json: last radar output snapshotradar_jobs.json: persisted radar job statesvideo_jobs.json: persisted video job statesvideos/: generated video artifacts (.jsonor.mp4)
Notes:
- The app is resilient to AI quota/auth failures and can switch to deterministic non-AI fallback pipelines.
- Cached results can be used when live scans fail.
Base URL:
http://localhost:8002
Useful endpoints:
GET /healthPOST /api/radar/runGET /api/radar/status/{job_id}GET /api/radar/latestGET /api/radar/jobsGET /api/radar/audit/{job_id}POST /api/chat/askGET /api/stocks/market/overviewGET /api/stocks/{symbol}/ohlcGET /api/stocks/{symbol}/backtestGET /api/stocks/{symbol}/sentimentPOST /api/video/storyboardPOST /api/video/jobsGET /api/video/jobsGET /api/video/jobs/{job_id}POST /api/video/jobs/{job_id}/retryPOST /api/video/jobs/{job_id}/cancelGET /api/video/jobs/{job_id}/download
Typical local flow:
- Start backend on port
8002. - Start frontend Vite dev server on port
5173. - Run a radar scan and poll status.
- Use latest radar output in chat and stock detail screens.
- Create a video job and download JSON/MP4 artifact.
Backend:
- Python
- FastAPI
- Uvicorn
- Pandas, NumPy, SciPy
- yfinance, nsetools, requests
- google-genai and google-generativeai integration paths
Frontend:
- React 19
- TypeScript
- Vite
- Zustand
- TanStack Query
- Tailwind
Current tests are located in backend test modules.
Example run:
source venv/bin/activate && python -m unittest discover -s backend/tests -v
If you are using pytest, install it first and run your preferred command.
See the full setup guide for macOS and Windows in:
INSTALLATION.md
- The backend dependency file in this repository is currently named with a leading space:
requirements.txt. - Use quoted paths when installing backend dependencies.
- Optional
ffmpegunlocks MP4 output in video jobs; without it, video jobs render JSON artifacts.
This project is licensed under the BSD 2-Clause License. See the LICENSE file for full terms.