SfSkills Domains Docs GitHub

Home / architect / salesforce-decision-analysis

salesforce-decision-analysis

Structure and evaluate a consequential Salesforce choice before the team commits: frame the decision, separate hard constraints from preferences, compare viable options with evidence, test score sensitivity, and recommend a reversible next step. Trigger keywords: compare Salesforce options, evaluate alternatives, make a platform decision, decision matrix, weighted decision. NOT for documenting an already accepted choice — use architect/architecture-decision-records. NOT for a narrow technology branch already covered by a canonical decision tree — apply that tree first.

Open the skill folder on GitHub


Salesforce Decision Analysis

Use this skill before committing to a non-trivial Salesforce product, architecture, automation, integration, security, data, or delivery choice. Its job is to make the decision auditable and testable, not to manufacture certainty or replace the specialist skill that supplies domain evidence.


Decision Packet Contract

A complete packet contains each element below. Keep raw research outside the packet and link to stable evidence IDs or URLs.

ElementRequired contentFailure prevented
Decision frameOne question, one measurable outcome, in-scope and out-of-scope boundariesSolving adjacent problems instead of the stated one
Target contextOrg/project/workload/release identity, or an explicit not requiredTreating release- or org-dependent behavior as universal
ConstraintsHard gates separated from preferencesAllowing a high weighted score to hide an infeasible option
Evidence ledgerFacts, recommendations, assumptions, unknowns, source tier, observed dateLaundering opinions into facts
Viable optionsAt least two options a competent team could choose; include standard/reuse/no-change when credibleComparing a favorite to strawmen
Criteria modelCriterion definition, measurement, direction, weight, and rationaleArbitrary weights and double-counting
ComparisonHard-gate result, score, evidence, uncertainty, and tradeoff for every option/criterionUnsupported scoring
SensitivityWeight or score changes that would alter the winnerFalse precision from one weighting scheme
Risk and reversibilityFailure modes, blast radius, lock-in, exit cost, rollback or experimentIgnoring asymmetric downside
RecommendationPreferred option, confidence, conditions, validation step, and decision ownerA recommendation with no action or accountability

Evidence States

Classify every material statement before scoring it.

StateMeaningHow it may influence the decision
factDirectly supported by identified org/project evidence or a source appropriate to the claimMay support a hard gate or a score
recommendationA documented pattern or expert judgment, not a platform guaranteeMay shape criteria; never becomes a hard gate without policy ownership
assumptionPlausible but not yet verifiedScore with uncertainty and add a validation action
unknownEvidence is absent, contradictory, stale, or inaccessibleDo not assign a favorable score; expose the decision risk

For release-sensitive claims, record the Salesforce release or API version and the date observed. For org-specific claims, record the exact org or snapshot identity. Never use a source URL as proof that the target org has a licensed or enabled capability.


Hard Gates Before Weighted Scoring

A weighted matrix answers which feasible option best fits the preferences. It cannot make an infeasible option viable.

Evaluate gates first:

  1. Platform feasibility — supported metadata/API/runtime behavior for the stated release.
  2. License and entitlement — confirmed availability for the target edition, add-ons, user licenses, and contractual constraints.
  3. Security and compliance — data classification, least privilege, residency, audit, encryption, and segregation requirements.
  4. Authority and environment — whether the requested operation is permitted for this run and target.
  5. Non-functional minimums — required throughput, latency, availability, recovery, scale, and supportability.
  6. Delivery boundary — package ownership, deployment path, testability, and rollback feasibility.

Use PASS, FAIL, or UNKNOWN. A FAIL eliminates the option. An UNKNOWN keeps it provisional and caps confidence until validated.


Constructing Real Options

Options must differ in a load-bearing choice, not just naming. Consider these families where relevant:

FamilyCandidate option
StandardNative Salesforce capability with configuration only
ReuseExtend an existing component, package, automation, service, or data product
ConfigureAdd declarative metadata while preserving the current architecture
BuildAdd custom Apex, LWC, integration, or external service behavior
BuyAdopt a managed package or licensed Salesforce product
SequenceRun a bounded pilot, defer, or stage the capability behind an experiment
No changeRetain the current state and accept the documented cost/risk

