Omnigraph
Graph engine for context assembly. Object-storage native. Agents work with graph data the way engineers work with code: branched, typed, reviewed, merged, audited, and governed.
Interactive atlas of the ISM PMI suite — Manufacturing 1948→present, Services 1997→present — alongside US economic policy.
Translation pending
DataTypeScript · HTMLGitHub @RealMaxPowerOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Bellwether is an interactive atlas of the ISM PMI suite — Manufacturing PMI (1948→present, 75+ years) and Services PMI (1997→present) — read alongside the US economic-policy decisions that shaped each era.
Loading the full README. The saved excerpt is shown below.
The economy's earliest tell, made explorable. Read the ISM PMI the way the Fed does.
Bellwether is an interactive atlas of the ISM PMI suite — Manufacturing PMI (1948→present, 75+ years) and Services PMI (1997→present) — read alongside the US economic-policy decisions that shaped each era. The PMI is the economy's earliest monthly tell: a diffusion index that crosses 50 before GDP turns. Bellwether makes that signal something you can drive rather than a number you read once a month.Read the full README ↗The economy's earliest tell, made explorable. Read the ISM PMI the way the Fed does.
Bellwether is an interactive atlas of the ISM PMI suite — Manufacturing PMI (1948→present, 75+ years) and Services PMI (1997→present) — read alongside the US economic-policy decisions that shaped each era. The PMI is the economy's earliest monthly tell: a diffusion index that crosses 50 before GDP turns. Bellwether makes that signal something you can drive rather than a number you read once a month.
It's for the economically curious non-economist — anyone who sees "ISM Manufacturing PMI came in at 48.7" in the headlines and wants the machine behind it: what the number means, how it's built, and what it has caught (and missed) across seventy-five years of cycles.
Try it live → bellwether-nine.vercel.app
Status: live — 7 modes, Manufacturing PMI back to 1948 (75+ years), Services PMI to 1997, per-cell data provenance, FRED-backed, no signup.
| Mode | Route | What it does |
|---|---|---|
| Timeline | / | INDPRO Y/Y % spine 1949→present, with hand-curated ISM PMI markers, a separate Services PMI figure (1997→), and a policy lane of major US economic decisions. |
| Decompose | /decompose · ?report=services | Reweight the headline subindices and backtest your blend against NBER recessions — Manufacturing (5 subindices) and Services (4). |
| Fed Chair | /fed-chair | Era-locked decision game with after-action review. Manufacturing PMI only; scenarios pre-date the Services PMI's 1997 launch. |
| Heatmap | /heatmap · ?report=services | 18 industries × 5 policy regimes, for both Manufacturing and Services. |
| PMI Explained | /pmi-explained | How to read the ISM Reports on Business, with live Manufacturing and Services prints. |
| About the data | /about-the-data | Per-cell provenance ledger — every value traced to its source. |
| Background | /background | Illustrated timeline of the institutions and the seventeen Fed chairs. |
The headline PMI is a fixed-weight blend of five subindices. In Decompose, move the weights and watch your custom blend redraw against the real series — then see whether your mix would have caught the last twelve recessions. (static version.)
npm install
cp .env.example .env.local # paste your FRED key
npm run refresh-data # fetch FRED snapshots into data/fred/
npm run dev # http://localhost:3000
The build doesn't require FRED at runtime — all market data is checked-in JSON in data/. Re-run npm run refresh-data when you want fresher FRED snapshots, and npm run import-prnewswire to backfill the most recent ISM headline prints from ISM's monthly press releases on PRNewswire. ISM Wayback re-imports (for the post-2014 history and the per-month subindex / industry tables) are documented in data/CONTRIBUTING.md.
noUncheckedIndexedAccess) · Tailwind CSS + shadcn-style primitivesd3-shape, d3-scale, d3-array) for the timeline and backtestsNo database, no auth.
src/
app/ # Next.js App Router
page.tsx # Timeline (default mode)
decompose/page.tsx # ?report=services for Services
fed-chair/page.tsx # scenario index
fed-chair/[id]/page.tsx # per-scenario runner
heatmap/page.tsx # ?report=services for Services
pmi-explained/page.tsx
about/page.tsx
about-the-data/page.tsx
background/page.tsx
style-guide/page.tsx
components/
timeline/ # PMITimeline, PolicyLane, etc.
decompose/
fed-chair/
heatmap/
background/
pmi-explained/
ui/ # primitives — Button, Sheet, Card, Slider, etc.
lib/
data/ # series loaders + Zod schemas
content/ # policies + glossary (data lives in `_policies-data.ts`, not MDX)
decompose/ # weighting math + backtest
background/ # illustrated timeline data
data/
fred/*.json # FRED snapshots (INDPRO, IPMAN, FEDFUNDS, USREC, NAPM stubs)
pmi-historical.json # forecasts.org mirror, 1948 → 2014
pmi-wayback.json # ISM Mfg ROB via Internet Archive, 2014→present
pmi-subindices-wayback.json # the five Mfg subindices
pmi-curated.{csv,json} # Mfg headline rows from ISM press releases (PRNewswire) + hand entries
nmi-wayback.json # ISM Services ROB via Internet Archive
nmi-subindices-wayback.json # the four Services subindices
nmi-curated.json # Services headline rows from ISM press releases (PRNewswire)
industry-monthly-wayback.json # Mfg per-month industry growth/contraction lists
services-industry-monthly-wayback.json
sectors.json # Mfg heatmap (18 industries × 5 regimes)
sectors-services.json # Services heatmap
scripts/
fetch-fred.ts # FRED refresh
import-wayback-ism.ts # Mfg headline scraper (Wayback Machine)
import-wayback-subindices.ts # Mfg subindices (Wayback Machine)
import-wayback-industries.ts # Mfg industry lists (Wayback Machine)
import-wayback-nmi*.ts # Services equivalents (Wayback Machine)
import-prnewswire-ism.ts # current-vintage Mfg + Services headlines from PRNewswire
import-forecastsorg.ts # historical mirror
import-pmi-csv.ts # CSV → JSON for hand-curated rows
reconcile-ism.ts # 3 checks/sector: cross-source, composite, spot-check
verify-nber.ts # link health on NBER citations
Bellwether's edge is its provenance. Nothing is scraped live at request time — every series is a checked-in JSON snapshot, backfilled from several primary sources and cross-checked against each other:
Those sources are held against each other rather than trusted individually. npm run check-data requires that months carried by two sources agree, that each headline equals the mean of its own subindices, and that hand-read anchor values match what ships — so a scraper that starts quietly returning the wrong number fails the build instead of publishing.
Every value is reproducible, and the per-cell provenance ledger traces each one to its source. See data/CONTRIBUTING.md for how the imports work and data/LICENSING.md for the per-source licensing posture before you redistribute the data.
noUncheckedIndexedAccess is on, deal with undefinedContributions are welcome — especially data corrections, new policy events, and deeper provenance. Good first contributions: file a data correction when you spot a value that disagrees with the primary source, or improve the explainer for one of the subindices. See CONTRIBUTING.md to get started and CODE_OF_CONDUCT.md for community expectations; bug reports and feature requests have their own issue templates.
Before opening a PR: npm run lint && npm run typecheck && npm test.
The project's own code and content are released into the public domain under CC0 1.0 — use it for anything, no attribution required.
The data layer is different and is not dedicated to the public domain: economic values are facts reproduced with attribution to their primary sources, and quoted ISM commentary is included as fair-use excerpts. See data/LICENSING.md for the per-source posture before redistributing the data.