Product tour

Twelve tabs. One map of your system.

The ClarifyDoc report answers a different question on each tab — from “what happens when someone clicks Save?” to “what breaks if I touch this file?”. Every screenshot below is a real, unedited report of RealWorld’s Conduit: an open-source React/Redux frontend and an Express/Prisma backend, analyzed together in under a second. Click Open live ↗ on any of them to explore that view in the live report. One search box finds any route, screen, table or file from any tab (press /), and the report follows your light or dark theme — on a phone too.

01Screens & UI DevelopersArchitects

What screens exist, what’s on them, and what runs when someone clicks?

Every page and component the frontend defines, listed with its route. Open one to see its component tree: each input, button and child component, with the event it fires and the handler that answers. Desktop forms are drawn as a wireframe from their real layout; web screens get a navigation diagram.

  • Pages and components per project, searchable by screen or handler
  • event → handler on every element — click a handler to open its call trace
  • “Expand components” inlines each child component’s own tree
  • Delphi .dfm + .pas and Qt .ui + .cpp pairs read as one screen
Your Settings (/settings): the form, its five fields and the logout button, each event pointing at the handler it calls.
02Call Traces Developers

Who calls this, what does it call — and which table does it end up touching?

Pick any function and see it as a double tree: callers on the left, callees on the right, tables as green leaves. Links cross the HTTP boundary — a frontend call joins the backend route that serves it — and calls through dependency injection resolve to the class the container actually builds.

  • “Reaches” sums up what a symbol touches: database reads and writes, API calls, queue messages — directly or several calls deep
  • Diagram or List view, up to four levels each way
  • Every edge is tagged extracted, inferred or ambiguous, with how it was resolved
  • Ctrl/⌘-click any node to open it in your editor
updateUser in the backend, traced back through PUT /user and Auth.save to the Settings screen’s mapDispatchToProps, and forward to the User table it writes.
The same function as a list: each caller with its file and line, and how sure ClarifyDoc is of the link.
03Architecture ArchitectsDevelopers

How is the system put together — from services down to file imports?

Five views of one graph, each laid out deterministically, so the same code always draws the same picture. With compose, Kubernetes or Terraform files, deployment edges come from evidence — API keys, URLs and connection strings — rather than from someone’s memory.

C4 Architecture — drill from containers (or Context and Deployment, given deployment files) to a project’s components — boxed by folder and by role, controllers to data access, with the datastores outside — and on to its files; colour by layer, folder, project or change risk. Click any edge for the file pairs behind it.
Data Models — the class and type graph — inheritance, fields, parameters — grouped by project.
Data Access — code on the left; datastores, tables and queues on the right; every call site with its line, plus the migrations found.
Matrix — modules × modules: who imports whom, and which imports point back up the layers.
Bundled — every file on a circle by folder, imports bundled through the folder tree.
C4, container level: the frontend calls the backend and the public demo API it is configured against; dashed orange edges are the backend’s database access.
Data Access: each backend service wired to the tables it reads and writes, with Conduit’s four Prisma migrations listed underneath.
04Data Model ArchitectsDevelopers

What does the schema look like, and which code reads or writes each table?

An entity-relationship diagram recovered from ORM code and SQL: columns with primary and foreign keys, relationships with cardinality and join tables. Click an entity for its columns, its relationships and every function that accesses it.

  • About 25 ORMs — EF Core, Hibernate/JPA, TypeORM, Prisma, Django, SQLAlchemy, Eloquent, GORM, Diesel and more — plus plain DDL
  • Filter by source when a table is described twice, like a Prisma schema and its SQL migrations
  • “Accessed by” jumps straight to each function’s call trace
  • Inferred relationships are drawn dashed
Conduit’s Prisma schema with Article selected: 8 columns, 5 relationships — two of them through join tables — and the 11 functions that access it.
05Routes DevelopersArchitects

Which endpoints exist, who may call them, and with what payload?

Every route the backends expose and every API call the frontends make, matched by method and path. Each row keeps what the code says about the endpoint, not just where it lives.

  • Auth: anonymous, policies, roles, schemes or guard middleware
  • API versions, with deprecated ones struck through
  • The request body type and how each parameter binds — body, query, route, header
  • Outbound calls marked when they match a known route — or the third-party service they reach; click a route for its trace
  • Route gaps: calls that reach no route, with the reason, and routes no call reaches
  • Contract findings: a body missing a field the route requires, a response read for a field it never returns
Conduit’s Express routes with their auth middleware (auth.required, auth.optional) and request bodies.
06Data Flows DevelopersArchitects

Which endpoints and screens end up writing to which tables?

Starting from every entry point — each endpoint and each screen — ClarifyDoc follows the calls to the data effects they reach: database reads and writes, outbound API calls and queue messages, however many calls deep.

  • Direct effects and those reached through calls, shown apart
  • How many endpoints and screens reach a write
  • A screens → endpoints → tables diagram, writes in red; click a node to filter
  • Entry points that aren’t routes, too: MCP tools, CLI and editor commands
  • Filter by effect or entry type; click a bar to filter the table
