Filings index, XBRL company facts, and full-text search across every US registrant.
A terminal built on the primary record
SingularityView is an independent student-built financial data and research platform. It aggregates publicly available data from third-party sources for educational and research purposes. It does not provide investment advice, financial recommendations, brokerage services, portfolio management, or trading services.
Singularity Terminal is a self-hosted research terminal. It reads filings, rates, market history, federal spending, clinical registries, weather, flight tracks, housing panels and public chatter — and it reads them from the primary publisher, directly, without a vendor in between.
The design constraint that shaped everything else is that no figure may appear on screen unless it can be traced to a real response. There is no demo mode, no sample dataset and no placeholder series anywhere in the product. When a source cannot be reached, the screen names the source and says what would be required to fix it. An honest empty state is treated as a feature, not a failure.
It is built as a FastAPI server and vanilla ES modules — no build step, no bundler, no framework. Fonts are self-hosted, so the interface renders correctly with no network access at all.
This build
24 fully delivered, 1 partial (social: 3 platforms live on real data, 3 blocked on credentials with no free tier). Detail in .ag-exhaust/FEATURE_OVERHAUL_LOG.md
Every data source, and the module that queries it
All 36 upstreams below are queried without a credential. Each card names the file in this repository that issues the request, so any claim on this page can be checked against the code rather than taken on trust.
Filings & regulatory
6 sourcesWeekly ATS and over-the-counter share volume by security.
Rules, proposed rules and notices, used to date regulatory events.
Federal and state docket entries behind the litigation views.
Drug, device and enforcement records for healthcare coverage.
OFAC SDN and consolidated sanctions entries, screened against issuer and counterparty names.
Rates & macro
7 sourcesDaily par yield curve — the risk-free leg of every discounting screen.
FOMC meeting calendar and balance-sheet releases.
Macro series. The CSV endpoints need no key; an optional FRED key unlocks the JSON API.
Euro-area policy rates and FX reference rates.
Cross-border banking and effective exchange rate statistics.
Country-level indicators behind the sovereign screens.
National accounts detail used in the economic calendar context.
Market data
5 sourcesQuotes, OHLC history and fundamentals. Delayed, not a tick feed — see the limits below.
Independent end-of-day history, used to cross-check the primary quote path.
Index constituents and listing reference data.
Token supply and unlock schedules for the digital-asset screens.
Bloomberg-operated open security identifiers, used to enrich a symbol with its FIGI, exchange and security type.
Government & science
9 sourcesFederal contract and grant awards, resolved to the issuer under review.
Registered trial phases, sponsors and status changes.
Publication metadata behind the research-intensity views.
Preprint activity for technology coverage.
Forecast and ERA5 reanalysis weather over agricultural and industrial polygons.
Crowdsourced ADS-B aircraft positions for the corporate-jet screens.
Seismic events on the global intelligence map.
Wildfire, storm and volcanic event feeds.
Published housing price and inventory panels by metro.
News & chatter
5 sourcesWorldwide event and tone stream behind the geopolitical layer.
Public retail message stream, used for chatter volume — never as a signal on its own.
Headline feeds for the news hub, attributed per item.
Public post search. No account required.
Public timeline search on mastodon.social.
Alternative data
4 sourcesPublic app reviews for the consumer-frustration index.
Public hiring pages, read for headcount direction and stealth pivots.
Public repository activity. Unauthenticated requests are rate limited.
Company reference text on the stock lab node graph.
Optional credentials
The server starts and every screen renders with none of these set. Each one widens coverage; none is required. Settings shows which are configured on this machine — as a boolean, never as a value.
| Variable | What it unlocks | Behaviour without it |
|---|---|---|
| FMP_API_KEY | Financial Modeling Prep consensus estimates on the economic calendar. | The calendar falls back to model-implied estimates and labels them as such. read by app/services/phase6.py |
| SINGULARITY_FRED_API_KEY | The official FRED JSON API instead of the public CSV endpoints. | Macro series still load over CSV; some series are unavailable. read by app/services/macro_rates.py |
| FINNHUB_API_KEY | Finnhub as an additional company-news source. | The news hub runs on its remaining sources. read by app/services/news.py |
| REDDIT_CLIENT_ID | Reddit OAuth. Reddit's anonymous JSON endpoints now answer 403. | Reddit-derived chatter screens report the missing credential. read by app/services/news.py |
| X_BEARER_TOKEN | X/Twitter posts in the social feed. | The X source reports 'disabled — requires a paid Basic tier or above'. read by app/services/news.py |
| GOVINFO_API_KEY | GovInfo as a source in business-intelligence research. | That source is skipped and the reason is shown. read by app/services/phase8.py |
| REGULATIONS_GOV_API_KEY | Regulations.gov dockets in business-intelligence research. | That source is skipped and the reason is shown. read by app/services/phase8.py |
| PATENTSVIEW_API_KEY | The PatentsView search API behind the patent complexity scorer. | The screen states which credential it requires. read by backend/patent_scorer.py |
| AIS_API_KEY | Worldwide AIS vessel positions on the global map. | The vessel layer is not drawn and reports 'missing credential'. read by app/services/geo.py |
| SINGULARITY_SMTP_HOST | Email delivery for alerts. Pairs with SINGULARITY_SMTP_FROM. | Alerts still fire in-page, as desktop notifications and as sound. read by app/services/notifications.py |
| SINGULARITY_SMTP_FROM | The sender address on alert email. | Email delivery stays off; the alerts panel says so. read by app/services/notifications.py |
Set a variable in the server's environment and restart. There is no way to set one from the browser, by design.
Who builds this
Read from this server's own configuration, like every other figure on the site.
This install has not listed anybody. That is deliberately blank rather than filled with plausible names: a team page is the easiest thing on a website to invent and the least likely to be checked, and this product's whole argument is that it does not invent.
An operator sets SINGULARITY_TEAM as a semicolon-separated list of Name | Role pairs and the people appear here.
Honest limitations
The things this product cannot do, stated here rather than discovered later.
Prices are delayed and interval-based
Quotes and history come from Yahoo Finance's public chart endpoint. It is not a consolidated tape, it carries no bid/ask depth, and the last bar can lag the market by minutes. Use it to research; do not use it to price a trade. There is no order routing in this product.
Some screens are waiting on data, and say so
Of the 38 screens reachable from the sidebar, 9 currently render a readiness state instead of analytics, because their upstream either needs a credential nobody has or has no free tier. They are marked in the navigation before you click them. None of them fills the gap with an invented number.
Publishers enforce rate limits
SEC EDGAR enforces a fair-access rate limit, OpenSky limits anonymous polling, and GitHub caps unauthenticated requests. When a fetch is refused the server replays the last successful response with a visible staleness stamp and the reason, or it fails outright. It never substitutes a different source silently.
Entity resolution can decline to answer
Matching an issuer to a federal contract, a clinical trial or a job posting is a judgement call. The matcher is deliberately strict — it once accepted 'Appleton Marine' as Apple Inc. A false reject shows an honest 'no match'; a false accept would put another company's data under your ticker. It is tuned to prefer the former.
It has not been audited, and it is not advice
This is research software. No figure here has been reviewed by a licensed professional, and nothing on any screen is a recommendation. What it does give you that a vendor terminal will not is the provenance: every number carries the source it was read from, so you can verify it yourself before you rely on it.
Where your data lives
Your account, watchlist, alert rules and preferences are held on our own infrastructure and are never sold, brokered or shared with an advertising network. The terminal carries no third-party analytics. What leaves the platform are outbound requests to the primary sources named above — nothing else.