-
-
Every aspect of an entity mapped out -- what are people saying exactly?
-
Risks? open surfaces things that you would not normally finds, and discovers evidence for/against claims.
-
See how the general public thinks of an entity -- small scale review sites are generally unreliable.
-
So much data wowwowow.
-
Data data data and more data -- open continuously monitors and scrapes the entities is monitors.
open
Inspiration
I work in finance, and due diligence can't keep up with AI. An AI tool can recommend a stock in seconds. Checking whether that company's claims hold up still takes hours of reading filings, press releases and posts.
The hard part isn't finding information. It's separating what a company says from what the evidence supports. Most AI research tools make this worse: they mix a 10-K, a press release and a tweet into one confident paragraph.
The same problem appears in other roles too. A procurement team vetting a supplier and a sales team sizing up a prospect need the same thing: evidence, not claims. So we built open for all of them.
What it does
open is a cited record of what a company claims and what the evidence supports. You name a company, ask the question you actually care about, and pick the exact legal entity. open returns cited passages first, then an AI summary. When the sources don't prove something, it says so.
- Claim ledger. Every claim carries its source, date, evidence for, evidence against, and a status: supported, contradicted or unresolved.
- Attribution discipline. Articles and posts stay attributed opinions unless something independent backs them. An employee's post is that person's claim, not the company's.
- Separate evidence classes. Verified financials from SEC filings never blend with estimates or social signals. Missing financials show as unknown and are never inferred from posts.
- Public mentions. Posts are counted with their source batch. Claims pulled from posts link back to the post and are labeled reported, not verified.
- Role lenses. You choose who you are: investor, customer, vendor or scout. The evidence, sources and standards stay the same. Only the order and framing change, for example claims and counterclaims for an investor or reported problems for a customer.
- Coverage panel. It lists the sources checked, the claims still unresolved and the explicit gaps. Missing evidence is shown as missing, never as proof.
The live demo covers five companies with full evidence packs: Apple, Microsoft, Amazon, Alphabet and NVIDIA.
How we built it
We kept the stack small: one Node.js process serves a plain HTML/CSS/JS frontend and a JSON API, with a JSON store on a Railway volume. We built the UI with Cursor.
Verified financials come from SEC EDGAR: the submissions API, XBRL company facts (revenue, net income, R&D, diluted EPS) and 10-K Item 1A risk factors, which we quote word for word.
- Claims and coverage come from company newsrooms, Google News, Reddit (official read-only OAuth), Apify actors and custom reddit, X, YouTube mention data.
- Custom phone agent. Some of the conversation about a company lives only inside mobile apps that no API reaches. We built an agent that drives a real phone through a Phone Use MCP gateway: it connects to a rig, scrolls the feed and takes a screenshot after each scroll. An LLM vision pass then transcribes only the posts actually visible on screen. Those posts are deduped and merged into the company's evidence pack with their own source label.
- AI signals. An LLM reads every collected post for sentiment and aspects. Long posts are split into overlapping chunks so a negation never gets cut in half, then merged back into one signal per post.
- Deterministic grounding. The model can only cite post numbers. The server maps those numbers back to real posts and drops any claim without a valid citation, so a quote can't be made up.
- Paid access with x402. Diligence data usually sits behind enterprise contracts that cost tens of thousands of dollars a year, so only big funds can afford it. We flipped that model: with Coinbase CDP's x402 SDK, each report, memo or export is paid per API call in USDC micropayments. No contract, no sales call and no account. An analyst, a small buyer or an AI agent pays a cent for the one answer it needs. The demo runs free, and when payments are on, the gate fails closed.
- CRS credit sandbox. We integrated the Cal Hacks CRS sandbox for private-company and counterparty credit. It is deliberately kept out of public large-cap reports.
Sponsor tools we built on
Each sponsor fills a gap the others can't, and together they make up the whole pipeline: find the evidence, collect it at scale, check credit, and sell the answer per call.
| Sponsor | What we built with it | Why it matters |
|---|---|---|
| Context.dev | An agent that answers the user's question when our own data doesn't cover it. Brand search resolves the company, including private ones. Web search and highlights then return quoted passages tied to the question. | Our evidence packs are deep but finite. Context.dev handles the long tail, and every answer stays a cited quote, never a guess. |
| Apify | Scraping actors for social posts, run in batches and merged into each company's evidence pack. Token validation runs before any paid run, and spend is capped. | Collection at scale: 7,889 X posts across Apple, Microsoft, Amazon and Alphabet. |
| CRS | A Cal Hacks CRS sandbox client for small-business credit (SBSS) on private counterparties. | Public companies have SEC filings; private suppliers and counterparties don't. CRS gives those targets a credit layer. |
| Coinbase x402 | Per-call USDC micropayments on reports, memos and exports, with a payment gate that fails closed. | It replaces enterprise data contracts with open pay-per-answer pricing, cheap enough for an individual analyst or an AI agent. |
| SpaceXSI | A supplier-vetting slice for space suppliers built on live USASpending award records and NASA NTRS citations. | Shows open working beyond investing: a buyer can qualify a supplier from federal contract and research history, with every caveat stated. |
Challenges we ran into
Data collection at scale. We wanted to analyze every post, not a 40-post sample, and that meant long-running jobs that kept getting interrupted. We added checkpoint resume and a forced restart for stalled signal jobs, plus a guard against counting the same job as done twice. We dedupe posts by link across paginated sources. When the same report is requested twice at once, both requests share one run, so paid APIs are billed only once. We also set hard budget caps on model and scraping spend so a runaway job can't drain the account.
Entity resolution. "Apple" can mean Apple Inc., Apple Hospitality REIT or Apple Bank. A wrong match taints every claim after it. So we added an explicit identify step: you pick the exact legal entity before any evidence is collected. Matching names alone also isn't enough to link facts together. Two Caterpillar contract documents, a 2019 press release and a 2022 award, look related, but neither confirms the other.
Keeping agents and scraping honest. When agents, scrapers and LLMs all feed one report, a reader has to be able to trace any line back to where it came from. So we built an audit trail into every layer:
- Every source is logged. Each report lists every source it tried, how many items came back, and whether it ran live, failed or wasn't configured. A source that's switched off says so instead of quietly returning nothing.
- Every item has provenance. Data is tagged as fetched live or seeded, with a fetch time. Each evidence pack keeps a history of its collection batches: which source, when, how many items were collected and how many were new after deduping.
- Every model output is traceable. AI analyses record the model, the generation time and how many input posts they read. Claims count only if the model cites real post numbers, which the server maps back to the original posts and links.
- Every dollar is logged. Each Apify run and each LLM call is recorded with its run ID, tokens and cost, against hard budget caps.
- Cached reports say they're cached. A replayed report shows its cache ID and original generation time. Cache keys include a schema version, so an old report never passes as fresh.
- The phone agent is the strictest. It can only scroll and screenshot; it never types or taps. Screenshots are stored under their SHA-256 hash so a person can check the source, and every post it reads is labeled a model transcription and kept out of citations. It's capped at 20 scrolls per task, and it refuses to run without an online rig, HTTPS and the operator's consent to trace recording.
Accomplishments that we're proud of
- Honesty by design. open would rather say "unknown" than guess. Gaps show up as gaps, AI summaries are labeled as AI, and claims taken from posts are marked reported, not verified. Where sources don't prove a claim, the product says so out loud.
- Role lenses. An investor, a customer, a vendor and a scout get the same evidence, sources and standards, each arranged around the decision they need to make. That makes one engine useful to anyone deciding about a company, not just investors.
- Massive scale: In under 24 hours we pulled 18,152 posts and mentions (17,216 unique after deduping), going back as far as 2012. Apify's X scrapes for four companies, 7,889 posts in all.
| Evidence pack | Posts collected | Unique after dedupe | Earliest post |
|---|---|---|---|
| Apple | 7,169 | 6,771 | 2023 |
| Microsoft | 2,834 | 2,688 | 2014 |
| Amazon | 2,827 | 2,720 | 2015 |
| NVIDIA | 2,193 | 2,185 | 2019 |
| Alphabet | 2,019 | 2,018 | 2020 |
| Google (consumer brand, tracked apart from Alphabet) | 1,110 | 834 | 2012 |
| Total | 18,152 | 17,216 |
Counts are from the live app's /api/packs on Oct 25, 2026. That's on top of SEC EDGAR filings and XBRL financials for every company.
What we learned
- Speed isn't the bottleneck; trust is. AI can already summarize a company in seconds. What's missing is a summary you can audit line by line.
- Make the model point, and let code check. Asking the model to cite post numbers and having the server map them back was far more reliable than trusting the quotes it wrote itself.
- The data layer is the product. Most of our time went into collection, deduping, provenance and entity resolution, not prompts. Getting the right company and the right sources mattered more than any model choice.
- Fail closed everywhere. Payments, secrets and missing data all default to showing nothing over showing something wrong.
What's next for open
- Any company, not five. Remove the five-company demo gate so any public company can be vetted on demand, then extend coverage to private companies.
- Watchlists and alerts. open already saves snapshots and shows a diff on refresh. Next, it re-runs them on a schedule and alerts you when a claim moves between supported, contradicted and unresolved, or when a new filing contradicts what the company said.
Log in or sign up for Devpost to join the conversation.