---
title: "How to manage KYC onboarding documents in Salesforce"
canonical_url: "https://www.nutrient.io/blog/kyc-onboarding-salesforce/"
md_url: "https://www.nutrient.io/blog/kyc-onboarding-salesforce.md"
last_updated: "2026-10-30T19:17:56.528Z"
description: "Manage KYC onboarding documents in Salesforce with Nutrient. Generate from records, redact a fictional packet, collect form responses, and track signing."
---

Know your customer (KYC) onboarding is a document workflow as much as a compliance one. A bank collects an onboarding form, routes it to the right signer, and keeps a record of what happened afterward. When the form lives outside Salesforce, someone copies account details into it by hand. The banking team then has a second version of the same data to check and maintain.

[Nutrient Documents for Salesforce](https://www.nutrient.io/low-code/integrations/salesforce/) connects document generation, editing, and signing to Salesforce records. A Salesforce administrator can use these tools to build a KYC onboarding document workflow without a custom development project. This walkthrough is for administrators who build that workflow and the banking operations teams who rely on it. Identity verification, screening, and the decision to accept a customer remain separate responsibilities.

**TL;DR**

- Generate an onboarding document from an approved template and Salesforce record data.

- Review the populated values and prepare the version each recipient should receive.

- Add recipient form fields, collect a signature, and inspect the completed envelope in Salesforce.

- Treat signing status as evidence about the document, not a completed KYC decision.

## What this walkthrough demonstrates

The walkthrough combines two tests in a Salesforce demo environment:

- **Generation from records** — A prepared mutual nondisclosure agreement (NDA) merges data from the fictional Summit Peak Industries account and its demo contact, Dana Whitfield.

- **Banking document review and signing** — One copy of a two-page fictional onboarding packet tests redaction; another tests recipient form filling and signing. Salesforce returns a completed envelope and a signed PDF containing the responses.

The banking packet was created locally, not generated from a Salesforce template. A bank-specific generation template and the bank’s KYC requirements still need their own validation.

## Prepare the Salesforce environment

Start in a test Salesforce environment with fictional records and documents. Use an authorized test mailbox that can receive signing invitations. The banking test used the author’s mailbox; Dana’s fictional address was only part of the earlier NDA demonstration.

Before starting, the administrator needs to configure:

- The installed Nutrient package and [document generation setup](https://www.nutrient.io/guides/salesforce-documents/admin-guide/set-up-document-generation-in-salesforce.md).

- A template configured for the source record type, such as Account or Contact.

- The **Nutrient Create Documents** permission for the person generating documents, plus the permissions needed for signing.

- The **Create and Send Document with Nutrient** widget on the record page.

- The [Nutrient Document Web Services (DWS) signing integration](https://www.nutrient.io/guides/salesforce-documents/admin-guide/setup-signing-integration-with-dws.md) and a way to view envelope status.

For signing, Salesforce manages the requests, routing, status, and signed record. Recipients receive an email and sign in a secure, cloud-based signing environment connected through DWS. Review that data flow and the [signing setup](https://www.nutrient.io/guides/salesforce-documents/admin-guide/setup-signing-integration-with-dws.md) with the bank’s security and vendor-risk reviewers before using customer documents.

## Step 1: Define the documents and their owners

Agree on the packet with the banking operations team before configuring templates. The bank determines which documents are required, who can access them, and who approves the onboarding decision.

Use this table to plan the document tasks. The bank supplies the required KYC document list.

| Document or record                        | Salesforce document task                                        | Decision still owned by the bank                             |
| ----------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------ |
| Onboarding form                           | Generate from approved record fields and send for signature     | Which information and declarations the form must contain     |
| Submitted identity or supporting document | Make the appropriate document available to authorized reviewers | Whether the evidence satisfies identity and screening checks |
| Copy for another recipient                | Apply the required redactions before sharing                    | Which information that recipient is permitted to see         |
| Signed document and signing history       | Track the envelope and retain the resulting evidence            | Whether the wider onboarding process is complete             |

Nutrient Documents for Salesforce doesn’t provide identity-document extraction, which Nutrient’s separate [KYC data extraction offering](https://www.nutrient.io/api/data-extraction-api/kyc/) covers. If extraction is part of the process, plan that integration separately. Reading a field from an identity document doesn’t establish that the identity is valid.

## Step 2: Generate from the account record

Use the [template management guide](https://www.nutrient.io/guides/salesforce-documents/admin-guide/manage-document-templates-in-salesforce.md) to prepare a template for the chosen record type. The demo already has an editable NDA template configured for the Account record type.

1. Open the source record.

2. In **Create and Send Document with Nutrient**, select the configured template and click **Create**.

3. If the template requests dynamic data, select the related record and click **Continue**. The demo requests a contact.

4. If data review is enabled, check the values in **Review Data**. The demo displays the account’s name and address, the selected contact, and the document date.

5. Click **Create Document**.

The generated NDA contains Summit Peak’s account details and the selected contact’s name and title. For an onboarding template, check the equivalent fields against the source records before sending.

*The demo NDA shows populated account data. A banking rollout needs its own approved onboarding template.*

## Step 3: Review the generated document

Check the document itself, including names, addresses, dates, missing values, and page layout. A generated file can still contain incorrect source data.

For an editable template, open **Edit** to adjust the generated document. The [document creation guide](https://www.nutrient.io/guides/salesforce-documents/end-user-guide/create-documents.md) describes editing text and formatting before saving. Locked templates don’t offer the same editing path.

*The editor opened successfully in the demo. Saving a content edit wasn’t part of this test.*

Treat changes to the document and corrections to the source record as separate tasks. If a source value is wrong, assign someone to correct it before another document is generated from that record.

## Step 4: Prepare the version each recipient can see

An onboarding packet can include personally identifiable information (PII) that another recipient doesn’t need. Establish which copy is intended for that recipient before sharing it.

Nutrient’s [Salesforce redaction capability](https://www.nutrient.io/low-code/solutions/salesforce-redaction/) supports permanent removal of selected text and document areas. You can also search for a term and redact selected matches.

For this part of the test, a two-page fictional banking packet was uploaded through the account’s **Upload Files** control and opened in **Documents**.

The test used **Text Redaction** on the fictional identifier `DEMO-ID-84729` on page two. After applying the redaction, the PDF downloaded from Salesforce showed a blacked-out identifier. The identifier was also absent from extracted text. This check covers that test value; search-based and area redaction weren’t tested.

Redaction and signing were tested on separate copies of the fictional packet. Before using the workflow, confirm that the envelope contains the intended sharing copy.

Test with a fictional identifier and inspect the saved result before sharing. Check whether the removed value can still be found or copied. Verify which file was saved, and keep access to the original and its retention rules separate from access to the redacted copy.

Complete content review and redaction before sending the final version for signature. Agree on how to handle changes to an already signed document before testing the workflow.

## Step 5: Configure the signing envelope

An envelope groups the document with its recipients and signing settings. The two document routes enter setup differently:

- From the generated document, click **Send**, enter a name in **Save Document**, and click **Save**.

- For the uploaded packet, open its actions menu in **Documents** and choose **Send for Signing…**.

In **Set Up Envelope**, check the envelope name and any record association. The uploaded packet’s signing setup showed “No record context.” Uploading a file to an account didn’t establish an account association for this envelope.

Use **Add from Salesforce…** for an existing contact or **Add External Recipient** for another recipient. The banking test used one external recipient with the **Needs to Sign** role and an authorized mailbox. Check the name and email address before adding fields.

The roles include **Needs to Sign**, **Needs to Review**, and **Receives a Copy**. If review must happen before a customer signs, configure an explicit signing order. The [signing guide](https://www.nutrient.io/guides/salesforce-documents/end-user-guide/send-documents-for-signing.md) documents the default sequence as signers first, reviewers second, and copy recipients last.

Review the message and reminder settings before proceeding. The test invitation identified the packet as a fictional, nonbinding software demonstration.

## Step 6: Add form and signing fields

Click **Next: Add Fields** and select the intended signer from the dropdown above the field tools. Drag the fields onto their corresponding areas in the document.

The fictional banking packet uses five fields on page one:

| Field tool     | Placement                       | Test configuration     |
| -------------- | ------------------------------- | ---------------------- |
| Signature      | Test signature line             | Assigned to the signer |
| Signature Date | Signing date line               | Assigned to the signer |
| Text Field     | Review note box                 | Format None, required  |
| Text Field     | Reviewer role box               | Format None, required  |
| Checkbox       | Printed acknowledgment checkbox | Required               |

The earlier NDA test displayed this message: “Each signer must have at least one signing field placed on the document.” Adding a recipient and displaying a printed signature line aren’t enough. Place an interactive field for each signer.

Finalize the recipients before placing fields. After any recipient change, recheck the fields and their assignments before sending.

Nutrient’s [signing guide](https://www.nutrient.io/guides/salesforce-documents/end-user-guide/send-documents-for-signing.md) also describes mapping supported editable fields to Salesforce fields. This test verifies values in the returned PDF. It doesn’t verify record updates, list fields, or rejection of blank required fields.

## Step 7: Track the envelope through completion

Before clicking **Send**, check the final PDF, recipient addresses, field assignments, and signing order. A test invitation needs a real, authorized test mailbox.

The test recipient received the invitation, entered a review note and role, checked the acknowledgment, and signed. The returned PDF contains “Looks good!”, “Admin”, the checked box, a signature, and the signing date.

Open **Envelopes** in the Nutrient Documents app to inspect the result. The banking envelope shows “Envelope Completed” and “1 of 1 signed,” with the recipient marked “Completed.” A completion email also arrived.

The signed PDF’s viewer reports that the document is digitally signed and all signatures are valid. That’s the viewer’s result; this test didn’t independently validate the cryptographic signature.

The [signing guide](https://www.nutrient.io/guides/salesforce-documents/end-user-guide/send-documents-for-signing.md) describes **Update record**, when available, for returning captured field data to Salesforce. That action wasn’t tested. The uploaded packet’s send confirmation reported that it was saved to the user’s files.

Nutrient’s [signing product page](https://www.nutrient.io/low-code/solutions/salesforce-digital-signing/) describes returning the signed document and audit trail to Salesforce. The completed envelope’s actions menu includes **Download certificate**. Inspect the exported PDF and certificate before relying on them for the bank’s records.

## Validate the bank’s onboarding workflow

Test the bank’s template and configured process before rollout. Record the outcome of each check:

- The correct source record and related contact populate the document, and missing data is caught before sending.

- The intended sharing copy contains the required redactions while access to the original remains controlled.

- Every signer receives the right fields, and required form fields behave as configured.

- An authorized test recipient receives the invitation, completes signing, and produces the expected status update.

- The signed document, signing evidence, and any mapped field updates appear where reviewers expect them.

- A named reviewer checks the remaining onboarding requirements before marking the customer process complete.

Define separate statuses for document completion and onboarding approval. A signed form is one input to the bank’s decision.

## Try the workflow with an approved onboarding form

Start with one approved template, one fictional account, and an authorized test recipient. Use [Nutrient Documents for Salesforce](https://www.nutrient.io/low-code/integrations/salesforce/) to generate the document from record data, review it, and test the signing flow. For uploaded documents, verify the envelope’s record association and where the completed files are saved before adding more packet types.

[Request a Nutrient Salesforce trial](https://www.nutrient.io/low-code/try/salesforce/) to evaluate that workflow in a test environment. The [setup guides](https://www.nutrient.io/guides/salesforce-documents.md) cover installation, template configuration, and the signing integration.
---

## Related pages

- [The business case for accessibility: Five ways it drives enterprise value](/blog/5-ways-accessibility-drives-enterprise-value.md)
- [Accessibility Untangled Why It Matters Guide](/blog/accessibility-untangled-why-it-matters-guide.md)
- [Adobe Pdf Embed Api Alternatives](/blog/adobe-pdf-embed-api-alternatives.md)
- [Adobe Pdf Services Api Alternatives](/blog/adobe-pdf-services-api-alternatives.md)
- [Advanced Techniques For React Native Ui Components](/blog/advanced-techniques-for-react-native-ui-components.md)
- [`vector_store` holds your indexed documents (see the multimodal RAG post](/blog/agentic-rag.md)
- [Ai Assistant Agent Governance](/blog/ai-assistant-agent-governance.md)
- [How to build an AI agent for contract redlining against a compliance playbook](/blog/ai-contract-redlining-compliance-playbook.md)
- [Ai Document Automation Extraction To Action](/blog/ai-document-automation-extraction-to-action.md)
- [Ai Document Workflows Ocr Compliance Heavy Teams](/blog/ai-document-workflows-ocr-compliance-heavy-teams.md)
- [Ai Legal Assistant Document Authoring](/blog/ai-legal-assistant-document-authoring.md)
- [Ai Schema Generator Document Extraction](/blog/ai-schema-generator-document-extraction.md)
- [Amazon Textract Alternatives](/blog/amazon-textract-alternatives.md)
- [Start (clears any prior buffer), navigate the document, then stop into a file.](/blog/android-faster-pdf-rendering.md)
- [Android Pdf Out Of Memory Handling](/blog/android-pdf-out-of-memory-handling.md)
- [Angular File Viewer Pdf Image Office Files](/blog/angular-file-viewer-pdf-image-office-files.md)
- [Approval Workflow Software](/blog/approval-workflow-software.md)
- [Approvals Matrix](/blog/approvals-matrix.md)
- [Apryse To Nutrient Migration](/blog/apryse-to-nutrient-migration.md)
- [Auto Tagging And Document Accessibility In Dotnet Sdk](/blog/auto-tagging-and-document-accessibility-in-dotnet-sdk.md)
- [Simple PII redaction.](/blog/automated-pii-removal.md)
- [Azure Document Intelligence Alternatives](/blog/azure-document-intelligence-alternatives.md)
- [Best Ai Document Workflow Platforms](/blog/best-ai-document-workflow-platforms.md)
- [Best Csharp Pdf Library](/blog/best-csharp-pdf-library.md)
- [Best Document Ai Platforms](/blog/best-document-ai-platforms.md)
- [Best Document Classification Platforms](/blog/best-document-classification-platforms.md)
- [Best document parser for RAG: LlamaParse vs. Unstructured vs. Reducto vs. Nutrient](/blog/best-document-parser-llamaparse-unstructured-reducto.md)
- [Best Document Parsing Apis](/blog/best-document-parsing-apis.md)
- [Best Document Viewers](/blog/best-document-viewers.md)
- [Best Invoice Data Extraction Apis](/blog/best-invoice-data-extraction-apis.md)
- [Best Llm Document Understanding Platforms](/blog/best-llm-document-understanding-platforms.md)
- [Best Multilingual Ocr Software](/blog/best-multilingual-ocr-software.md)
- [Best Pdf Accessibility Apis](/blog/best-pdf-accessibility-apis.md)
- [Best Pdf Parsers For Rag](/blog/best-pdf-parsers-for-rag.md)
- [Best Pdf Processing Apis](/blog/best-pdf-processing-apis.md)
- [Best Pdf Viewer Apis](/blog/best-pdf-viewer-apis.md)
- [Best Salesforce Document Generation Apps](/blog/best-salesforce-document-generation-apps.md)
- [Best Secure Document Collaboration Platforms](/blog/best-secure-document-collaboration-platforms.md)
- [or](/blog/best-vue-pdf-viewers.md)
- [Bpm Guide](/blog/bpm-guide.md)
- [Bpm Tools](/blog/bpm-tools.md)
- [Build Vs Buy Document Extraction](/blog/build-vs-buy-document-extraction.md)
- [Business Automation](/blog/business-automation.md)
- [Capex Vs Opex](/blog/capex-vs-opex.md)
- [The CEO’s AI playbook: Why decision architecture beats model selection](/blog/ceo-ai-playbook-decision-architecture.md)
- [1. Extract and chunk the PDF.](/blog/chat-with-pdf.md)
- [Complete Guide To Pdfjs](/blog/complete-guide-to-pdfjs.md)
- [Construction Document Data Extraction](/blog/construction-document-data-extraction.md)
- [Convert One Drive Files To Pdf In Sharepoint](/blog/convert-one-drive-files-to-pdf-in-sharepoint.md)
- [Create And Edit Pdfs In Flutter](/blog/create-and-edit-pdfs-in-flutter.md)
- [Create Pdfs With React](/blog/create-pdfs-with-react.md)
- [Creating A Document Scanner With Ocr In Python](/blog/creating-a-document-scanner-with-ocr-in-python.md)
- [Creating And Filling Pdf Forms Programmatically In Javascript](/blog/creating-and-filling-pdf-forms-programmatically-in-javascript.md)
- [The CTO’s AI playbook: Why accountability architecture beats orchestration](/blog/cto-ai-playbook-accountability-architecture.md)
- [Nutrient document decision: Why we built a decision model for documents](/blog/decision-model-for-documents.md)
- [Digital Signatures](/blog/digital-signatures.md)
- [Digital Workflow Automation](/blog/digital-workflow-automation.md)
- [Docling Alternatives](/blog/docling-alternatives.md)
- [Document Ai Vs Ocr](/blog/document-ai-vs-ocr.md)
- [Document Authoring Audit Trail](/blog/document-authoring-audit-trail.md)
- [Document Extraction Confidence Scores](/blog/document-extraction-confidence-scores.md)
- [Document Extraction For Underwriting](/blog/document-extraction-for-underwriting.md)
- [Document Viewer](/blog/document-viewer.md)
- [Document Watermarking](/blog/document-watermarking.md)
- [Debian/Ubuntu.](/blog/easyocr-vs-tesseract-python.md)
- [Electronic signature API: How to sign PDFs programmatically](/blog/electronic-signature-api.md)
- [Emerging threats: Your logging system may be an agentic threat vector](/blog/emerging-threats-your-logging-system.md)
- [Q3 sales](/blog/excel-to-markdown-for-llms.md)
- [Extend Alternatives](/blog/extend-alternatives.md)
- [Extract Patient Data On Premises](/blog/extract-patient-data-on-premises.md)
- [Extract Tables From Complex Pdfs](/blog/extract-tables-from-complex-pdfs.md)
- [app.py](/blog/extract-text-from-pdf-using-python.md)
- [Stricter thresholds for fields that move money. Calibrate on your own sample.](/blog/extraction-hallucination-detection.md)
- [Fillable Pdf](/blog/fillable-pdf.md)
- [Google Document Ai Alternatives](/blog/google-document-ai-alternatives.md)
- [How To Add Digital Signature To Pdf Using React](/blog/how-to-add-digital-signature-to-pdf-using-react.md)
- [How To Build A Dotnet Maui Pdf Viewer](/blog/how-to-build-a-dotnet-maui-pdf-viewer.md)
- [How To Build A Flutter Pdf Viewer](/blog/how-to-build-a-flutter-pdf-viewer.md)
- [or](/blog/how-to-build-a-javascript-pdf-viewer-with-pdfjs.md)
- [or](/blog/how-to-build-a-javascript-pdf-viewer.md)
- [How To Build A Nextjs Pdf Viewer](/blog/how-to-build-a-nextjs-pdf-viewer.md)
- [How To Build A Powerpoint Viewer Using Javascript](/blog/how-to-build-a-powerpoint-viewer-using-javascript.md)
- [Using Yarn](/blog/how-to-build-a-react-excel-viewer.md)
- [How To Build A React Native Pdf Viewer](/blog/how-to-build-a-react-native-pdf-viewer.md)
- [How To Build A React Powerpoint Viewer](/blog/how-to-build-a-react-powerpoint-viewer.md)
- [Using Yarn](/blog/how-to-build-a-react-word-viewer.md)
- [How To Build A Reactjs File Viewer](/blog/how-to-build-a-reactjs-file-viewer.md)
- [How To Build A Reactjs Pdf Viewer With React Pdf](/blog/how-to-build-a-reactjs-pdf-viewer-with-react-pdf.md)
- [or](/blog/how-to-build-a-reactjs-pdf-viewer.md)
- [How To Build A Reactjs Viewer With Pdfjs](/blog/how-to-build-a-reactjs-viewer-with-pdfjs.md)
- [How To Build A Vuejs Pdf Viewer With Pdfjs](/blog/how-to-build-a-vuejs-pdf-viewer-with-pdfjs.md)
- [How To Build A Vuejs Pdf Viewer](/blog/how-to-build-a-vuejs-pdf-viewer.md)
- [How To Build An Android Pdf Viewer](/blog/how-to-build-an-android-pdf-viewer.md)
- [How To Build An Angular Pdf Viewer With Ng2 Pdf Viewer](/blog/how-to-build-an-angular-pdf-viewer-with-ng2-pdf-viewer.md)
- [How To Build An Angular Pdf Viewer With Pdfjs](/blog/how-to-build-an-angular-pdf-viewer-with-pdfjs.md)
- [How To Convert Docx To Pdf Using Javascript](/blog/how-to-convert-docx-to-pdf-using-javascript.md)
- [How To Convert Docx To Pdf Using Python](/blog/how-to-convert-docx-to-pdf-using-python.md)
- [How To Convert Html To Pdf Using Html2pdf](/blog/how-to-convert-html-to-pdf-using-html2pdf.md)
- [How To Convert Html To Pdf Using React](/blog/how-to-convert-html-to-pdf-using-react.md)
- [How To Convert Html To Pdf Using Wkhtmltopdf And Csharp](/blog/how-to-convert-html-to-pdf-using-wkhtmltopdf-and-csharp.md)
- [or](/blog/how-to-convert-html-to-pdf-using-wkhtmltopdf-and-python.md)
- [How To Convert Html To Pptx](/blog/how-to-convert-html-to-pptx.md)
- [How To Convert Pdf To Json](/blog/how-to-convert-pdf-to-json.md)
- [Quarterly report](/blog/how-to-convert-pdf-to-markdown-using-python.md)
- [How To Convert Word To Pdf In Nodejs](/blog/how-to-convert-word-to-pdf-in-nodejs.md)
- [How To Convert Word To Pdf Using Javascript](/blog/how-to-convert-word-to-pdf-using-javascript.md)
- [or](/blog/how-to-create-a-react-js-signature-pad.md)
- [How To Create Pdfs With React To Pdf](/blog/how-to-create-pdfs-with-react-to-pdf.md)
- [How to digitally sign PDFs in C# with Nutrient .NET SDK](/blog/how-to-digitally-sign-pdf-in-csharp.md)
- [How To Edit Pdfs Using Ios Pdf Library](/blog/how-to-edit-pdfs-using-ios-pdf-library.md)
- [How To Embed A Pdf Viewer In Your Website](/blog/how-to-embed-a-pdf-viewer-in-your-website.md)
- [How To Extract Tables From Pdf And Images](/blog/how-to-extract-tables-from-pdf-and-images.md)
- [How To Generate Pdf From Html With Nodejs](/blog/how-to-generate-pdf-from-html-with-nodejs.md)
- [How to generate PDFs in C# with Nutrient .NET SDK](/blog/how-to-generate-pdf-in-csharp.md)
- [base_url tells WeasyPrint where to resolve relative asset paths](/blog/how-to-generate-pdf-reports-from-html-in-python.md)
- [How To Merge Pdfs Using Javascript](/blog/how-to-merge-pdfs-using-javascript.md)
- [How To Ocr Pdfs In Linux](/blog/how-to-ocr-pdfs-in-linux.md)
- [How To Print Pdf In Csharp](/blog/how-to-print-pdf-in-csharp.md)
- [How To Programmatically Create And Fill Pdf Form In Angular](/blog/how-to-programmatically-create-and-fill-pdf-form-in-angular.md)
- [C# barcode scanner: How to scan and read 1D barcodes and QR codes](/blog/how-to-scan-barcodes-in-csharp.md)
- [Open an image.](/blog/how-to-use-tesseract-ocr-in-python.md)
- [From an HTML string.](/blog/html-in-pdf-format.md)
- [Html To Pdf In Javascript](/blog/html-to-pdf-in-javascript.md)
- [Ide Text Editors Cpp Large Scale](/blog/ide-text-editors-cpp-large-scale.md)
- [Intelligent Data Extraction](/blog/intelligent-data-extraction.md)
- [Invoice Approval Software](/blog/invoice-approval-software.md)
- [Javascript Document Editor](/blog/javascript-document-editor.md)
- [Javascript Pdf Editors](/blog/javascript-pdf-editors.md)
- [Javascript Pdf Libraries](/blog/javascript-pdf-libraries.md)
- [Keep Document Ai Private](/blog/keep-document-ai-private.md)
- [Landing Ai Alternatives](/blog/landing-ai-alternatives.md)
- [Langextract Vs Llamaindex Extraction Comparison](/blog/langextract-vs-llamaindex-extraction-comparison.md)
- [Linearized Pdf](/blog/linearized-pdf.md)
- [Uses OpenAI by default — set OPENAI_API_KEY.](/blog/llamaindex-vs-langchain-rag.md)
- [Llamaindex Vs Langchain Vs Haystack](/blog/llamaindex-vs-langchain-vs-haystack.md)
- [Llamaindex Workflows Vs Langgraph](/blog/llamaindex-workflows-vs-langgraph.md)
- [Llamaparse Alternatives](/blog/llamaparse-alternatives.md)
- [Llm Vs Document Parsing Api](/blog/llm-vs-document-parsing-api.md)
- [Low Code No Code Document Integrations](/blog/low-code-no-code-document-integrations.md)
- [One segment per document found, in page order:](/blog/mailroom-automation-api.md)
- [Material Requisition](/blog/material-requisition.md)
- [or](/blog/merge-pdfs.md)
- [Migrating Observability Hyperdx To Dash0](/blog/migrating-observability-hyperdx-to-dash0.md)
- [Swift Package Manager](/blog/mobile-pdf-sdk.md)
- [Numeric and identifier fields: exact single-block matches only.](/blog/mortgage-document-processing.md)
- [`elements` come from your document parser — each has a type and content.](/blog/multimodal-rag.md)
- [Multipage Extraction Page Boundaries](/blog/multipage-extraction-page-boundaries.md)
- [Nutrient Flutter 6 Bindings Api](/blog/nutrient-flutter-6-bindings-api.md)
- [Nutrient Flutter Bindings Architecture](/blog/nutrient-flutter-bindings-architecture.md)
- [Nutrient Vs Conga Composer](/blog/nutrient-vs-conga-composer.md)
- [Ocr Api Comparison](/blog/ocr-api-comparison.md)
- [Online Document Viewer](/blog/online-document-viewer.md)
- [Open Pdf In Your Web App](/blog/open-pdf-in-your-web-app.md)
- [Operations Management Software](/blog/operations-management-software.md)
- [Optical Character Recognition In Scanned Pdfs](/blog/optical-character-recognition-in-scanned-pdfs.md)
- [CPU](/blog/paddleocr-python-guide.md)
- [PDF accessibility for developers: Meeting WCAG 2.2, Section 508, and PDF/UA with an SDK](/blog/pdf-accessibility.md)
- [Extract data from PDF files: A developer guide to structured data from PDFs and scans](/blog/pdf-data-extraction-developer-guide.md)
- [Pdf Extraction Benchmark Opendataloader Bench](/blog/pdf-extraction-benchmark-opendataloader-bench.md)
- [Pdf Extraction Document Case Studies](/blog/pdf-extraction-document-case-studies.md)
- [Pdf Page Labels](/blog/pdf-page-labels.md)
- [Pdf Sdk Compliance Security Checklist](/blog/pdf-sdk-compliance-security-checklist.md)
- [Pdf Sdk Performance Benchmark](/blog/pdf-sdk-performance-benchmark.md)
- [Pdf Ua Compliance Guide](/blog/pdf-ua-compliance-guide.md)
- [Pdf Ua Validation](/blog/pdf-ua-validation.md)
- [Pdfjs Accessibility Structtree Printing](/blog/pdfjs-accessibility-structtree-printing.md)
- [Pdfjs Advanced Loading Streaming Workers](/blog/pdfjs-advanced-loading-streaming-workers.md)
- [Pdfjs Annotation Editor Layer](/blog/pdfjs-annotation-editor-layer.md)
- [Pdfjs Area Annotations Canvas Capture](/blog/pdfjs-area-annotations-canvas-capture.md)
- [Pdfjs Coordinate Systems Pdf To Screen](/blog/pdfjs-coordinate-systems-pdf-to-screen.md)
- [Pdfjs Document Outline Bookmarks Metadata](/blog/pdfjs-document-outline-bookmarks-metadata.md)
- [Pdfjs Eventbus Guide](/blog/pdfjs-eventbus-guide.md)
- [macOS](/blog/pdfjs-file-format-conversion-to-pdf.md)
- [macOS](/blog/pdfjs-generating-pdf-thumbnails-pdf2pic.md)
- [Pdfjs Limitations Commercial Upgrade](/blog/pdfjs-limitations-commercial-upgrade.md)
- [Pdfjs Native Annotation Layer Forms](/blog/pdfjs-native-annotation-layer-forms.md)
- [Pdfjs Navigation Zoom Rotation](/blog/pdfjs-navigation-zoom-rotation.md)
- [Pdfjs Pdf Page Manipulation Pdf Lib](/blog/pdfjs-pdf-page-manipulation-pdf-lib.md)
- [Pdfjs React Viewer Setup](/blog/pdfjs-react-viewer-setup.md)
- [Pdfjs Rendering Overlays React Portals](/blog/pdfjs-rendering-overlays-react-portals.md)
- [Pdfjs Server Side Text Extraction](/blog/pdfjs-server-side-text-extraction.md)
- [Pdfjs Sticky Note Annotations](/blog/pdfjs-sticky-note-annotations.md)
- [Pdfjs Text Highlight Annotations](/blog/pdfjs-text-highlight-annotations.md)
- [Pdfjs Text Search Pdffindcontroller](/blog/pdfjs-text-search-pdffindcontroller.md)
- [Pdfjs Thumbnail Sidebar](/blog/pdfjs-thumbnail-sidebar.md)
- [Pdfplumber Python Guide](/blog/pdfplumber-python-guide.md)
- [People Process Tools](/blog/people-process-tools.md)
- [Process Flows](/blog/process-flows.md)
- [React Docx Editor](/blog/react-docx-editor.md)
- [React Native Pdf Annotation](/blog/react-native-pdf-annotation.md)
- [React Pdf Annotation Layer Forms](/blog/react-pdf-annotation-layer-forms.md)
- [React Pdf Custom Rendering Hooks](/blog/react-pdf-custom-rendering-hooks.md)
- [Using Yarn](/blog/react-pdf-editor.md)
- [React Pdf Loading States Errors Passwords](/blog/react-pdf-loading-states-errors-passwords.md)
- [React Pdf Non Latin Fonts Special Pdfs](/blog/react-pdf-non-latin-fonts-special-pdfs.md)
- [React Pdf Outline Table Of Contents](/blog/react-pdf-outline-table-of-contents.md)
- [React Pdf Performance Optimization](/blog/react-pdf-performance-optimization.md)
- [React Pdf Setup Basic Rendering](/blog/react-pdf-setup-basic-rendering.md)
- [React Pdf Text Layer Custom Renderer](/blog/react-pdf-text-layer-custom-renderer.md)
- [React Pdf Thumbnails Page Navigation](/blog/react-pdf-thumbnails-page-navigation.md)
- [Reducto Alternatives](/blog/reducto-alternatives.md)
- [Requisition System](/blog/requisition-system.md)
- [labels.py](/blog/route-documents-automatically-classify-api.md)
- [or](/blog/sample-blog-updated.md)
- [Sdk Product Updates Q2 2026](/blog/sdk-product-updates-q2-2026.md)
- [System Of Record Vs Source Of Truth](/blog/system-of-record-vs-source-of-truth.md)
- [Add DWS MCP Server to your Claude Code project.](/blog/teaching-llms-to-read-pdfs.md)
- [Open an image file.](/blog/tesseract-python-guide.md)
- [The Six Best Pdf Generator Apis](/blog/the-six-best-pdf-generator-apis.md)
- [Define the HTML part of the document.](/blog/top-10-ways-to-generate-pdfs-in-python.md)
- [Top 5 Javascript Pdf Viewers](/blog/top-5-javascript-pdf-viewers.md)
- [Top Js Pdf Libraries](/blog/top-js-pdf-libraries.md)
- [Top Ten Ways To Convert Html To Pdf](/blog/top-ten-ways-to-convert-html-to-pdf.md)
- [Unstructured Alternatives](/blog/unstructured-alternatives.md)
- [Using Javascript In Pdf Form Fields](/blog/using-javascript-in-pdf-form-fields.md)
- [Vector Pdf](/blog/vector-pdf.md)
- [Wcag2 Accessibility Requirements Documents](/blog/wcag2-accessibility-requirements-documents.md)
- [Web Sdk Is Now Headless](/blog/web-sdk-is-now-headless.md)
- [What Are Annotations](/blog/what-are-annotations.md)
- [What Is A Vpat](/blog/what-is-a-vpat.md)
- [What Is Bpms](/blog/what-is-bpms.md)
- [What Is Business Logic](/blog/what-is-business-logic.md)
- [What Is Document Processing](/blog/what-is-document-processing.md)
- [What Is Intelligent Document Processing](/blog/what-is-intelligent-document-processing.md)
- [What Is Ocr Invoice Processing](/blog/what-is-ocr-invoice-processing.md)
- [What Is Pdf Ua](/blog/what-is-pdf-ua.md)
- [Why Pdfium Is A Trusted Platform For Pdf Rendering](/blog/why-pdfium-is-a-trusted-platform-for-pdf-rendering.md)
- [Why Your Ai Agent Hallucinates Pdf Table Data](/blog/why-your-ai-agent-hallucinates-pdf-table-data.md)
- [Workflow Analysis](/blog/workflow-analysis.md)

