Questions to ask about an operation before modeling it as a Kardinal plan: business facts, like hard time windows or depot reloads, a data export can’t show.
This page is optional — nothing in the API requires it. Its purpose is to hand whoever builds the integration, a human or an AI agent, the business context a raw data export can’t contain on its own: is a time window really a hard cutoff, or just a preference? Can a vehicle reload at the depot mid-day? What’s the real capacity of a delivery van? Answering these once, wherever you keep notes, means that context is available when the plan gets modeled, instead of being silently guessed at deep inside a payload.The target audience of this briefing checklist is whoever knows the operation: an operations manager, a dispatcher, the person who owns the data export.
Building a payload from a client’s raw data? Pair this checklist with Start here if you’re an AI agent — the answers here are exactly the inputs that let that checklist resolve open questions instead of guessing at them.
What files are you working from, and what does one row represent?
Is there a grouping key that turns several rows into a single delivery stop (for example, depot + date + tour + customer)?
Are there rows that are not real deliveries and should be excluded (returns, internal transfers, cancelled orders)?
Any column you know is unreliable or shouldn’t be trusted at face value?
Any known data-quality issues (corrupted addresses, internal codes instead of real addresses, inconsistent units, encoding/whitespace issues)?
What unit is weight/volume/quantity expressed in?
The row-to-stop aggregation key and the “don’t trust this column” list are two of the most common silent-error sources when modeling from a raw export — get them directly from someone who knows the operation rather than inferring them from the file.
Is the fleet homogeneous (all vehicles identical), or are there several vehicle types?
What is the real capacity of each vehicle type (weight / volume / pallet or container count — the actual nameplate figure)?
Should vehicle capacity be modeled as a hard constraint at all, or is it never actually the bottleneck?
Are any vehicles specialized (refrigerated, hazmat, bicycle/light vehicle, tail-lift required, etc.)?
Does a vehicle depart from and return to a fixed depot, or can a route start/end elsewhere?
Is the fleet size fixed (given), or should the plan size the fleet itself — that is, is “fewer vehicles” a valid outcome?
Real fleet size/composition and real vehicle capacity are almost never recoverable from a raw export alone — expect to flag at least one of these as an open question.
What time do drivers leave the depot, and what time do they return?
Is there a maximum working duration per day, independent of that window?
Are breaks mandatory?
If so: a fixed clock-time window, or triggered by cumulative driving/working time?
Break duration?
Break rules are very often collective-bargaining-agreement or labor-code facts specific to the sector/country — no generic default can supply the real figure. See Three kinds of break for how breaks[] represents each trigger type.
How long does a typical stop take (service/unload time)? Is it flat, or does it scale with order size (for example, number of lines/pallets)?
Do customers have delivery time windows?
If a vehicle arrives outside the window: is the delivery refused/impossible (hard constraint), or just late/undesirable (soft preference)?
Are there special access constraints at some stops (site closes at a fixed hour, specific equipment or skill required, appointment-only access)?
Hard vs. soft time windows is the single most frequently recurring ambiguity when modeling a real operation — a stated business hour is not automatically proof of a hard cutoff. See Hard vs soft constraints.
Can a vehicle return to the depot mid-day to reload and go out again, or is it strictly one loop per vehicle per day?
If reloads happen: how long does loading/unloading at the depot take per visit?
Is there a limit on how many vehicles can be at the depot/dock at the same time?
A single loop per vehicle per day isn’t the only valid pattern — many real operations reload at the depot mid-shift, and modeling that as a single loop silently drops the stops that don’t fit. See Multi-trip tours if reloads apply to this operation.
Are addresses generally clean and precise, or are there known problem categories (internal codes, rural/no-formal-address locations, motorway points, generic street names shared across villages)?
If a stop can’t be geocoded precisely: is an approximate location (for example, postal-code centroid) acceptable, or should the stop be excluded instead?
Preferred geocoding provider / country code, if there’s an existing preference or account?
The API doesn’t geocode addresses — every position submitted must already be a real {lat, lon} pair. If you can’t geocode your addresses yourself, contact customer.success@kardinal.ai: the team can geocode an address set for you on request. If precise coordinates aren’t available for some stops, that’s a data-quality gap to flag, not something to paper over with a placeholder. See §5 of the AI agent checklist.
Multi-trip tours — the depot-return/reload pattern from §7 in detail.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Kardinal Route Optimization API","description":"Documentation for Kardinal's self-service logistics optimization API. Create an account and get an API key at https://console.kardinal.ai.","colors":{"primary":"#4D6AFF","light":"#C5A4FF","dark":"#1B1813"},"logo":{"light":"https://mintcdn.com/kardinal/NzVu4E70FNnktm7V/images/Logo-blue-black.png?fit=max\u0026auto=format\u0026n=NzVu4E70FNnktm7V\u0026q=85\u0026s=877e4130943370aa62e85ed76662c9bc","dark":"https://mintcdn.com/kardinal/NzVu4E70FNnktm7V/images/Logo-blue-white.png?fit=max\u0026auto=format\u0026n=NzVu4E70FNnktm7V\u0026q=85\u0026s=65aa4a2a695f749b32d5fe890b8017ec","href":"/"},"favicon":"https://mintcdn.com/kardinal/NzVu4E70FNnktm7V/images/Icon-blue.png?fit=max\u0026auto=format\u0026n=NzVu4E70FNnktm7V\u0026q=85\u0026s=e8d6c833a0278ea081ea2f0507ed7cd5","navbar":{"links":[{"href":"mailto:customer.success@kardinal.ai","label":"Support"},{"href":"https://console.kardinal.ai","label":"Sign in"}],"primary":{"type":"button","label":"Get API key","href":"https://console.kardinal.ai/keys"}},"footer":{"socials":{"website":"https://kardinal.ai"}},"seo":{"organization":{"id":"https://kardinal.ai/#organization","name":"Kardinal","url":"https://kardinal.ai/","sameAs":["https://www.linkedin.com/company/kardinalai","https://github.com/KardinalAI"]},"indexing":"navigable"},"integrations":{"gtm":{"tagId":"GTM-W6RBWSX"}},"banner":{"content":"Every new account starts with 1,000 free credits. [Create your account](https://console.kardinal.ai)","dismissible":true},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","default":true,"href":""}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"kardinal","hasAudioNarration":false,"actualSubdomain":"kardinal","customDomains":["developers.kardinal.ai"],"gitSource":{"type":"gitlab","owner":"public-docs","repo":"mintlify","deployBranch":"main","contentDirectory":"","isPrivate":true,"projectId":682,"hostUrl":"https://gitlab.kardinal.ai","mountPath":"","label":""},"chroma":{"collectionId":"df87f015-338b-4878-8d75-a9db7f43985d","liveDeploymentHistoryId":"6ae31e26ac396e5373230379","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae31e26ac396e5373230379"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae31e26ac396e5373230379","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"en","tag":"Guides","count":14},{"language":"en","tag":"API Reference","count":14},{"language":"en","tag":"SDKs","count":12},{"language":"en","tag":"API","count":9},{"language":"en","tag":"Modeling examples by industry","count":8},{"language":"en","tag":"By industry","count":8},{"language":"en","tag":"Plan","count":7},{"language":"en","tag":"Advanced modeling","count":5},{"language":"en","tag":"Concepts","count":4},{"language":"en","tag":"Getting started","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"per-site-search-delta","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":"editor-private-page-search","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":"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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"html.dark #topbar-cta-button .bg-primary-dark{background-color:rgb(var(--primary))}"}],"page":{"pagePath":"guides/requirements-briefing","slug":"/guides/requirements-briefing","pageMetadata":{"title":"Requirements briefing checklist","description":"Questions to ask about an operation before modeling it as a Kardinal plan: business facts, like hard time windows or depot reloads, a data export can't show.","href":"/guides/requirements-briefing"},"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: \"Questions to ask about an operation before modeling it as a Kardinal plan: business facts, like hard time windows or depot reloads, a data export can’t show.\"\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={a:`a`,code:`code`,em:`em`,hr:`hr`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Tip,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This page is optional — nothing in the API requires it. Its purpose is to hand whoever builds the integration, a human or an AI agent, the business context a raw data export can’t contain on its own: is a time window really a hard cutoff, or just a preference? Can a vehicle reload at the depot mid-day? What’s the real capacity of a delivery van? Answering these once, wherever you keep notes, means that context is available when the plan gets modeled, instead of being silently guessed at deep inside a payload.`}),`\n`,_jsx(_components.p,{children:`The target audience of this briefing checklist is whoever knows the operation: an operations manager, a dispatcher, the person who owns the data export.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Building a payload from a client’s raw data? Pair this checklist with `,_jsx(_components.a,{href:`/getting-started/agent-modeling-checklist`,children:`Start here if you’re an AI agent`}),` — the answers here are exactly the inputs that let that checklist resolve open questions instead of guessing at them.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`1-context`,children:`1. Context`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Operation / business name`}),`\n`,_jsx(_components.li,{children:`Sector`}),`\n`,_jsx(_components.li,{children:`Country / region of operations`}),`\n`,_jsx(_components.li,{children:`Problem to solve / goal of this integration`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`2-scope`,children:`2. Scope`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Which depots or sites should be in scope? (name, address, coordinates)`}),`\n`,_jsx(_components.li,{children:`Any depots present in the data but explicitly out of scope?`}),`\n`,_jsx(_components.li,{children:`Which vehicles / fleets should be in scope?`}),`\n`,_jsx(_components.li,{children:`What period does the data cover, and what period should the plan use?`}),`\n`,_jsx(_components.li,{children:`How many vehicles/drivers run per depot per day, roughly? (sanity-check figure)`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`3-data-you’re-working-from`,children:`3. Data you’re working from`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`What files are you working from, and what does one row represent?`}),`\n`,_jsx(_components.li,{children:`Is there a grouping key that turns several rows into a single delivery stop (for example, depot + date + tour + customer)?`}),`\n`,_jsxs(_components.li,{children:[`Are there rows that are `,_jsx(_components.em,{children:`not`}),` real deliveries and should be excluded (returns, internal transfers, cancelled orders)?`]}),`\n`,_jsx(_components.li,{children:`Any column you know is unreliable or shouldn’t be trusted at face value?`}),`\n`,_jsx(_components.li,{children:`Any known data-quality issues (corrupted addresses, internal codes instead of real addresses, inconsistent units, encoding/whitespace issues)?`}),`\n`,_jsx(_components.li,{children:`What unit is weight/volume/quantity expressed in?`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`The row-to-stop aggregation key and the “don’t trust this column” list are two of the most common silent-error sources when modeling from a raw export — get them directly from someone who knows the operation rather than inferring them from the file.`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`4-fleet-and-vehicles`,children:`4. Fleet and vehicles`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Is the fleet homogeneous (all vehicles identical), or are there several vehicle types?`}),`\n`,_jsx(_components.li,{children:`What is the real capacity of each vehicle type (weight / volume / pallet or container count — the actual nameplate figure)?`}),`\n`,_jsx(_components.li,{children:`Should vehicle capacity be modeled as a hard constraint at all, or is it never actually the bottleneck?`}),`\n`,_jsx(_components.li,{children:`Are any vehicles specialized (refrigerated, hazmat, bicycle/light vehicle, tail-lift required, etc.)?`}),`\n`,_jsx(_components.li,{children:`Does a vehicle depart from and return to a fixed depot, or can a route start/end elsewhere?`}),`\n`,_jsx(_components.li,{children:`Is the fleet size fixed (given), or should the plan size the fleet itself — that is, is “fewer vehicles” a valid outcome?`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Real fleet size/composition and real vehicle capacity are almost never recoverable from a raw export alone — expect to flag at least one of these as an open question.`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`5-working-hours-and-breaks`,children:`5. Working hours and breaks`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`What time do drivers leave the depot, and what time do they return?`}),`\n`,_jsx(_components.li,{children:`Is there a maximum working duration per day, independent of that window?`}),`\n`,_jsx(_components.li,{children:`Are breaks mandatory?`}),`\n`,_jsx(_components.li,{children:`If so: a fixed clock-time window, or triggered by cumulative driving/working time?`}),`\n`,_jsx(_components.li,{children:`Break duration?`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Break rules are very often collective-bargaining-agreement or labor-code facts specific to the sector/country — no generic default can supply the real figure. See `,_jsx(_components.a,{href:`/guides/breaks#three-kinds-of-break`,children:`Three kinds of break`}),` for how `,_jsx(_components.code,{children:`breaks[]`}),` represents each trigger type.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`6-delivery-stops`,children:`6. Delivery stops`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`How long does a typical stop take (service/unload time)? Is it flat, or does it scale with order size (for example, number of lines/pallets)?`}),`\n`,_jsx(_components.li,{children:`Do customers have delivery time windows?`}),`\n`,_jsx(_components.li,{children:`If a vehicle arrives outside the window: is the delivery refused/impossible (hard constraint), or just late/undesirable (soft preference)?`}),`\n`,_jsx(_components.li,{children:`Are there special access constraints at some stops (site closes at a fixed hour, specific equipment or skill required, appointment-only access)?`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Hard vs. soft time windows is the single most frequently recurring ambiguity when modeling a real operation — a stated business hour is not automatically proof of a hard cutoff. See `,_jsx(_components.a,{href:`/concepts/hard-vs-soft-constraints#a-contractual-window-is-not-automatically-a-hard-one`,children:`Hard vs soft constraints`}),`.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`7-depot-and-multi-trip-operations`,children:`7. Depot and multi-trip operations`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Can a vehicle return to the depot mid-day to reload and go out again, or is it strictly one loop per vehicle per day?`}),`\n`,_jsx(_components.li,{children:`If reloads happen: how long does loading/unloading at the depot take per visit?`}),`\n`,_jsx(_components.li,{children:`Is there a limit on how many vehicles can be at the depot/dock at the same time?`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`A single loop per vehicle per day isn’t the only valid pattern — many real operations reload at the depot mid-shift, and modeling that as a single loop silently drops the stops that don’t fit. See `,_jsx(_components.a,{href:`/guides/multi-trip-tours`,children:`Multi-trip tours`}),` if reloads apply to this operation.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`8-geocoding-and-addresses`,children:`8. Geocoding and addresses`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Are addresses generally clean and precise, or are there known problem categories (internal codes, rural/no-formal-address locations, motorway points, generic street names shared across villages)?`}),`\n`,_jsx(_components.li,{children:`If a stop can’t be geocoded precisely: is an approximate location (for example, postal-code centroid) acceptable, or should the stop be excluded instead?`}),`\n`,_jsx(_components.li,{children:`Preferred geocoding provider / country code, if there’s an existing preference or account?`}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The API doesn’t geocode addresses — every `,_jsx(_components.code,{children:`position`}),` submitted must already be a real `,_jsx(_components.code,{children:`{lat, lon}`}),` pair. If you can’t geocode your addresses yourself, contact `,_jsx(_components.a,{href:`mailto:customer.success@kardinal.ai`,children:`customer.success@kardinal.ai`}),`: the team can geocode an address set for you on request. If precise coordinates aren’t available for some stops, that’s a data-quality gap to flag, not something to paper over with a placeholder. See `,_jsx(_components.a,{href:`/getting-started/agent-modeling-checklist#5-verify-you-have-real-geocoded-positions-before-finalizing`,children:`§5 of the AI agent checklist`}),`.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`9-other-technical-facts`,children:`9. Other technical facts`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Timezone of operations`}),`\n`,_jsx(_components.li,{children:`Currency`}),`\n`,_jsx(_components.li,{children:`Is traffic-aware routing relevant / available on the account?`}),`\n`,_jsx(_components.li,{children:`Any custom KPI already tracked today (for example, CO2, service level) that the plan should also report?`}),`\n`,_jsx(_components.li,{children:`Any account/agency scoping detail (for example, one plan across all depots versus one per depot)?`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`see-also`,children:`See also`}),`\n`,_jsx(_components.p,{children:`Once these questions are answered, that record becomes the reference to check your payload against as you model it:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/getting-started/agent-modeling-checklist`,children:`Start here if you’re an AI agent`}),` — how to turn these answers plus a raw data export into a plan, and how to handle any that are still open.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/reference/data-model`,children:`Data model`}),` — an overview of everything named in the preceding sections, each part linking to its schema in the API reference.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/concepts/hard-vs-soft-constraints`,children:`Hard vs soft constraints`}),` — the full decision framework for §6.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/guides/multi-trip-tours`,children:`Multi-trip tours`}),` — the depot-return/reload pattern from §7 in detail.`]}),`\n`]})]})}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":"Requirements briefing checklist","description":"Questions to ask about an operation before modeling it as a Kardinal plan: business facts, like hard time windows or depot reloads, a data export can't show.","href":"/guides/requirements-briefing"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"1. Context","slug":"1-context","depth":2,"children":[]},{"title":"2. Scope","slug":"2-scope","depth":2,"children":[]},{"title":"3. Data you’re working from","slug":"3-data-you’re-working-from","depth":2,"children":[]},{"title":"4. Fleet and vehicles","slug":"4-fleet-and-vehicles","depth":2,"children":[]},{"title":"5. Working hours and breaks","slug":"5-working-hours-and-breaks","depth":2,"children":[]},{"title":"6. Delivery stops","slug":"6-delivery-stops","depth":2,"children":[]},{"title":"7. Depot and multi-trip operations","slug":"7-depot-and-multi-trip-operations","depth":2,"children":[]},{"title":"8. Geocoding and addresses","slug":"8-geocoding-and-addresses","depth":2,"children":[]},{"title":"9. Other technical facts","slug":"9-other-technical-facts","depth":2,"children":[]},{"title":"See also","slug":"see-also","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/kardinal/d55e84efee54b775/kd-att-docs.js"],"subdomain":"kardinal","siteName":"Kardinal Route Optimization API","title":"Requirements briefing checklist - Kardinal Route Optimization API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/guides/requirements-briefing","matchLevel":0}}},"lastModified":"2026-10-29T07:32:28.055Z","originalFileLocation":"guides/requirements-briefing.mdx","locale":"en"},"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=\"Questions to ask about an operation before modeling it as a Kardinal plan: business facts, like hard time windows or depot reloads, a data export can\u0026#x27;t show.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Kardinal Route Optimization API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kardinal/4VnUJAe0ozIKpmRZ/_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/kardinal/4VnUJAe0ozIKpmRZ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kardinal/4VnUJAe0ozIKpmRZ/_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/kardinal/4VnUJAe0ozIKpmRZ/_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/kardinal/4VnUJAe0ozIKpmRZ/_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/kardinal/4VnUJAe0ozIKpmRZ/_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/kardinal/4VnUJAe0ozIKpmRZ/_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/kardinal/4VnUJAe0ozIKpmRZ/_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/kardinal/4VnUJAe0ozIKpmRZ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Requirements briefing checklist - Kardinal Route Optimization API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Questions to ask about an operation before modeling it as a Kardinal plan: business facts, like hard time windows or depot reloads, a data export can\u0026#x27;t show.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Kardinal Route Optimization API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.kardinal.ai/guides/requirements-briefing\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://kardinal.mintlify.app/_mintlify/api/og/v2?division=Before+modeling\u0026amp;title=Requirements+briefing+checklist\u0026amp;description=Questions+to+ask+about+an+operation+before+modeling+it+as+a+Kardinal+plan%3A+business+facts%2C+like+hard+time+windows+or+depot+reloads%2C+a+data+export+can%27t+show.\u0026amp;theme=36328a05d721350f0182956e\u0026amp;signature=8abc014bc793deefaadba605ca5248320cca35f812123bcd53b60eca28c7639a\">\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=\"Requirements briefing checklist - Kardinal Route Optimization API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Questions to ask about an operation before modeling it as a Kardinal plan: business facts, like hard time windows or depot reloads, a data export can\u0026#x27;t show.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kardinal.mintlify.app/_mintlify/api/og/v2?division=Before+modeling\u0026amp;title=Requirements+briefing+checklist\u0026amp;description=Questions+to+ask+about+an+operation+before+modeling+it+as+a+Kardinal+plan%3A+business+facts%2C+like+hard+time+windows+or+depot+reloads%2C+a+data+export+can%27t+show.\u0026amp;theme=36328a05d721350f0182956e\u0026amp;signature=8abc014bc793deefaadba605ca5248320cca35f812123bcd53b60eca28c7639a\">\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/kardinal/4VnUJAe0ozIKpmRZ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Kardinal Route Optimization API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4D6AFF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.kardinal.ai/guides/requirements-briefing\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/requirements-briefing.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://kardinal.ai/#organization\",\"name\":\"Kardinal\",\"url\":\"https://kardinal.ai/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/kardinal/NzVu4E70FNnktm7V/images/Logo-blue-black.png?fit=max\u0026auto=format\u0026n=NzVu4E70FNnktm7V\u0026q=85\u0026s=877e4130943370aa62e85ed76662c9bc\"},\"sameAs\":[\"https://www.linkedin.com/company/kardinalai\",\"https://github.com/KardinalAI\"]},{\"@type\":\"WebSite\",\"@id\":\"https://developers.kardinal.ai#website\",\"name\":\"Kardinal Route Optimization API\",\"url\":\"https://developers.kardinal.ai\",\"publisher\":{\"@id\":\"https://kardinal.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.kardinal.ai/guides/requirements-briefing#webpage\",\"url\":\"https://developers.kardinal.ai/guides/requirements-briefing\",\"name\":\"Requirements briefing checklist\",\"description\":\"Questions to ask about an operation before modeling it as a Kardinal plan: business facts, like hard time windows or depot reloads, a data export can't show.\",\"dateModified\":\"2026-10-29T07:32:28.055Z\",\"isPartOf\":{\"@id\":\"https://developers.kardinal.ai#website\"},\"breadcrumb\":{\"@id\":\"https://developers.kardinal.ai/guides/requirements-briefing#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.kardinal.ai/guides/requirements-briefing#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Kardinal Route Optimization API\",\"item\":\"https://developers.kardinal.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Requirements briefing checklist\",\"item\":\"https://developers.kardinal.ai/guides/requirements-briefing\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developers.kardinal.ai/guides/requirements-briefing#article\",\"headline\":\"Requirements briefing checklist\",\"name\":\"Requirements briefing checklist\",\"description\":\"Questions to ask about an operation before modeling it as a Kardinal plan: business facts, like hard time windows or depot reloads, a data export can't show.\",\"url\":\"https://developers.kardinal.ai/guides/requirements-briefing\",\"mainEntityOfPage\":{\"@id\":\"https://developers.kardinal.ai/guides/requirements-briefing#webpage\"},\"dateModified\":\"2026-10-29T07:32:28.055Z\",\"publisher\":{\"@id\":\"https://kardinal.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.kardinal.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Kardinal Route Optimization API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Kardinal Route Optimization API","nav":{"global":null,"languages":[{"language":"en","default":true,"tabs":[{"tab":"Getting started","pages":[{"title":"Getting started","href":""}]},{"tab":"Concepts","pages":[{"title":"Concepts","href":"/concepts/how-the-optimization-engine-works"}]},{"tab":"Guides","groups":[{"group":"Vocabulary mapping","pages":[{"title":"Vocabulary mapping","description":"Translate the generic vehicle-routing terms you know from other tools, such as VRP, depot, time windows, or pickup and delivery, into Kardinal's own vocabulary.","mode":"wide","href":"/guides/vocabulary-mapping"}]},{"group":"Before modeling","pages":[{"title":"Requirements briefing checklist","href":"/guides/requirements-briefing"}]},{"group":"Modeling business rules","pages":[{"title":"Time windows","description":"Set the time windows of a stop: what a window limits, when to make it hard or preferred, how to use several windows or reserve one for some resources, and how to check the result.","href":"/guides/time-windows"},{"title":"Breaks","href":"/guides/breaks"}]},{"group":"Integration","pages":[{"title":"Authentication and API keys","href":"/guides/authentication"},{"title":"Moving from sandbox to production","href":"/guides/sandbox-to-production"},{"title":"Handling large volumes","href":"/guides/handling-large-volumes"}]},{"group":"Advanced modeling","pages":[{"title":"Modeling advanced constraints","href":"/guides/advanced-constraints"},{"title":"Cost modeling","href":"/guides/cost-modeling"},{"title":"Multi-trip tours (depot returns)","href":"/guides/multi-trip-tours"},{"title":"Swap-body and container-exchange orders","href":"/guides/swap-body-exchange"},{"title":"Handling infeasibility","href":"/guides/handling-infeasibility"}]},{"group":"Operations","pages":[{"title":"Real-time re-optimization","href":"/guides/real-time-reoptimization"},{"title":"Manual assignment and supervision","href":"/guides/manual-assignment-and-supervision"}]}]},{"tab":"SDKs","pages":[{"title":"SDKs","href":"/sdks/overview"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/plan/retrieve-the-list-of-plans-in-a-light-representation"}]},{"tab":"Modeling examples by industry","pages":[{"title":"Modeling examples by industry","href":"/case-studies/overview"}]}]}]},"title":"Requirements briefing checklist - Kardinal Route Optimization API","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":["10e4515597"],"chunks":["BannerMarkdown-m8-xYP3Y.js","dist-1ms6tsT-.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-DMKzROTp.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}