Know your Salesforce org.
Salesforce org hygiene.
Walk into any Salesforce org and know exactly what’s in it, what depends on what, and where the problems are. Scrubber gives you two read modes on one indexed catalog of your org — understand what’s there, then fix what’s broken.
Free during beta. Beta customers lock in reduced pricing at launch.
- Read-only Salesforce OAuth — we never write to your org.
- Your data stays in your region.
- We do not train models on your metadata.
- Account52
- Contact38
- Opportunity47
- Case41
- Lead35
- Project__cCustom22
- Invoice__cCustom18
- Contract24
See your org clearly.
Scrubber indexes every piece of metadata in your org and describes it in plain English. Open the catalog and you can read your org the way you’d read a well-documented project.
Plain-English descriptions on everything
Every Apex class, Flow, validation rule, field, and permission set comes with a clear description of what it does and why it’s there. No more “what does this Apex class actually do?”
Dependency lists that tell you what depends on what
Inbound and outbound dependencies on every component. Change a field, retire a Flow, or rename an object with confidence — you’ll see exactly what relies on it first.
Search by description, not API name
Type “Apex about territory assignment” and find it. Plain-English semantic search across the whole org, even when you don’t know the API name.
OpportunityTriggerHandler
Handles before-update logic on Opportunity records. Sets stage probability from the active sales process, validates close-date sanity, and propagates changes to related Account revenue rollups. Invoked from OpportunityTrigger on every insert and update.
- TriggerOpportunityTriggerOpportunity · before update
- ApexOpportunityRollupServiceApex Class
- ApexRevenueProjectorApex Class
- ApexForecastSnapshotJobApex Batch
- TestOpportunityTriggerHandler_TestApex Test · 12 methods
- FieldOpportunity.StageNamePicklist
- FieldOpportunity.CloseDateDate
- FieldOpportunity.ProbabilityPercent
- ApexAccountRollupHelperApex Class
- ApexAuditLoggerApex Class
- ValidationOpportunity_Close_Date_SanityValidation Rule
Hardcoded credential in Apex
Apex code is referencing what looks like a credential, API key, or secret as a string literal. Anyone with read access to the class can see the value, and rotating it requires a deploy.
- LegacyAuthHelper.clsApex Class2024-08-12Critical
- ExternalSyncJob.clsApex Class2024-11-04Critical
- OrderRoutingService.clsApex Class2025-01-18High
- InvoiceWebhookCallout.clsApex Class2025-03-09High
- PartnerPortalProxy.clsApex Class2025-04-22Medium
- 1Move secrets out of code
Replace hardcoded values with Custom Settings, Custom Metadata Types, or a Named Credential, depending on whether the value is config, env-specific, or a callout secret.
- 2Restrict access
Grant read on the new container only to the permission sets that need it. Default org-wide should not see it.
- 3Update callers
Refactor each offender to read from the new source. Keep helper methods small and unit-test the read path.
- 4Verify
Run targeted Apex tests in a sandbox, confirm callouts authenticate via the Named Credential, and re-scan the org — this signal should drop to zero.
Find what’s broken. Fix it in priority order.
Scrubber scores every component on the same indexed catalog. One number at the top, the next concrete fix at the bottom, and the path between them is two clicks.
A composite score across multiple pillars
One score tells you how healthy the org is overall, broken out by pillar so you know where to start — security, quality, performance, and more.
Drill from pillar to topic to finding to instance
Click a pillar to see the topics dragging it down. Click a topic to see individual findings. Click a finding to see every offending component, side-by-side.
A remediation recipe on every finding
Each finding ships with what to change, why it matters, and how to verify the fix — written for the admin or developer who will actually do the work.
Watch the score climb. Catch regressions before they ship.
Once you’re past the initial cleanup, Scrubber tracks every change so you know your org’s health is moving in the right direction.
Score trend across pillars
Watch composite + per-pillar lines move week over week. Toggle between 30 days, 90 days, or all-time.
Every change, attributed
Each metadata edit logged with who made it and when, in a 30-day rolling feed. See the unsanctioned tweak before it bites.
Resolved + new findings, classified
When a finding closes, see whether it was fixed, the component was deleted, or the risk was accepted. New findings classified the same way so you know if a regression slipped in.
- OpportunityTriggerHandler.clsApex ClasseditedB. Smith2h ago
- Lead Conversion FlowFloweditedM. Cortezyesterday
- Account.Industry__cFieldaddedJ. Patel2 days ago
- Renewal Reminder WorkflowWorkflowdeletedA. Lee3 days ago
Bring your org’s findings to your editor.
Scrubber exposes the catalog and findings as a Model Context Protocol (MCP) server, so Cursor, Claude Code, and Salesforce Vibes can query org metadata and remediation guidance directly during a coding session. Ask “what depends on this field?” or “why is this Apex flagged?” and the answer comes back from your own org — without leaving the editor.
What's wrong with OpportunityTriggerHandler and how do I fix it?
{ componentId: "01p7Q000003zZuAQAU::ApexClass::OpportunityTriggerHandler" signal: "empty-catch-block" include: ["offender", "remediation"]}
{ severity: "high" component: "OpportunityTriggerHandler" offender: { lineNumber: 47 methodName: "updateRollup" snippet: "} catch (Exception e) { /* */ }" } remediation: { pattern: "swallowed-exception" fixHint: "Log via Logger.error or rethrow" }}
The empty catch on line 47 of updateRollup is swallowing exceptions. Replace it with a structured log call or rethrow so the trigger surfaces the failure instead of hiding it.
Three jobs, one product.
The new admin or consultant
Just inherited an org and needs to know what’s there before changing anything.
Walk in informed. Skip the “what does this even do?” phase.
The developer about to ship a change
Needs to know what depends on what before merging.
Catch the cascade before it hits production.
The team facing growing tech debt
Needs to know which pillars are degrading and what to fix first.
Trade backlog guesswork for a scored, ordered punch list.
Get beta access
We’re onboarding admins and developers one at a time. Tell us about your org and we’ll be in touch. Free during beta. Beta customers lock in reduced pricing at launch.