Do not force all families into every decision. Include only options that survive an initial plausibility check, and explain why other obvious families were excluded.


Criteria and Weighting

Start from the business outcome and hard constraints. Then map criteria to Salesforce Well-Architected concerns without counting the same effect twice.

CriterionEvidence questionTypical measurement
Outcome fitDoes the option satisfy the acceptance criteria?Coverage of required scenarios
TrustWhat access, data exposure, compliance, and failure risk does it create?Control gaps and residual risk
ReliabilityHow does it fail, recover, retry, and avoid duplicate work?Failure modes, RTO/RPO, idempotency
Scale and performanceDoes it fit data volume, concurrency, limits, and latency?Headroom and measured/estimated load
User and operator effortHow difficult is it to use, support, diagnose, and change?Steps, roles, observability, runbooks
DeliveryCan it be built, tested, deployed, and rolled back safely?Dependencies, lead time, test surface
Cost and lock-inWhat recurring, implementation, migration, and exit costs exist?Total cost range and switching cost

Weight rules:

A practical 1–5 anchor:

ScoreMeaning
1Fails most of the criterion or creates an unacceptable tradeoff
2Partially fits; substantial remediation or risk remains
3Meets the minimum with material tradeoffs
4Strong fit with manageable tradeoffs
5Best-supported fit; do not use when evidence is incomplete

Sensitivity and Uncertainty

Run at least two challenges:

  1. Weight sensitivity — increase the two most debatable weights and reduce the current winner's strongest criterion. Record whether the ranking changes.
  2. Evidence sensitivity — replace each load-bearing assumption with a conservative value. Record whether the recommendation changes or becomes conditional.

Also state the smallest plausible change that would reverse the recommendation. When several options remain close, recommend a time-boxed experiment instead of declaring a false winner.


Risk and Reversibility

For every viable option, record:

Prefer the smallest reversible step when evidence is weak and the cost of being wrong is high. Reversibility is not automatically superior: a temporary workaround that creates hidden operational debt may score worse than a deliberate durable change.


  1. Frame and route one decision question and measurable outcome. Separate constraints, preferences, non-goals, deadline, and owner; then apply the narrowest canonical decision tree or specialist skill and record its branch or gap.
  2. Gather evidence and options using standards/source-hierarchy.md, target-org/project evidence when applicable, and a claim ledger. Generate genuinely viable options independently before ranking, including standard, reuse, and no-change options when credible.
  3. Apply hard gates and remove failed options. Keep UNKNOWN gates visible and cap confidence until their validation action completes.
  4. Define and score criteria with pre-declared anchors, owner-approved weights, evidence, and uncertainty. Never let a weighted score override feasibility.
  5. Challenge the result with weight/evidence sensitivity, risk asymmetry, reversibility, and a pre-mortem. Prefer a bounded experiment when the winner is unstable.
  6. Recommend and hand off an option, experiment, defer, or no-change posture with confidence, unresolved unknowns, validation actions, and reversal conditions. After human acceptance, hand the result to architect/architecture-decision-records; do not treat the mutable analysis packet as the frozen ADR.

Decision Statuses

StatusUse it when
recommendEvidence supports one option and no load-bearing gate is unknown
conditional-recommendOne option leads, but named assumptions or gates must be verified
experimentOptions remain close or a reversible test can resolve the main uncertainty
deferThe decision deadline or dependency makes a responsible choice premature
no-changeThe current state is deliberately retained after comparing its costs and risks
refuseThe requested decision would violate policy, authority, law, or a non-negotiable control

Review Checklist


Output Artifacts

ArtifactPurpose
decision-analysis.mdHuman-readable decision packet using the bundled template
decision-analysis.jsonOptional structured representation for automation and MCP consumers
evidence-ledgerStable claim-to-source mapping with freshness and uncertainty
validation-actionsOrdered checks that resolve remaining assumptions before commitment
adr-handoffConcise accepted decision, premises, alternatives, consequences, and review trigger

Validate a packet with:

python3 skills/architect/salesforce-decision-analysis/scripts/check_salesforce_decision_analysis.py --input path/to/decision-analysis.md

See references/examples.md, references/gotchas.md, references/llm-anti-patterns.md, and references/well-architected.md for worked packets and review guidance.

Dependencies

Package files