One model of your
company, read many ways.
Nogu is not nine integrations into nine products. It is one graph, built once from read-only access to systems you already run, that every product queries.
What the Company Graph actually contains.
The types below, and the edges between them. Everything Nogu claims about your company is a path through this graph, which is why every finding can show its working — and where nothing resolves an entity yet, the table says so rather than naming a system Nogu cannot read.
| Entity | What it is | Resolved from |
|---|---|---|
| customer | A company you sell to, with its revenue history | Stripe |
| repository | A codebase Nogu has indexed | GitHub |
| file · symbol | Where in that codebase something is defined | GitHub · static analysis |
| dependency · provider | An external package or API you call | Manifests · call-site analysis |
| feature · workflow | What your product does, and the paths through it | Declared, then mapped to code |
| capability | What you can claim, as distinct from what you shipped | Declared · read from prose |
| contract · obligation | What you signed, and each duty inside it | Pasted documents, reviewed by a person |
| claim · control | A public statement, and what measures it | Declared · control checks |
| ticket | A reported problem | Declared — no support source is connected yet |
Every finding is a path you can walk.
Nogu does not return an opinion with a confidence score. It returns the chain of entities it traversed, so you can check the claim yourself or disagree with a specific link in it.
The finding below is the one shown on the Margin page. This is the shape it takes when you read it through the API.
{
"id": "fnd_8Kq2",
"product": "margin",
"severity": "high",
"summary": "Acme Corp gross margin 43.7%, 39 pts below cohort",
"path": [
{ "entity": "Account", "id": "acct_acme", "mrr": 199.00 },
{ "entity": "Workflow", "id": "wf_research", "share": 0.667 },
{ "entity": "CallSite", "id": "cs_a41b", "file": "workers/research/run.ts:82" },
{ "entity": "Vendor", "id": "ven_openai", "model": "gpt-5.1" },
{ "entity": "CostEvent", "window": "2026-02", "amount": 74.82 }
],
"recommendation": {
"actions": [
{ "label": "Route 68% of research calls to a lighter model", "saving": 46.30 },
{ "label": "Cache the shared image prompt prefix", "saving": 11.40 },
{ "label": "Batch the nightly reconciliation calls", "saving": 10.83 }
],
"projected_margin": 0.781,
"requires_approval": true
}
}Illustrative — the read API is not published yet
Read-only, per source, revocable.
Nogu asks for the narrowest scope that answers the question. It never holds write access to a production system without an explicit, separate grant and a human approving each change.Eight providers can be connected today; the rest of the catalogue is on the roadmap and is not offered until its consent flow can actually complete.
| Source | Scope requested | What it resolves |
|---|---|---|
| GitHub | contents:read, metadata:read | Call sites, dependencies, repository ownership |
| Stripe | read-only restricted key | Customers, subscriptions, paid invoices |
Nothing writes without approval
Proposed pull requests, migrations and configuration changes are shown in full and applied by a person.
Disconnect and the credential is destroyed
Removing a source deletes Nogu's copy of the credential rather than marking it inactive. Entities already in the graph stay, and say which source they came from — deleting evidence somebody has acted on is not a privacy feature. Revoke the grant at the provider too; Nogu cannot do that for you.
Signed webhooks, not polling
Findings are POSTed to your endpoint as they are raised, at the severities you choose. Each carries an HMAC-SHA256 signature over the timestamp and body, so a captured delivery cannot be replayed. https only, and never a private address.
The API is not public yet.
The entity model above is stable enough to describe. The endpoints are not stable enough to publish. Early access members get the reference as it settles, and get to argue with it.