A workflow defines behavior. An evaluation defines the output
contract for a dataset. Models, prompts, and steps can change; the evaluation is
the check that says whether the output still matches what the workflow is meant
to produce. Weighted evaluators roll up to one score against a pass threshold.
When a real document produces a wrong answer, add that input and corrected
output to the evaluation dataset. From then on, the case is part of every
experiment and comparison. See
Eval-first development.
Reviews let people judge production runs, track open
issues, correct expected output, and monitor quality over time. Human feedback
should not live in Slack threads or spreadsheets; it should become part of the
run history and the improvement loop.
The goal is to meet the quality bar at the lowest acceptable cost. Once
evaluations define that bar, you can compare OCR engines, prompts, and language
models and keep the cheapest version that still passes. See
Optimize cost.
Workflows, datasets, evaluators, and agent source are
artifacts: plain files you version in Git, review in pull
requests, export between environments, and generate programmatically. The same
discipline you apply to code applies here.
What a workflow does is configuration; how it runs is the engine’s job. The
definition is portable and transparent, while the stateful, queue-based engine
handles retries, load, and long-running work. Definitions and their history are
exportable.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"EigenPal Docs","colors":{"primary":"#2EB52E","light":"#5CD65C","dark":"#1E8E1E"},"logo":{"light":"https://mintcdn.com/eigenpal/hcNh17xOVYi-SRf0/logo/light.svg?fit=max\u0026auto=format\u0026n=hcNh17xOVYi-SRf0\u0026q=85\u0026s=fb237cefefd3e0cf02c7cc66f475fbd1","dark":"https://mintcdn.com/eigenpal/hcNh17xOVYi-SRf0/logo/dark.svg?fit=max\u0026auto=format\u0026n=hcNh17xOVYi-SRf0\u0026q=85\u0026s=476cffae2975f509c09ebbdd2512e8ce"},"favicon":"https://mintcdn.com/eigenpal/hcNh17xOVYi-SRf0/logo/icon.svg?fit=max\u0026auto=format\u0026n=hcNh17xOVYi-SRf0\u0026q=85\u0026s=e36fcb03fa038cb338c5837687682096","footer":{"socials":{"github":"https://github.com/eigenpal"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"eigenpal","hasAudioNarration":false,"actualSubdomain":"eigenpal","customDomains":["docs.eigenpal.com"],"gitSource":{"type":"github","owner":"eigenpal","repo":"eigenpal","deployBranch":"production","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"cd74aa54-40a0-459d-91a5-648f020d088b","liveDeploymentHistoryId":"6addc3d4cc4d8fc7f4e524d9","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6addc3d4cc4d8fc7f4e524d9"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6addec6d531268f76f8a1788","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"API reference","count":103},{"language":"default","tag":"Documentation","count":65},{"language":"default","tag":"Workflow steps","count":39},{"language":"default","tag":"Evaluation","count":38},{"language":"default","tag":"SDKs","count":23},{"language":"default","tag":"Transform steps","count":16},{"language":"default","tag":"CLI reference","count":14},{"language":"default","tag":"CLI","count":14},{"language":"default","tag":"Automations","count":13},{"language":"default","tag":"Guides \u0026 tutorials","count":13}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"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":"editor-v7-file-tree","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":"pause-universal-search-reconcile","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":"editor-nav-generations","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":"editor-agent-model-picker","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":"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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"concepts/principles","slug":"/concepts/principles","pageMetadata":{"title":"Design principles","description":"The engineering choices behind EigenPal workflows, evaluations, and artifacts.","href":"/concepts/principles"},"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: \"The engineering choices behind EigenPal workflows, evaluations, and artifacts.\"\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`,p:`p`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`EigenPal is built around a few engineering constraints that make AI workflows\neasier to test, review, and operate.`}),`\n`,_jsx(Heading,{level:`2`,id:`1-evaluations-define-correctness`,children:`1. Evaluations define correctness`}),`\n`,_jsxs(_components.p,{children:[`A workflow defines behavior. An `,_jsx(_components.a,{href:`/concepts/evals`,children:`evaluation`}),` defines the output\ncontract for a dataset. Models, prompts, and steps can change; the evaluation is\nthe check that says whether the output still matches what the workflow is meant\nto produce. Weighted evaluators roll up to one score against a pass threshold.`]}),`\n`,_jsx(Heading,{level:`2`,id:`2-production-issues-become-tests`,children:`2. Production issues become tests`}),`\n`,_jsxs(_components.p,{children:[`When a real document produces a wrong answer, add that input and corrected\noutput to the evaluation dataset. From then on, the case is part of every\nexperiment and comparison. See\n`,_jsx(_components.a,{href:`/guides/eval-first-development`,children:`Eval-first development`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`3-keep-humans-in-the-loop-with-reviews`,children:`3. Keep humans in the loop with Reviews`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/concepts/reviews`,children:`Reviews`}),` let people judge production runs, track open\nissues, correct expected output, and monitor quality over time. Human feedback\nshould not live in Slack threads or spreadsheets; it should become part of the\nrun history and the improvement loop.`]}),`\n`,_jsx(Heading,{level:`2`,id:`4-optimize-against-evaluation-scores`,children:`4. Optimize against evaluation scores`}),`\n`,_jsxs(_components.p,{children:[`The goal is to meet the quality bar at the lowest acceptable cost. Once\nevaluations define that bar, you can compare OCR engines, prompts, and language\nmodels and keep the cheapest version that still passes. See\n`,_jsx(_components.a,{href:`/guides/optimize-cost`,children:`Optimize cost`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`5-treat-ai-systems-like-software`,children:`5. Treat AI systems like software`}),`\n`,_jsxs(_components.p,{children:[`Workflows, datasets, evaluators, and agent source are\n`,_jsx(_components.a,{href:`/concepts/artifacts`,children:`artifacts`}),`: plain files you version in Git, review in pull\nrequests, export between environments, and generate programmatically. The same\ndiscipline you apply to code applies here.`]}),`\n`,_jsx(Heading,{level:`2`,id:`6-separate-definition-from-execution`,children:`6. Separate definition from execution`}),`\n`,_jsx(_components.p,{children:`What a workflow does is configuration; how it runs is the engine’s job. The\ndefinition is portable and transparent, while the stateful, queue-based engine\nhandles retries, load, and long-running work. Definitions and their history are\nexportable.`})]})}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":"Design principles","description":"The engineering choices behind EigenPal workflows, evaluations, and artifacts.","href":"/concepts/principles"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"1. Evaluations define correctness","slug":"1-evaluations-define-correctness","depth":2,"children":[]},{"title":"2. Production issues become tests","slug":"2-production-issues-become-tests","depth":2,"children":[]},{"title":"3. Keep humans in the loop with Reviews","slug":"3-keep-humans-in-the-loop-with-reviews","depth":2,"children":[]},{"title":"4. Optimize against evaluation scores","slug":"4-optimize-against-evaluation-scores","depth":2,"children":[]},{"title":"5. Treat AI systems like software","slug":"5-treat-ai-systems-like-software","depth":2,"children":[]},{"title":"6. Separate definition from execution","slug":"6-separate-definition-from-execution","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"eigenpal","siteName":"EigenPal Docs","title":"Design principles - EigenPal Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-23T12:29:08.222Z","originalFileLocation":"concepts/principles.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=\"The engineering choices behind EigenPal workflows, evaluations, and artifacts.\">\u003cmeta data-mint-head name=\"application-name\" content=\"EigenPal 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/eigenpal/627Y6R2CxKSM_fRe/_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/eigenpal/627Y6R2CxKSM_fRe/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/eigenpal/627Y6R2CxKSM_fRe/_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/eigenpal/627Y6R2CxKSM_fRe/_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/eigenpal/627Y6R2CxKSM_fRe/_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/eigenpal/627Y6R2CxKSM_fRe/_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/eigenpal/627Y6R2CxKSM_fRe/_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/eigenpal/627Y6R2CxKSM_fRe/_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/eigenpal/627Y6R2CxKSM_fRe/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Design principles - EigenPal Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"The engineering choices behind EigenPal workflows, evaluations, and artifacts.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"EigenPal Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.eigenpal.com/concepts/principles\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://eigenpal.mintlify.app/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Design+principles\u0026amp;description=The+engineering+choices+behind+EigenPal+workflows%2C+evaluations%2C+and+artifacts.\u0026amp;theme=701b46f8cd3bc47260ede5cc\u0026amp;signature=a3fdf30d4a12d9ef7108619f8d6d494bfea1357ce67d4a38d6fe89cadfaa4ed0\">\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=\"Design principles - EigenPal Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The engineering choices behind EigenPal workflows, evaluations, and artifacts.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://eigenpal.mintlify.app/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Design+principles\u0026amp;description=The+engineering+choices+behind+EigenPal+workflows%2C+evaluations%2C+and+artifacts.\u0026amp;theme=701b46f8cd3bc47260ede5cc\u0026amp;signature=a3fdf30d4a12d9ef7108619f8d6d494bfea1357ce67d4a38d6fe89cadfaa4ed0\">\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/eigenpal/627Y6R2CxKSM_fRe/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"EigenPal Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2EB52E\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.eigenpal.com/concepts/principles\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/concepts/principles.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.eigenpal.com/#organization\",\"name\":\"EigenPal Docs\",\"url\":\"https://docs.eigenpal.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/eigenpal/hcNh17xOVYi-SRf0/logo/light.svg?fit=max\u0026auto=format\u0026n=hcNh17xOVYi-SRf0\u0026q=85\u0026s=fb237cefefd3e0cf02c7cc66f475fbd1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.eigenpal.com#website\",\"name\":\"EigenPal Docs\",\"url\":\"https://docs.eigenpal.com\",\"publisher\":{\"@id\":\"https://docs.eigenpal.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.eigenpal.com/concepts/principles#webpage\",\"url\":\"https://docs.eigenpal.com/concepts/principles\",\"name\":\"Design principles\",\"description\":\"The engineering choices behind EigenPal workflows, evaluations, and artifacts.\",\"dateModified\":\"2026-06-23T12:29:08.222Z\",\"isPartOf\":{\"@id\":\"https://docs.eigenpal.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.eigenpal.com/concepts/principles#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.eigenpal.com/concepts/principles#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Concepts\",\"item\":\"https://docs.eigenpal.com/concepts/why\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Design principles\",\"item\":\"https://docs.eigenpal.com/concepts/principles\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.eigenpal.com/concepts/principles#article\",\"headline\":\"Design principles\",\"name\":\"Design principles\",\"description\":\"The engineering choices behind EigenPal workflows, evaluations, and artifacts.\",\"url\":\"https://docs.eigenpal.com/concepts/principles\",\"mainEntityOfPage\":{\"@id\":\"https://docs.eigenpal.com/concepts/principles#webpage\"},\"dateModified\":\"2026-06-23T12:29:08.222Z\",\"publisher\":{\"@id\":\"https://docs.eigenpal.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.eigenpal.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"EigenPal Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"EigenPal Docs","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Get started","pages":[{"title":"EigenPal docs","href":""},{"title":"Choose your path","href":"/guides/choose-your-path"}]},{"group":"Concepts","pages":[{"title":"Why EigenPal","href":"/concepts/why"},{"title":"How it works","description":"Build, evaluate, deploy, observe, and improve an EigenPal workflow.","href":"/concepts/how-it-works"},{"title":"Design principles","href":"/concepts/principles"},{"group":"Automations","pages":[{"title":"Automations","description":"The unified API model for running workflows and agents.","href":"/concepts/automations"},{"title":"Workflows","href":"/concepts/workflows"},{"title":"Agents","href":"/concepts/agents"}]},{"title":"Evaluations","href":"/concepts/evals"},{"title":"Reviews","href":"/concepts/reviews"},{"title":"Artifacts as files","href":"/concepts/artifacts"}]},{"group":"Workflow steps","pages":[{"title":"Workflow steps","href":"/concepts/steps-overview"},{"group":"AI steps","pages":[{"title":"Parse Document","href":"/steps/ai/parse-v2"},{"title":"Parse Document v1","href":"/steps/ai/parse"},{"title":"Extract Data","href":"/steps/ai/extract"},{"title":"Split Document","href":"/steps/ai/split"},{"title":"Separate Documents","href":"/steps/ai/segment"},{"title":"Classify","href":"/steps/ai/classify"},{"title":"Label Pages","href":"/steps/ai/classify-pages"},{"title":"Inspect Pages (Vision)","href":"/steps/ai/vision"},{"title":"Search Files","href":"/steps/ai/search-files"},{"title":"Figure Crops","href":"/steps/ai/figure-crops"}]},{"group":"Transform steps","pages":[{"title":"Set Value","href":"/steps/transform/set"},{"title":"Remove Fields","href":"/steps/transform/remove"},{"title":"Combine Data","href":"/steps/transform/combine"},{"title":"Split Data","href":"/steps/transform/split"},{"title":"Merge Inputs","href":"/steps/transform/merge"},{"title":"Fill Template","href":"/steps/transform/template"},{"title":"Embed PDF Text","href":"/steps/transform/pdf-embed"},{"title":"Crop Regions","href":"/steps/transform/crop-regions"},{"title":"Spreadsheet to JSON","href":"/steps/transform/xlsx-to-json"},{"title":"JSON to XLSX","href":"/steps/transform/json-to-xlsx"},{"title":"Script","href":"/steps/transform/script"},{"title":"Text Chunker","href":"/steps/transform/text-chunker"},{"title":"Regex Extract","href":"/steps/transform/regex-extract"},{"title":"List Archive","href":"/steps/transform/archive-list"},{"title":"Extract Archive File","href":"/steps/transform/archive-extract"},{"title":"Merge Documents","href":"/steps/transform/merge-documents"}]},{"group":"Action steps","pages":[{"title":"HTTP Request","href":"/steps/action/http"},{"title":"Invoke Workflow","href":"/steps/action/invoke-workflow"},{"title":"Website Reader","href":"/steps/action/website-reader"},{"title":"Send Email","href":"/steps/action/email"}]},{"group":"Control steps","pages":[{"title":"Condition","href":"/steps/control/if"},{"title":"Switch","href":"/steps/control/switch"},{"title":"For Each","href":"/steps/control/foreach"},{"title":"Parallel Map","href":"/steps/control/parallel_map"},{"title":"Parallel","href":"/steps/control/parallel"},{"title":"Wait","href":"/steps/control/wait"},{"title":"Human Review","href":"/steps/control/human_review"},{"title":"Fail","href":"/steps/control/fail"}]}]},{"group":"Guides \u0026 tutorials","pages":[{"title":"Your first workflow","href":"/guides/first-workflow"},{"title":"Your first agent","href":"/guides/first-agent"},{"title":"Eval-first development","href":"/guides/eval-first-development"},{"title":"Build a dataset","href":"/guides/build-a-dataset"},{"title":"Evaluate a workflow","href":"/guides/evaluate-workflow"},{"title":"Deploy to production","href":"/guides/deploy-to-production"},{"title":"Upload files","href":"/guides/upload-files"},{"title":"Receive run events with webhooks","href":"/guides/outbound-webhooks"},{"title":"Manage email servers","href":"/guides/email-servers"},{"title":"Review production runs","href":"/guides/review-runs"},{"title":"Execution tags","href":"/guides/execution-tags"},{"title":"Optimize cost","href":"/guides/optimize-cost"},{"title":"Install the EigenPal skill","href":"/guides/skill-install"}]},{"group":"Self-hosting","pages":[{"title":"Prometheus metrics","href":"/guides/prometheus-metrics"}]},{"group":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},{"tab":"CLI reference","pages":[{"title":"CLI reference","href":"/cli/overview"}]},{"tab":"SDKs","pages":[{"title":"SDKs","href":"/sdks/overview"}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/metadata/check-api-key-identity"}]}]},"title":"Design principles - EigenPal Docs","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":[],"chunks":[]}