# EigenPal Docs - [EigenPal docs](https://docs.eigenpal.com/index.md): Build, test, and run AI workflows for repetitive document and data tasks. - [Choose your path](https://docs.eigenpal.com/guides/choose-your-path.md): Pick the fastest way into EigenPal based on what you are trying to do. - [Why EigenPal](https://docs.eigenpal.com/concepts/why.md): Automate repetitive work with AI, with datasets and evaluators for measuring output quality. - [How it works](https://docs.eigenpal.com/concepts/how-it-works.md): Build, evaluate, deploy, observe, and improve an EigenPal workflow. - [Design principles](https://docs.eigenpal.com/concepts/principles.md): The engineering choices behind EigenPal workflows, evaluations, and artifacts. - [Automations](https://docs.eigenpal.com/concepts/automations.md): The unified API model for running workflows and agents. - [Workflows](https://docs.eigenpal.com/concepts/workflows.md): Directed graphs of typed steps that automate a repetitive task. - [Agents](https://docs.eigenpal.com/concepts/agents.md): Git-backed agents for document tasks that are hard to express as a fixed step graph. - [Evaluations](https://docs.eigenpal.com/concepts/evals.md): Test workflows like code. Datasets hold examples, evaluators score runs, experiments compare versions. - [Reviews](https://docs.eigenpal.com/concepts/reviews.md): Human feedback for production runs: verdicts, statuses, corrections, and monitoring. - [Artifacts as files](https://docs.eigenpal.com/concepts/artifacts.md): Workflows, datasets, evaluators, and agents are plain files you can export, import, diff, and version. - [Workflow steps](https://docs.eigenpal.com/concepts/steps-overview.md): The complete catalog of step types, each with a code-derived config and output schema. - [Parse Document](https://docs.eigenpal.com/steps/ai/parse.md): Extract text from documents (PDF, DOCX, images) using native extraction, OCR, or vision models - [Extract Data](https://docs.eigenpal.com/steps/ai/extract.md): Extract structured data from text using AI with a JSON schema - [Split Document](https://docs.eigenpal.com/steps/ai/split.md): Split a parsed document into named sections using an LLM. Consumes ai.parse output; emits per-section page ranges and text ready for downstream ai.extract via control.parallel_map. - [Separate Documents](https://docs.eigenpal.com/steps/ai/segment.md): Separate a concatenated batch (one big scan) into typed document instances using an LLM. Consumes ai.parse output and a type taxonomy; discovers an unknown number of documents in any order and emits per-document page ranges + text + type, ready for type-specific ai.extract via control.parallel_map.… - [Classify](https://docs.eigenpal.com/steps/ai/classify.md): Classify a document or text into one of a fixed label set using an LLM. Output exposes the picked label (constrained to the configured names), a coarse confidence, and a short justification. Pair with control.fail to reject documents that match an undesired label. - [Label Pages](https://docs.eigenpal.com/steps/ai/classify-pages.md): Assign zero or more labels to each page independently (multi-label) using an LLM. Consumes ai.parse output; emits per-page labels and a byLabel map (label -> page indices) that supports NON-contiguous selections. Feed byLabel.