Fastest first look: the sample org on the Assess page runs the whole pipeline in one click — no CLI, no org, nothing to install.
Door 1 — the evidence script (recommended)
Run a read-only script, drag a folder in
You need: the sf CLI authenticated to the org you're assessing (a sandbox that mirrors production is the right habit).
1. Head to the Evidence page and copy the script. It's transparent by design: it describes your org first, shows every metadata type it found, writes a package.xml from what your org actually contains, and asks before retrieving anything. Read-only end to end — retrieves and queries, never a deploy.
2. Run it. You get an orgspark-input/ folder: retrieved metadata (Apex, flows, layouts, sharing rules — and, if your org has them, the Agentforce family: bots, planners, topics, actions), the setup queries as CSVs, record counts (numbers only), and the discovery file.
3. Drag the whole folder onto the Assess page. Parsing happens in this tab — watch the signal count appear, then pick your scope and run the free assessment.
4. The review gate opens: keep or kill each draft finding. Nothing reaches a report without you. Then Results.
Door 2 — connect the org live
One-time External Client App setup, then one click per scan
One-time setup (admin, ~5 minutes): in Setup, create an External Client App with OAuth enabled. Callback URL: this site's /oauth/callback/ address (shown on the Connect page). Scopes: api, web, refresh_token. Enable PKCE, and — the step everyone misses — check “Enable Cross-Origin Resource Sharing (CORS) for OAuth endpoints”. Turn on Refresh Token Rotation while you're there; the app handles rotated tokens correctly and Salesforce mandates the pair.
Connect: enter your My Domain and the app's Consumer Key on the Connect page. A popup runs the normal Salesforce login (MFA included); the token lives in this tab's sessionStorage and dies when the tab closes.
Scan: back on Assess, a banner offers Run live scan. It first counts what it would read — classes, triggers, active flows, validation rules, plus the full setup census (including Agentforce agents & bots and record volumes, counts only) — and shows the exact number of read-only API calls before you confirm. Every re-scan calls the org fresh; results are never cached.
The coverage map stays honest about what the live path can't reach (Code Analyzer depth, sharing-rule XML, profile internals) — the evidence script covers those.
Door 3 — bring exports you already have
Org Check, Code Analyzer, sfdx-hardis
Drag in Org Check exports, Salesforce Code Analyzer SARIF files, or sfdx-hardis monitoring reports — alone or alongside script evidence. Their findings are preserved and cited verbatim; orgspark's verdicts sit beside them, never overwrite them.
Reading your results
Three tabs, one verdict hero
The verdict hero (plain-language forecast, Dangeometer, Well-Architected pillar scores) stays on top. Below it: Downloads & Toolkit (grab the workbook and report; the AI layer lives here), The Workbook (every sheet rendered in-page — the most detailed view: the census with greens listed, Agentforce & bots, record volumes, and the Method & Validation sheet that grounds every rule), and Full Report (self-contained HTML; print it and it's your PDF).
Next quarter: keep findings.json. Upload it before your next run and the report computes the delta — resolved, regressed, new.
Refreshes are safe: an accidental refresh restores your session (parsed metadata only, never raw files — it dies with the tab). Closing the tab ends the session by design.
The AI layer (optional)
Two lanes, one judgment standard
Your API key: the fitness deep pass and in-app reuse-vs-rebuild verdicts, each call behind a consent dialog showing exact payload and worst-case cost, adversarially verified, returning through your review. No key: download the Judgment pack (.md) — rubric, your census data, and instructions in one file — and paste it into the claude.ai plan you already have. Either lane, verdicts apply only after your approval, and runlog.json audits every call.
When something snags
Troubleshooting
“Connect failed: Failed to fetch” — the CORS-for-OAuth checkbox on the External Client App isn't ticked. It's the classic.
Login popup never appears — your browser blocked it; allow popups for this site and retry.
Authenticator failed during MFA — approvals expire fast; retry and approve the push promptly. The failure happens inside Salesforce's login, before orgspark is involved.
Old results after an engine update — reports are artifacts of the run that produced them; hard-refresh, then run a fresh scan to re-judge under current rules.
Very large orgs — the live scan caps at 500 classes and 200 flows per pass (disclosed in the count consent); the evidence script has no such caps.
“Can't I just use a CLI token?” — no: Salesforce's CORS layer rejects session-style tokens (like the sf CLI's) from browsers. Only the External Client App's OAuth flow issues tokens that work browser-direct — which is by design, and why the popup exists.
A probe says “skipped” — that org doesn't license the feature (Experience Cloud, etc.); the coverage map records it honestly instead of guessing.