Context
What the model needs to know about the org, the org's metadata and the task.
Dreamforce '26 · San Francisco, USA · September 2026
Most teams think prompting is about wording. It isn’t. It’s about the controls.
The symptom
The quality of AI-generated output is determined less by the wording of a prompt and more by the control mechanisms around it.
The pattern
Swapping vague for specific: in what the model knows, what it can’t do, what it can call, and what it must return. Together they turn a single prompt into a system - that is what “prompting as system design” means.
What the model needs to know about the org, the org's metadata and the task.
What the model must not do - and what to do instead, so guardrails redirect rather than just block.
What the model can call - describe calls, search, code execution, connected systems.
The exact shape of the response, plus the self-check it must pass before it ships.
The take-home artifact
Package all four control moves into one prompt with this skeleton. Copy it, then replace each line with the specifics of your org - the builder below does exactly that, with the three worked examples as presets.
CONTEXT: Here is the org-specific evidence - metadata, code, business rules, prior decisions - attached or pasted, not assumed. CONSTRAINTS: Only use what is provided; flag anything inferred. Pair every guardrail with the fallback action, not just the prohibition. TOOLS: Name exactly what the model may call to verify itself - describe calls, code search, sandbox execution - before it answers. OUTPUT + VALIDATION: Define the exact artifact shape and the self-check it must pass first - table, diagram, schema - designed so it can be validated, diffed and reused.
Interactive
Fill the four control moves and the prompt assembles itself on the right. The readiness check applies the six rules of the field guide to what you wrote - it is the same self-check you would ask a model to run. Your draft stays in this browser.
Name the objects, classes and org - not the category.
Pair every prohibition with the fallback action.
Name the exact API or search the model may call to verify itself.
Define the artifact shape and the self-check it must pass.
Worked examples
Three real architecture tasks, each asked the way most teams would ask it - and then packaged with the four control moves. The right-hand column is what produced the artifact underneath it.
Org 1 (acquirer, ~12 years old) → Org 2 (acquired), ahead of the Q3 code freeze.
I pulled the metadata export for Org 1 - objects are Store_Location__c, Product_Bundle__c, and a legacy Order__c that doesn't match our Retail_Order__c. Can you look through this and tell me what's going on before we merge it into Org 2 ahead of the Q3 code freeze? Flag anything risky.
CONTEXT: Object/field metadata for Store_Location__c, Product_Bundle__c and Order__c (Org 1) and Retail_Order__c, Warehouse_Transfer__c (Org 2), plus both orgs' automations. CONSTRAINTS: Flag objects where 2+ automation types share an event context or write the same field. Flag triggers with UsageIsBulk = false or DML in loops. Exclude managed-package components from remediation, but keep them in the totals. TOOLS: Tooling API for active automation (Flows, triggers, Process Builder, ValidationRule) + MetadataComponentDependency (Beta, 2,000-row cap) + schema diff on Order__c vs Retail_Order__c. OUTPUT: merge-readiness-scorecard.md - ERD + risk-scored table (Object, Risk Type, Severity, Merge Blocker, Remediation). Self-check: every Blocker = Yes row must cite the field or class it flags.
| Object | Risk Type | Severity | Blocker | Remediation |
|---|---|---|---|---|
| Order__c → Retail_Order__c | Field incompatibility | High | Yes | Remap Order__c.Status__c (5 values) to Retail_Order__c.Status__c (3 values) before merge |
| Store_Location__c | Automation conflict | Medium | No | 2 Flows + StoreLocationTrigger.cls both update Inventory_Count__c - consolidate before go-live |
| Product_Bundle__c | Non-bulkified DML | High | Yes | ProductBundleHandler.cls performs DML inside a for-loop - refactor before merge |
This is the whole artifact - not a narrative summary. It drops straight into the merge steering-committee deck, and the same table format works for the next acquisition’s metadata too.
Retiring a point-to-point Apex integration to SAP S/4HANA in favour of MuleSoft Anypoint.
We're retiring OrderSyncService.cls - the point-to-point Apex integration to SAP S/4HANA - for MuleSoft Anypoint. Before we scope the build, can you look at logic inside classes like OrderSyncService.cls & SAPCalloutHandler.cls and explain how the sync to SAP actually works end to end?
CONTEXT: OrderSyncService.cls, SAPCalloutHandler.cls, named credential Aurora_SAP_Prod (JWT bearer) and the MuleSoft Order API OpenAPI spec. CONSTRAINTS: Classify each call sync vs async. Flag callouts inside loops and any callout that runs after DML in the same transaction (OrderSyncService.pushTransfer). Flag missing idempotency keys. Treat every finding as a migration-checklist item. TOOLS: Static code search across both classes + Tooling API MetadataComponentDependency (Beta) + OpenAPI diff against the MuleSoft Order API spec. OUTPUT: integration-cutover-checklist.md - sequence diagram + table (Endpoint, Current Pattern, Target Pattern, Risk, Cutover Order). Self-check: every Risk = High row must name the limit it violates.
| Endpoint | Current Pattern | Target Pattern | Risk | Order |
|---|---|---|---|---|
| POST /sap/orders (SAPCalloutHandler.sendOrder) | Sync, called from Retail_Order__c after-insert trigger | Async via MuleSoft Order API | High - callout in trigger risks blocking the save | 1 |
| SAP inventory pull (OrderSyncService.pullInventory) | Async @future, no retry logic | MuleSoft scheduled batch w/ retry | Medium - missing idempotency key | 2 |
| Warehouse_Transfer__c sync (OrderSyncService.pushTransfer) | Async Queueable, callout after DML in same txn | MuleSoft event-driven flow | High - throws “uncommitted work pending” | 3 |
Every row is scoped and sequenced - an estimate-ready cutover plan, not a description. The same table shape works for the next point-to-point integration you retire.
Business admins keep requesting new fields on FSC objects - and half of them break the next release.
We keep getting requests from business admins to add new fields to Financial Account and other FSC objects, and half the time it breaks something on the next release. Can you help design an Agentforce agent that handles these requests instead of admins going straight to Setup?
CONTEXT: FinServ__FinancialAccount__c, FinServ__FinancialAccountRole__c, the standard ActionPlan / ActionPlanTemplate objects, and the Household record type with FinServ__ReciprocalRole__c relationships already in the org. CONSTRAINTS: Governance policy, not a platform limit - only propose a custom object with a lookup, never a custom field on a FinServ__ object. Discover existing automation before drafting. Before deployment always seek an explicit sign-off. TOOLS: Metadata Describe API scoped to the FinServ__ namespace, Tooling API MetadataComponentDependency (Beta) to find existing Action Plan Templates and automation, package version check. OUTPUT: metadata-change-request.md - requested change, discovery summary, proposed custom-object design and an explicit approval flag. Self-check: Approval defaults to Needs Approval unless sign-off appears in Context.
| Section | Details |
|---|---|
| Requested Change | Track loan applications and link them to the household's financial accounts and action plan |
| Discovery Summary | 2 existing Action Plan Templates already reference FinServ__FinancialAccount__c; no object currently tracks loan status |
| Proposed Design | New custom object Loan_Application__c - lookup to FinServ__FinancialAccount__c and Account (Household); triggers the existing “Loan Underwriting” Action Plan Template via Flow |
| Approval Status | ⚠️ Needs Architect Approval - agent has no deploy permission |
The agent never touches Setup. It hands a human architect exactly what they need to approve or reject in under a minute - controlled execution, not unattended automation.
The field guide
Each rule came out of one of the three demos above. Together they are the checklist behind the readiness check in the builder.
Vague names force a guess. Real API names don’t.
Say “the order object” and the model has to guess which one you mean - and it will guess wrong. Actual API names leave nothing to guess.
The prompt named the exact objects and class: Retail_Order__c, Warehouse_Transfer__c and ProductBundleHandler.cls.
Same name, same purpose - not always the same structure.
Two orgs can carry the same object name for two different designs. Verify current metadata and dependencies in each org before you map or merge.
Before planning the merge it compared Order__c with Retail_Order__c, and checked each org’s automation instead of assuming they behaved alike.
Named APIs give the model an explicit path to verification.
Ask the model to use “your Salesforce knowledge” and it answers from memory, not from your org. Naming the exact API or search forces it to go look.
The prompt named the checks to run: search both Apex classes and inspect the org’s dependency data.
Add an owner and a sequence. Turn every finding into a task.
A paragraph explaining a risk is something someone has to re-read and translate into work. A sequence number and an owner is already the task.
Each finding became a cutover step with a clear order and risk - not a paragraph describing the problem.
Block the wrong path - not just state the right outcome.
A model defaults to the most common pattern in its training data. Describing the right answer isn’t enough; you must rule out the tempting wrong one.
The prompt blocked the shortcut: do not add a custom field to the managed Financial Account object - propose a custom object with a lookup instead.
Require a discovery summary. If it isn’t shown, it wasn’t verified.
If the output format has no slot for “what I found already exists”, you have no way to tell whether the model actually checked or simply guessed.
Before proposing a design the model had to list what it discovered in the org - which surfaced existing Action Plan Templates the design had to account for.
In the AI era, everyone will have access to the same models.
The differentiator is no longer the model.
It’s the architecture around it.