GrahamScreener
00Start Here

GrahamScreener — Start Here

What is GrahamScreener?

GrahamScreener is a local-first, multi-exchange value-investing screener and portfolio tracker. It computes Graham Number, NCAV, Earnings Power Value, and the Graham Growth formula live from Yahoo Finance data, then renders a colour-coded margin-of-safety panel so you can see at a glance whether a stock is cheap, fair, or expensive.

Who it's for: Individual value investors who follow Benjamin Graham's principles and want a single dashboard covering ASX, BSE, NSE, and US equities — without paying for a Bloomberg terminal.

Live at https://grahamscreener.com (coming soon)

What it covers:

FeatureWhat it does
Stock detailLive fundamentals + 4 valuation models + MoS bar chart
ScreenerFilter 200 large-caps (50/exchange) by P/E, P/B, current ratio, D/E, yield
WatchlistTrack tickers with thesis, target buy, stop loss, position size
PortfolioRecord BUY/SELL trades, FIFO cost basis, realised + unrealised P&L
SnapshotBatch-fetch fundamentals for the entire universe into SQLite cache
SearchYahoo Finance ticker search across all exchanges
Charts1M–Max price charts with 52-week range overlay
HealthDB size, cache freshness, snapshot status per exchange
DocsIn-app documentation viewer at /docs with sidebar navigation
Demo modeOffline-first mode using fixture data — no Yahoo calls needed

Run in 30 Seconds

git clone <repo-url> valuelens && cd valuelens
npm install
npm run dev
# Open http://localhost:3000

No API keys. No environment variables. No Docker. Just Node 18+ and npm.

Demo Mode (offline, no Yahoo dependency)

npm run dev:demo
# All data served from /fixtures — works offline, never rate-limited

Documentation Index

DocDescription
01_SETUP.mdNode requirements, install, DB init, reset, re-seed
02_RUNNING.mdDev mode, production build, snapshot CLI, keyboard shortcuts, URL map
03_FEATURES.mdPer-feature deep-dive with file paths and manual test steps
04_ARCHITECTURE.mdSystem diagram, folder structure, data flow, SQLite schema
05_FORMULAS.mdEvery valuation formula with math, source, code path, worked example
06_DATA_SOURCE.mdYahoo endpoints, ticker suffixes, rate limits, cache TTLs, alternatives
07_WATCHLIST_AND_PORTFOLIO.mdAdding positions, FIFO cost basis, benchmarks, backup
08_SCREENER_GUIDE.md200-ticker universe, filter definitions, Graham presets
09_TROUBLESHOOTING.mdSymptom → cause → fix table
10_ROADMAP.mdPrioritised next features with effort and API requirements
11_CHANGELOG.mdVersion history
12_DEPLOY.mdVercel + Turso deployment guide, GitHub Actions secrets
13_ALERTS.mdEmail price alerts: conditions, Resend setup, cron
14_AUTOMATION.mdGitHub Actions workflows, schedules, debugging
16_EMAIL_SETUP.mdCloudflare Email Routing + Resend setup, DKIM/SPF

Quick Troubleshooting

ProblemFix
npm run dev shows port in uselsof -ti:3000 | xargs kill -9 then retry
Blank stock page, no dataYahoo rate-limited you — wait 60s, refresh
SQLITE_BUSY on buildDelete data/valuelens.db-shm and data/valuelens.db-wal, retry
Build fails with type errorsRun npm install — likely missing deps after a pull
Charts show but valuations show "—"Yahoo's quoteSummary requires a crumb; session may have expired — reload

Last updated: 2026-05-09 by Claude Cowork