Every constraint lives in exactly one place. This page says which place, for every kind of requirement.
The single most common way a task configuration goes wrong is duplication: the same limit stated in the specialist prompt, again in special instructions, and again in a quality rule. They drift apart, and only the rule is enforced.
Quality checks never see special instructions. Anything written there is invisible to every check, so it can never be verified.
That makes them right for genuinely unverifiable context — a campaign’s mood, a one-off note about an unusual batch — and wrong for anything you would be unhappy to see violated.
Variant fields reach the generator and every AI check’s context. Prompt text reaches only the generator.So if a brand’s tone rules live in the specialist prompt, the brand-voice check has no idea what the tone was supposed to be. Put them in the variant and the checker is working from the same brief as the writer.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Enterspeed Docs","colors":{"primary":"#0018ff","light":"#99bfdd","dark":"#000035"},"logo":{"light":"https://mintcdn.com/enterspeed/epLxx3NKRbzcMz_w/images/Enterspeed_Logo_RGB_Black.svg?fit=max\u0026auto=format\u0026n=epLxx3NKRbzcMz_w\u0026q=85\u0026s=491f6b7030bd2783bc3e51bb7183237e","dark":"https://mintcdn.com/enterspeed/ZSYX286dEXJYPh8A/images/Enterspeed_Logo_RGB_DIAP.svg?fit=max\u0026auto=format\u0026n=ZSYX286dEXJYPh8A\u0026q=85\u0026s=57859398954b59778cd723e0b9e4dca5"},"favicon":{"light":"https://mintcdn.com/enterspeed/epLxx3NKRbzcMz_w/images/favicon.svg?fit=max\u0026auto=format\u0026n=epLxx3NKRbzcMz_w\u0026q=85\u0026s=2e00ec680e7f80f676f9d4748626ec0f","dark":"https://mintcdn.com/enterspeed/epLxx3NKRbzcMz_w/images/favicon.svg?fit=max\u0026auto=format\u0026n=epLxx3NKRbzcMz_w\u0026q=85\u0026s=2e00ec680e7f80f676f9d4748626ec0f"},"background":{"decoration":"grid"},"navbar":{"links":[{"href":"https://www.enterspeedstatus.com/","label":"Status"}]},"footer":{"socials":{"github":"https://github.com/enterspeedhq","linkedin":"https://www.linkedin.com/company/enterspeed","website":"https://www.enterspeed.com/","youtube":"https://www.youtube.com/@enterspeedhq"},"links":[{"header":"Company","items":[{"label":"Enterspeed","href":"https://www.enterspeed.com"},{"label":"Contact Us","href":"https://www.enterspeed.com/contact"},{"label":"Privacy Policy","href":"https://www.enterspeed.com/privacy-policy"}]},{"header":"Resources","items":[{"label":"Blog","href":"https://www.enterspeed.com/blog"},{"label":"Product Updates","href":"https://updates.enterspeed.com/"},{"label":"Newsletter Signup","href":"https://content.enterspeed.com/newsletter-signup"},{"label":"Privacy Policy","href":"https://www.enterspeed.com/privacy-policy"}]}]},"search":{"prompt":"Search docs"},"icons":{"library":"fontawesome"},"styling":{"eyebrows":"breadcrumbs","latex":false},"integrations":{"gtm":{"tagId":"GTM-N32R9R7"},"mixpanel":{"projectToken":"efb544fc5e5319cb4a082b0154e14df2","region":"eu"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode","download-spec"],"display":"header"},"interaction":{"drilldown":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"enterspeed","hasAudioNarration":false,"actualSubdomain":"enterspeed","customDomains":["docs.enterspeed.com"],"gitSource":{"type":"github","owner":"enterspeedhq","repo":"enterspeed-docs","deployBranch":"master","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"collectionId":"7e4f606c-3f05-4fbe-9449-4d76a8e5937e","liveDeploymentHistoryId":"6ae97f33e98d225f8a4a25c1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae97f33e98d225f8a4a25c1"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae9c20c98ee2cfbfea836ef","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Enterspeed","count":136},{"language":"default","tag":"Overview","count":46},{"language":"default","tag":"Integrations","count":43},{"language":"default","tag":"Source integrations","count":30},{"language":"default","tag":"Speedtrain","count":29},{"language":"default","tag":"Key concepts","count":23},{"language":"default","tag":"Umbraco","count":21},{"language":"default","tag":"Tutorials","count":20},{"language":"default","tag":"Schema reference","count":19},{"language":"default","tag":"Getting started","count":16}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":false}},"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".integration-logos .card img{background-color:#f0f3f7;border-radius:.5rem;padding:.75rem;box-sizing:border-box}.dark .integration-logos .card img{background-color:#000035}"}],"page":{"pagePath":"speedtrain/authoring/placement","slug":"/speedtrain/authoring/placement","pageMetadata":{"title":"Where each requirement belongs","sidebarTitle":"Placement","description":"Every constraint lives in exactly one place. This page says which place, for every kind of requirement.","href":"/speedtrain/authoring/placement"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Every constraint lives in exactly one place. This page says which place, for every kind of requirement.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Step,Steps,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The single most common way a task configuration goes wrong is `,_jsx(_components.strong,{children:`duplication`}),`: the same limit stated in the specialist prompt, again in special instructions, and again in a quality rule. They drift apart, and only the rule is enforced.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Every constraint lives in exactly `,_jsx(_components.strong,{children:`one`}),` place.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`the-placement-table`,children:`The placement table`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`You have…`}),_jsx(_components.th,{children:`It goes in…`}),_jsx(_components.th,{children:`Why`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`The AI’s role, expertise, and approach`}),_jsx(_components.td,{children:`The specialist prompt`}),_jsx(_components.td,{children:`The only free-form slot, and it comes first in the generation prompt.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Output field names and types`}),_jsx(_components.td,{children:`A JSON Schema rule`}),_jsxs(_components.td,{children:[`Injected as guidance `,_jsx(_components.strong,{children:`and`}),` machine-enforced.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Length limits, required fields, enums, formats`}),_jsx(_components.td,{children:`A JSON Schema rule`}),_jsx(_components.td,{children:`Deterministic. Models cannot count characters.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Exact banned words and phrases`}),_jsx(_components.td,{children:`A forbidden-terms rule`}),_jsx(_components.td,{children:`Deterministic, with no misses.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Context-dependent judgment — tone, naturalness, a word used only as a buzzword`}),_jsx(_components.td,{children:`An AI evaluation rule`}),_jsx(_components.td,{children:`Needs understanding, not matching.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Brand voice, terminology, audience traits`}),_jsx(_components.td,{children:`A variant option’s fields`}),_jsxs(_components.td,{children:[`Reaches the generator `,_jsx(_components.strong,{children:`and`}),` the checks, and can be scoped.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`How the AI should use a dimension`}),_jsx(_components.td,{children:`That variant’s instruction`}),_jsx(_components.td,{children:`Per-dimension direction. The defaults usually suffice.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Reference data to look up at runtime`}),_jsx(_components.td,{children:`A capability`}),_jsx(_components.td,{children:`Live data beats pasted data.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Pictures the model must actually see`}),_jsxs(_components.td,{children:[`The images capability, plus `,_jsx(_components.code,{children:`$images`}),` on the document`]}),_jsx(_components.td,{children:`A vision model reads the picture; a text model reads a URL and guesses.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Whether the generated text matches the pictures`}),_jsx(_components.td,{children:`An AI rule that opts into the images capability`}),_jsx(_components.td,{children:`Verification is a separate call, and can use a different model than generation.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Generation-only context — campaign notes, edge cases`}),_jsx(_components.td,{children:`Special instructions`}),_jsx(_components.td,{children:`Checks cannot see it, so only put things here that never need checking.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Which data the job runs over`}),_jsx(_components.td,{children:`The session’s input binding, not the configuration`}),_jsx(_components.td,{children:`One configuration, many feeds.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`the-three-question-test`,children:`The three-question test`}),`\n`,_jsx(_components.p,{children:`For any new requirement, ask in this order:`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Must it be enforced?`,children:_jsx(_components.p,{children:`Then it is a quality rule — deterministic if it can be expressed as a schema constraint or a term list, an AI rule if it genuinely needs judgment.`})}),_jsx(Step,{title:`Must it vary by language, brand, or audience?`,children:_jsx(_components.p,{children:`Then it is a variant field, and possibly a scoped rule alongside it.`})}),_jsx(Step,{title:`Is it just context for generation?`,children:_jsx(_components.p,{children:`Then it is a special instruction — and that is a last resort, not a default.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`why-special-instructions-are-last`,children:`Why special instructions are last`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Quality checks never see special instructions. Anything written there is invisible to every check, so it can never be verified.`})}),`\n`,_jsx(_components.p,{children:`That makes them right for genuinely unverifiable context — a campaign’s mood, a one-off note about an unusual batch — and wrong for anything you would be unhappy to see violated.`}),`\n`,_jsx(Heading,{level:`2`,id:`why-variants-beat-prompt-text`,children:`Why variants beat prompt text`}),`\n`,_jsxs(_components.p,{children:[`Variant fields reach the generator `,_jsx(_components.strong,{children:`and`}),` every AI check’s context. Prompt text reaches only the generator.`]}),`\n`,_jsx(_components.p,{children:`So if a brand’s tone rules live in the specialist prompt, the brand-voice check has no idea what the tone was supposed to be. Put them in the variant and the checker is working from the same brief as the writer.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Where each requirement belongs","sidebarTitle":"Placement","description":"Every constraint lives in exactly one place. This page says which place, for every kind of requirement.","href":"/speedtrain/authoring/placement"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"The placement table","slug":"the-placement-table","depth":2,"children":[]},{"title":"The three-question test","slug":"the-three-question-test","depth":2,"children":[]},{"title":"Why special instructions are last","slug":"why-special-instructions-are-last","depth":2,"children":[]},{"title":"Why variants beat prompt text","slug":"why-variants-beat-prompt-text","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"enterspeed","siteName":"Enterspeed Docs","title":"Where each requirement belongs - Enterspeed Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-24T07:29:05.290Z","originalFileLocation":"speedtrain/authoring/placement.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Every constraint lives in exactly one place. This page says which place, for every kind of requirement.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Enterspeed Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Where each requirement belongs - Enterspeed Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Every constraint lives in exactly one place. This page says which place, for every kind of requirement.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Enterspeed Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.enterspeed.com/speedtrain/authoring/placement\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://enterspeed.mintlify.app/_mintlify/api/og/v2?division=Authoring+guide\u0026amp;title=Where+each+requirement+belongs\u0026amp;description=Every+constraint+lives+in+exactly+one+place.+This+page+says+which+place%2C+for+every+kind+of+requirement.\u0026amp;theme=46924038ce8145a2b946a524\u0026amp;signature=5b933af0187324363b32c19e6a3d35fde5c97d75c10e0453e9172514ba4152d5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Where each requirement belongs - Enterspeed Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Every constraint lives in exactly one place. This page says which place, for every kind of requirement.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://enterspeed.mintlify.app/_mintlify/api/og/v2?division=Authoring+guide\u0026amp;title=Where+each+requirement+belongs\u0026amp;description=Every+constraint+lives+in+exactly+one+place.+This+page+says+which+place%2C+for+every+kind+of+requirement.\u0026amp;theme=46924038ce8145a2b946a524\u0026amp;signature=5b933af0187324363b32c19e6a3d35fde5c97d75c10e0453e9172514ba4152d5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Enterspeed Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0018ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.enterspeed.com/speedtrain/authoring/placement\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/speedtrain/authoring/placement.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.enterspeed.com/#organization\",\"name\":\"Enterspeed Docs\",\"url\":\"https://docs.enterspeed.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/enterspeed/epLxx3NKRbzcMz_w/images/Enterspeed_Logo_RGB_Black.svg?fit=max\u0026auto=format\u0026n=epLxx3NKRbzcMz_w\u0026q=85\u0026s=491f6b7030bd2783bc3e51bb7183237e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.enterspeed.com#website\",\"name\":\"Enterspeed Docs\",\"url\":\"https://docs.enterspeed.com\",\"publisher\":{\"@id\":\"https://docs.enterspeed.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.enterspeed.com/speedtrain/authoring/placement#webpage\",\"url\":\"https://docs.enterspeed.com/speedtrain/authoring/placement\",\"name\":\"Where each requirement belongs\",\"description\":\"Every constraint lives in exactly one place. This page says which place, for every kind of requirement.\",\"dateModified\":\"2026-09-24T07:29:05.290Z\",\"isPartOf\":{\"@id\":\"https://docs.enterspeed.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.enterspeed.com/speedtrain/authoring/placement#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.enterspeed.com/speedtrain/authoring/placement#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Enterspeed Docs\",\"item\":\"https://docs.enterspeed.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Where each requirement belongs\",\"item\":\"https://docs.enterspeed.com/speedtrain/authoring/placement\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.enterspeed.com/speedtrain/authoring/placement#article\",\"headline\":\"Where each requirement belongs\",\"name\":\"Where each requirement belongs\",\"description\":\"Every constraint lives in exactly one place. This page says which place, for every kind of requirement.\",\"url\":\"https://docs.enterspeed.com/speedtrain/authoring/placement\",\"mainEntityOfPage\":{\"@id\":\"https://docs.enterspeed.com/speedtrain/authoring/placement#webpage\"},\"dateModified\":\"2026-09-24T07:29:05.290Z\",\"publisher\":{\"@id\":\"https://docs.enterspeed.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.enterspeed.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Enterspeed Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Enterspeed Docs","nav":{"global":null,"products":[{"product":"Enterspeed","icon":"gear-complex-api","description":"The data orchestration layer","pages":[{"title":"Enterspeed","href":"/enterspeed/welcome"}]},{"product":"Speedtrain","icon":"microchip-ai","description":"Governed AI content enrichment","pages":[{"group":"Overview","pages":[{"title":"What is Speedtrain","sidebarTitle":"Introduction","href":"/speedtrain/intro"},{"title":"How data moves between Enterspeed and Speedtrain","sidebarTitle":"Data flow","href":"/speedtrain/data-flow"},{"title":"How it works","href":"/speedtrain/how-it-works"},{"title":"Use cases","href":"/speedtrain/use-cases"},{"group":"Getting started","icon":"circle-play","pages":[{"title":"Getting started","sidebarTitle":"Overview","href":"/speedtrain/getting-started/intro"},{"title":"Tenants and environments","href":"/speedtrain/getting-started/tenants-and-environments"},{"title":"Add a content source","href":"/speedtrain/getting-started/content-source"},{"title":"Build a task configuration","href":"/speedtrain/getting-started/task-configuration"},{"title":"Preview and review","href":"/speedtrain/getting-started/preview-and-review"},{"title":"Publish the results","href":"/speedtrain/getting-started/publish"}]},{"group":"Key concepts","icon":"lightbulb-on","pages":[{"title":"Key concepts","sidebarTitle":"Overview","href":"/speedtrain/key-concepts/overview"},{"title":"Content sources","href":"/speedtrain/key-concepts/content-sources"},{"title":"Task configurations","href":"/speedtrain/key-concepts/task-configurations"},{"title":"AI specialists","href":"/speedtrain/key-concepts/ai-specialists"},{"title":"Variants","href":"/speedtrain/key-concepts/variants"},{"title":"Capabilities","href":"/speedtrain/key-concepts/capabilities"},{"title":"Quality checks","href":"/speedtrain/key-concepts/quality-checks"},{"title":"Quality gates","href":"/speedtrain/key-concepts/quality-gates"},{"title":"Review sessions","href":"/speedtrain/key-concepts/review-sessions"},{"title":"Destinations","href":"/speedtrain/key-concepts/destinations"},{"title":"Workflows","description":"Connecting a content source to a task configuration so documents are processed continuously rather than session by session.","href":"/speedtrain/key-concepts/workflows"}]}]},{"group":"Authoring guide","icon":"compass","pages":[{"title":"Where each requirement belongs","sidebarTitle":"Placement","href":"/speedtrain/authoring/placement"},{"title":"Best practices","description":"Patterns that make task configurations perform well — rule budgets, deterministic-first design, and safe rollout.","href":"/speedtrain/authoring/best-practices"},{"title":"Iterating a configuration","sidebarTitle":"Troubleshooting","href":"/speedtrain/authoring/troubleshooting"}]},{"group":"Settings","icon":"gear","pages":[{"title":"Management clients","href":"/speedtrain/settings/management-clients"},{"title":"Tool credentials","href":"/speedtrain/settings/tool-credentials"}]},{"group":"MCP server","icon":"plug","pages":[{"title":"MCP server","sidebarTitle":"Overview","href":"/speedtrain/mcp-server/overview"},{"title":"Connect to the MCP server","sidebarTitle":"Connect","href":"/speedtrain/mcp-server/connect"},{"title":"Management MCP tools","sidebarTitle":"Tools","href":"/speedtrain/mcp-server/tools"}]}]}]},"basePath":"","title":"Where each requirement belongs - Enterspeed Docs","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":[],"chunks":[]}