Conduit: 81 entry → data flows. 11 endpoints and 7 screens reach a database write.
07Health LeadersArchitects

How healthy is the codebase, why — and what should we fix first?

A grade from A to F with the penalties that produced it, and the findings behind them: patterns and anti-patterns, security issues, ranked suggestions, duplicated code, layer violations, dependency cycles and dead code.

  • Each penalty opens the findings that caused it
  • Suggestions ranked by priority, each ending in a concrete next step
  • Dead code: files no entry point reaches, exports nothing imports and unused imports — tuned so that “maybe used” stays off the list
  • Performance patterns: a query inside a loop, a blocking call inside async code
  • Security findings traced across files, from request input to the call it reaches; webhooks that never verify their signature
  • Findings from Semgrep, CodeQL or any SARIF tool, joined to the routes that reach them
  • The riskiest files to change, from the blast-radius analysis
Conduit grades B (85/100): one dependency cycle, one long file, two highly coupled files, a security finding and eight layer violations.
Suggestions, most urgent first — an XSS risk from dangerouslySetInnerHTML, a circular import, then the files that are dangerous to change and have no tests.
08Blast Radius DevelopersLeaders

If I change this file, what breaks?

Every file ranked by how far a change to it would reach. Pick one for a plain-language verdict, the screens, routes and tables on the other side of it, and the files that depend on it — directly or transitively.

  • Risk to change — dangerous, moderate or safe — and the file’s role: foundation, boundary, flow, shared
  • Cross-tier reach: the screens, API routes, tables and queues a change would touch
  • Exported symbols, with exactly which files use each one
agent.js, Conduit’s HTTP client: 17 direct dependents, reached by 14 screens, touching 4 tables — a critical-impact change.
09Complexity DevelopersLeaders

Where is the hardest code to maintain — and is it also what changes most?

Cyclomatic complexity per file and per function. With git history, each file also gets its commit count, when it was last touched and a hotspot score — churn × complexity — so you can sort by where risk actually piles up.

  • Expand a file into its functions, with line ranges
  • A treemap of folders and files sized by complexity
  • With git history, every file plotted by commits against complexity — the changed-often-and-complex corner is where to refactor first
  • In VS Code, click a function’s complexity to see it drawn as a flowchart
article.service.ts expanded: updateArticle scores 12, the highest in Conduit.
10Insights Architects

What’s structurally odd that nobody thought to ask about?

The graph’s own signals: how much of it was extracted versus inferred, the god nodes everything leans on, connections that bridge parts of the system that otherwise don’t talk, questions worth asking, and the communities the files fall into.

  • Confidence distribution across every link
  • God nodes, by combined in- and out-degree
  • Surprising connections, with the reason each one stands out
  • Communities named after what they contain
  • Knowledge risk: with git history, the files only one person has ever changed, ranked by the routes and tables they carry
98% of Conduit’s links were extracted directly from the code; actionTypes.js and agent.js are its god nodes.
11Dependencies LeadersDevelopers

What do we depend on — and is it actually used?

Every package declared in every manifest, across ecosystems — npm, NuGet, Maven, PyPI, Composer, Cargo, Go modules and more — with its version, category, scope and whether any code imports it.

  • Frameworks, ORMs and databases sort first
  • Used, unused or unknown — “unused” is only claimed where every import is visible
  • Filter by ecosystem, category or usage
55 packages across Conduit’s two projects; 34 are used by the code or its scripts, and most of the rest are build and lint tooling.
12Overview Leaders

What is this codebase, at a glance?

The headline numbers — files, screens, interactive elements, routes, links, call traces, frameworks, packages and the health grade — with trace confidence, the sub-projects found and, given git history, the top churn × complexity hotspots.

  • Sub-projects detected from their markers: package.json, *.csproj, go.mod, pom.xml and more
Conduit at a glance: two sub-projects, six frameworks, 512 call traces.

On every tab

Filter the whole report

Narrow every tab to one project, one folder or one file type at once.

Jump between tabs

Each file carries buttons that open it in every other tab that knows it — from a screen to its traces, its blast radius or its place in the architecture.

Open it in your editor

Every file and line reference opens in VS Code. In the extension, the report sits right beside your code.

Link straight to it

Each tab has its own address, and a link can preselect a file — #blast~frontend/src/agent.js — so a colleague lands on exactly what you mean.

Send it to anyone

The report is one self-contained report.html. It opens offline in any browser, no install and no account.

Know what to trust

Links carry their confidence — extracted, inferred or ambiguous — so you know which ones are worth a second look.

YOUR CODE NEXT

Get this report for your own system

Run it from VS Code or with a single command. Everything stays on your machine.

Screenshots: ClarifyDoc run, unedited, on RealWorld’s Conduit — react-redux-realworld-example-app and node-express-realworld-example-app, both MIT-licensed, checked out side by side.