Intrinsic

Architecture

Next.js 16 on VercelNo database, no paid APIs, no backend server

System overview

Data flows right to left; computation happens on the left
BROWSERNext.js pages (React)Company, screener, portfolio,retirement, macro viewsPlotly charts, dark modeValuation engineDCF (FCFF), residual income, comps,scenarios and sensitivities,rating model, risk and technicals,Monte Carlo, regime rulesRules-based research noteTemplates filled from the numbers;every sentence traces to a figurePDF export (jsPDF)Tear sheet and full report,generated on the clientAssumptions change instantly: no round trip to a server.VERCEL (FREE TIER)Edge CDN caches-maxage + stale-while-revalidate;one upstream call serves many usersRoute handlers (serverless)/api/company/[ticker] /filings /insiders/api/prices /api/macro /api/searchNormalize XBRL into annual, quarterlyand trailing-twelve-month statementsIn-memory promise cache per instanceSEC request throttle≤10 requests/second with a declaredUser-Agent, as EDGAR requiresStatic universe snapshotdata/universe.json: 42 companies,rebuilt each weekday by aGitHub Action (npm run universe)SEC EDGARXBRL facts and 10-K instances,Form 4 and N-PORT filingsYahoo FinanceDaily prices, profile, estimates,earnings history, RSS headlinesFREDRates, inflation, GDP, labor,credit spreads, VIXU.S. Treasury + Federal ReservePar yield curve (CSV),press releases (RSS)GitHubSource of truth; every pushto main redeploys on Vercelfetch JSONdeploybundled

How it works

Ingestion

Route handlers pull EDGAR company facts (every XBRL fact a company has filed), the submissions index for filing history, and raw Form 4 XML for insider trades. Yahoo supplies adjusted daily prices on the S&P 500 calendar, the company profile, analyst estimates and earnings surprises. FRED and the Treasury provide rates and macro series. Every upstream call has retries and a timeout, and a failure in one optional source (news, insiders) never blocks the page.

Processing pipeline

XBRL facts arrive as a flat list of values with start and end dates. The pipeline keeps 10-K and 10-Q facts, takes the latest filing for each period, turns year-to-date figures into discrete quarters by differencing, and builds trailing-twelve-month totals from the last four quarters. Concept fallbacks cover the different tags companies use for the same line item, and predecessor filers (for example XOM's pre-merger CIK) are merged. The output is a normalized income statement, balance sheet and cash flow statement.

Caching

Three layers keep the app free to run. Vercel's CDN caches each API response (company data for six hours, macro data for twelve) and serves stale copies while it revalidates. Inside a warm serverless instance, a promise cache deduplicates concurrent requests for the same ticker. The 42-company universe behind the home page and screener is a static JSON file built ahead of time, so the busiest pages never touch an upstream API.

Valuation engine

All modeling runs in the browser. Defaults (growth, margins, reinvestment, cost of capital) are derived from the company's own history and CAPM with the live 10-year Treasury yield, then every assumption can be edited. Industrial companies use a free-cash-flow-to-firm DCF with a Gordon terminal value; banks and insurers use a residual-income model on book value. Results are cross-checked against peer multiples and analyst targets, and a six-factor rating combines value, quality, growth, momentum, balance sheet and estimate revisions.

Design constraints

ConstraintDecision
Free to hostVercel hobby tier and GitHub only. Serverless functions stay under the 60-second limit by fetching in parallel and caching aggressively.
No paid dataSEC, FRED, Treasury and Federal Reserve data are public. Yahoo Finance endpoints are free but unofficial, so every Yahoo field is optional.
No AI dependencyCommentary comes from deterministic templates, so every conclusion can be traced to a number on the page and the app works with no API keys beyond FRED.
Any U.S. tickerNothing is precomputed per company except the 42-name universe; any EDGAR filer with XBRL statements can be analyzed on demand.
See the Methodology page for formulas and model assumptions.