# Step 1: Extract NDA terms
EXTRACTION=$(curl -s -X POST https://api.iterationlayer.com/document-extraction/v1/extract \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"files": [
{
"type": "url",
"name": "nda-vanguard-tech.pdf",
"url": "https://example.com/legal/nda-vanguard-tech-2026.pdf"
}
],
"schema": {
"fields": [
{
"name": "disclosing_party",
"type": "TEXT",
"description": "Name of the disclosing party"
},
{
"name": "receiving_party",
"type": "TEXT",
"description": "Name of the receiving party"
},
{
"name": "effective_date",
"type": "DATE",
"description": "NDA effective date"
},
{
"name": "confidentiality_duration",
"type": "TEXT",
"description": "Duration of confidentiality obligations"
},
{
"name": "scope_of_confidential_info",
"type": "TEXTAREA",
"description": "Definition and scope of confidential information"
},
{
"name": "permitted_disclosures",
"type": "TEXTAREA",
"description": "Exceptions or permitted disclosures"
},
{
"name": "return_of_materials",
"type": "TEXTAREA",
"description": "Obligations to return or destroy materials"
},
{
"name": "non_solicitation",
"type": "BOOLEAN",
"description": "Whether the NDA includes a non-solicitation clause"
},
{
"name": "governing_law",
"type": "TEXT",
"description": "Governing law and jurisdiction"
},
{
"name": "breach_remedies",
"type": "TEXTAREA",
"description": "Remedies available in case of breach"
}
]
}
}')
# Step 2: Generate a compliance checklist spreadsheet
curl -X POST https://api.iterationlayer.com/sheet-generation/v1/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"format": "xlsx",
"sheets": [
{
"name": "NDA Compliance Checklist",
"columns": [
{
"name": "Obligation",
"width": 35
},
{
"name": "Details",
"width": 50
},
{
"name": "Status",
"width": 15
},
{
"name": "Due Date",
"width": 15
},
{
"name": "Notes",
"width": 30
}
],
"rows": [
[
{
"value": "Confidentiality scope acknowledged"
},
{
"value": "All technical specifications, business plans, and customer data shared by Vanguard Technologies are covered."
},
{
"value": "Pending"
},
{
"value": "2026-04-15",
"format": "date"
},
{
"value": "Brief internal team on scope"
}
],
[
{
"value": "Permitted disclosure carve-outs documented"
},
{
"value": "Court orders, regulatory requirements, and pre-existing public knowledge are excluded."
},
{
"value": "Pending"
},
{
"value": "2026-04-15",
"format": "date"
},
{
"value": ""
}
],
[
{
"value": "Confidentiality end date tracked"
},
{
"value": "Obligations remain in effect for 3 years from the effective date."
},
{
"value": "Pending"
},
{
"value": "2029-04-01",
"format": "date"
},
{
"value": "Calendar reminder set"
}
],
[
{
"value": "Return of materials process defined"
},
{
"value": "All materials must be returned or certified destroyed within 30 days of termination."
},
{
"value": "Pending"
},
{
"value": ""
},
{
"value": "Applies at termination"
}
],
[
{
"value": "Non-solicitation compliance"
},
{
"value": "No solicitation of disclosing party employees for 12 months."
},
{
"value": "Active"
},
{
"value": "2027-04-01",
"format": "date"
},
{
"value": ""
}
]
]
}
]
}'{
"success": true,
"data": {
"buffer": "UEsDBBQAAAA...",
"mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
}import { IterationLayer } from "iterationlayer";
const client = new IterationLayer({ apiKey: "YOUR_API_KEY" });
// Step 1: Extract NDA terms
const extraction = await client.extract({
files: [{ type: "url", name: "nda-vanguard-tech.pdf", url: "https://example.com/legal/nda-vanguard-tech-2026.pdf" }],
schema: {
fields: [
{ name: "disclosing_party", type: "TEXT", description: "Name of the disclosing party" },
{ name: "receiving_party", type: "TEXT", description: "Name of the receiving party" },
{ name: "effective_date", type: "DATE", description: "NDA effective date" },
{ name: "confidentiality_duration", type: "TEXT", description: "Duration of confidentiality obligations" },
{ name: "scope_of_confidential_info", type: "TEXTAREA", description: "Definition and scope of confidential information" },
{ name: "permitted_disclosures", type: "TEXTAREA", description: "Exceptions or permitted disclosures" },
{ name: "return_of_materials", type: "TEXTAREA", description: "Obligations to return or destroy materials" },
{ name: "non_solicitation", type: "BOOLEAN", description: "Whether the NDA includes a non-solicitation clause" },
{ name: "governing_law", type: "TEXT", description: "Governing law and jurisdiction" },
{ name: "breach_remedies", type: "TEXTAREA", description: "Remedies available in case of breach" },
],
},
});
const scopeOfConfidentialInfo = String(extraction["scope_of_confidential_info"].value);
const permittedDisclosures = String(extraction["permitted_disclosures"].value);
const confidentialityDuration = String(extraction["confidentiality_duration"].value);
const returnOfMaterials = String(extraction["return_of_materials"].value);
// Step 2: Generate a compliance checklist spreadsheet
const checklist = await client.generateSheet({
format: "xlsx",
sheets: [
{
name: "NDA Compliance Checklist",
columns: [
{ name: "Obligation", width: 35 },
{ name: "Details", width: 50 },
{ name: "Status", width: 15 },
{ name: "Due Date", width: 15 },
{ name: "Notes", width: 30 },
],
rows: [
[{ value: "Confidentiality scope acknowledged" }, { value: scopeOfConfidentialInfo }, { value: "Pending" }, { value: "" }, { value: "Brief internal team on scope" }],
[{ value: "Permitted disclosure carve-outs documented" }, { value: permittedDisclosures }, { value: "Pending" }, { value: "" }, { value: "" }],
[{ value: "Confidentiality end date tracked" }, { value: confidentialityDuration }, { value: "Pending" }, { value: "" }, { value: "Calendar reminder set" }],
[{ value: "Return of materials process defined" }, { value: returnOfMaterials }, { value: "Pending" }, { value: "" }, { value: "Applies at termination" }],
],
},
],
});{
"success": true,
"data": {
"buffer": "UEsDBBQAAAA...",
"mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
}from iterationlayer import IterationLayer
client = IterationLayer(api_key="YOUR_API_KEY")
# Step 1: Extract NDA terms
extraction = client.extract(
files=[{"type": "url", "name": "nda-vanguard-tech.pdf", "url": "https://example.com/legal/nda-vanguard-tech-2026.pdf"}],
schema={
"fields": [
{"name": "disclosing_party", "type": "TEXT", "description": "Name of the disclosing party"},
{"name": "receiving_party", "type": "TEXT", "description": "Name of the receiving party"},
{"name": "effective_date", "type": "DATE", "description": "NDA effective date"},
{"name": "confidentiality_duration", "type": "TEXT", "description": "Duration of confidentiality obligations"},
{"name": "scope_of_confidential_info", "type": "TEXTAREA", "description": "Definition and scope of confidential information"},
{"name": "permitted_disclosures", "type": "TEXTAREA", "description": "Exceptions or permitted disclosures"},
{"name": "return_of_materials", "type": "TEXTAREA", "description": "Obligations to return or destroy materials"},
{"name": "non_solicitation", "type": "BOOLEAN", "description": "Whether the NDA includes a non-solicitation clause"},
{"name": "governing_law", "type": "TEXT", "description": "Governing law and jurisdiction"},
{"name": "breach_remedies", "type": "TEXTAREA", "description": "Remedies available in case of breach"},
]
},
)
scope_of_confidential_info = extraction["scope_of_confidential_info"]["value"]
permitted_disclosures = extraction["permitted_disclosures"]["value"]
confidentiality_duration = extraction["confidentiality_duration"]["value"]
return_of_materials = extraction["return_of_materials"]["value"]
# Step 2: Generate a compliance checklist spreadsheet
checklist = client.generate_sheet(
format="xlsx",
sheets=[
{
"name": "NDA Compliance Checklist",
"columns": [
{"name": "Obligation", "width": 35},
{"name": "Details", "width": 50},
{"name": "Status", "width": 15},
{"name": "Due Date", "width": 15},
{"name": "Notes", "width": 30},
],
"rows": [
[{"value": "Confidentiality scope acknowledged"}, {"value": scope_of_confidential_info}, {"value": "Pending"}, {"value": ""}, {"value": "Brief internal team on scope"}],
[{"value": "Permitted disclosure carve-outs documented"}, {"value": permitted_disclosures}, {"value": "Pending"}, {"value": ""}, {"value": ""}],
[{"value": "Confidentiality end date tracked"}, {"value": confidentiality_duration}, {"value": "Pending"}, {"value": ""}, {"value": "Calendar reminder set"}],
[{"value": "Return of materials process defined"}, {"value": return_of_materials}, {"value": "Pending"}, {"value": ""}, {"value": "Applies at termination"}],
],
}
],
){
"success": true,
"data": {
"buffer": "UEsDBBQAAAA...",
"mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
}package main
import (
"fmt"
il "github.com/iterationlayer/sdk-go"
)
func main() {
client := il.NewClient("YOUR_API_KEY")
// Step 1: Extract NDA terms
extraction, err := client.Extract(il.ExtractRequest{
Files: []il.FileInput{
il.NewFileFromURL("nda-vanguard-tech.pdf", "https://example.com/legal/nda-vanguard-tech-2026.pdf"),
},
Schema: il.ExtractionSchema{
"disclosing_party": il.NewTextFieldConfig("disclosing_party", "Name of the disclosing party"),
"receiving_party": il.NewTextFieldConfig("receiving_party", "Name of the receiving party"),
"effective_date": il.NewDateFieldConfig("effective_date", "NDA effective date"),
"confidentiality_duration": il.NewTextFieldConfig("confidentiality_duration", "Duration of confidentiality obligations"),
"scope_of_confidential_info": il.NewTextareaFieldConfig("scope_of_confidential_info", "Definition and scope of confidential information"),
"permitted_disclosures": il.NewTextareaFieldConfig("permitted_disclosures", "Exceptions or permitted disclosures"),
"return_of_materials": il.NewTextareaFieldConfig("return_of_materials", "Obligations to return or destroy materials"),
"non_solicitation": il.NewBooleanFieldConfig("non_solicitation", "Whether the NDA includes a non-solicitation clause"),
"governing_law": il.NewTextFieldConfig("governing_law", "Governing law and jurisdiction"),
"breach_remedies": il.NewTextareaFieldConfig("breach_remedies", "Remedies available in case of breach"),
},
})
if err != nil {
panic(err)
}
scopeOfConfidentialInfo := fmt.Sprintf("%v", (*extraction)["scope_of_confidential_info"].Value)
permittedDisclosures := fmt.Sprintf("%v", (*extraction)["permitted_disclosures"].Value)
confidentialityDuration := fmt.Sprintf("%v", (*extraction)["confidentiality_duration"].Value)
returnOfMaterials := fmt.Sprintf("%v", (*extraction)["return_of_materials"].Value)
// Step 2: Generate a compliance checklist spreadsheet
_, err = client.GenerateSheet(il.GenerateSheetRequest{
Format: "xlsx",
Sheets: []il.Sheet{
{
Name: "NDA Compliance Checklist",
Columns: []il.SheetColumn{
{Name: "Obligation", Width: 35}, {Name: "Details", Width: 50}, {Name: "Status", Width: 15}, {Name: "Due Date", Width: 15}, {Name: "Notes", Width: 30},
},
Rows: [][]il.SheetCell{
{{Value: "Confidentiality scope acknowledged"}, {Value: scopeOfConfidentialInfo}, {Value: "Pending"}, {Value: ""}, {Value: "Brief internal team"}},
{{Value: "Permitted disclosures documented"}, {Value: permittedDisclosures}, {Value: "Pending"}, {Value: ""}, {Value: ""}},
{{Value: "Confidentiality end date tracked"}, {Value: confidentialityDuration}, {Value: "Pending"}, {Value: ""}, {Value: "Calendar reminder set"}},
{{Value: "Return of materials process"}, {Value: returnOfMaterials}, {Value: "Pending"}, {Value: ""}, {Value: "Applies at termination"}},
},
},
},
})
if err != nil {
panic(err)
}
}{
"success": true,
"data": {
"buffer": "UEsDBBQAAAA...",
"mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
}{
"name": "Extract NDA terms and generate compliance checklist in Iteration Layer",
"nodes": [
{
"parameters": {
"content": "## Extract NDA Terms and Generate a Compliance Checklist\n\nLegal agencies managing NDAs across multiple clients use this pipeline to extract key confidentiality terms and generate standardized compliance checklists.\n\n**Note:** This workflow uses the Iteration Layer community node (`n8n-nodes-iterationlayer`). Install it via Settings > Community Nodes before importing. Self-hosted n8n only.",
"height": 280,
"width": 500,
"color": 2
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [200, 40],
"id": "b4c5d6e7-f8a9-0123-bcde-123456789001",
"name": "Overview"
},
{
"parameters": {
"content": "### Step 1: Extract NDA Terms\nResource: **Document Extraction**\n\nConfigure the Document Extraction parameters below, then connect your credentials.",
"height": 160,
"width": 300,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [475, 100],
"id": "b4c5d6e7-f8a9-0123-bcde-123456789002",
"name": "Step 1 Note"
},
{
"parameters": {
"content": "### Step 2: Generate Checklist\nResource: **Sheet Generation**\n\nConfigure the Sheet Generation parameters below, then connect your credentials.",
"height": 160,
"width": 300,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [725, 100],
"id": "b4c5d6e7-f8a9-0123-bcde-123456789003",
"name": "Step 2 Note"
},
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [250, 300],
"id": "b4c5d6e7-f8a9-0123-bcde-123456789004",
"name": "Manual Trigger"
},
{
"parameters": {
"resource": "documentExtraction",
"schemaInputMode": "rawJson",
"schemaJson": "{\"fields\":[{\"name\":\"disclosing_party\",\"type\":\"TEXT\",\"description\":\"Disclosing party\"},{\"name\":\"receiving_party\",\"type\":\"TEXT\",\"description\":\"Receiving party\"},{\"name\":\"effective_date\",\"type\":\"DATE\",\"description\":\"NDA effective date\"},{\"name\":\"confidentiality_duration\",\"type\":\"TEXT\",\"description\":\"Duration of obligations\"},{\"name\":\"scope_of_confidential_info\",\"type\":\"TEXTAREA\",\"description\":\"Scope of confidential information\"},{\"name\":\"permitted_disclosures\",\"type\":\"TEXTAREA\",\"description\":\"Permitted disclosures\"},{\"name\":\"return_of_materials\",\"type\":\"TEXTAREA\",\"description\":\"Return of materials\"},{\"name\":\"non_solicitation\",\"type\":\"BOOLEAN\",\"description\":\"Non-solicitation clause\"},{\"name\":\"governing_law\",\"type\":\"TEXT\",\"description\":\"Governing law\"},{\"name\":\"breach_remedies\",\"type\":\"TEXTAREA\",\"description\":\"Breach remedies\"}]}",
"files": {
"fileValues": [
{
"fileInputMode": "url",
"fileName": "nda-vanguard-tech.pdf",
"fileUrl": "https://example.com/legal/nda-vanguard-tech-2026.pdf"
}
]
}
},
"type": "n8n-nodes-iterationlayer.iterationLayer",
"typeVersion": 1,
"position": [500, 300],
"id": "b4c5d6e7-f8a9-0123-bcde-123456789005",
"name": "Extract NDA Terms",
"credentials": {
"iterationLayerApi": {
"id": "1",
"name": "Iteration Layer API"
}
}
},
{
"parameters": {
"resource": "sheetGeneration",
"format": "xlsx",
"sheetsJson": "[{\"name\":\"NDA Compliance Checklist\",\"columns\":[{\"name\":\"Obligation\",\"width\":35},{\"name\":\"Details\",\"width\":50},{\"name\":\"Status\",\"width\":15},{\"name\":\"Due Date\",\"width\":15},{\"name\":\"Notes\",\"width\":30}],\"rows\":[[{\"value\":\"Confidentiality scope acknowledged\"},{\"value\":\"{{ $json.scope_of_confidential_info }}\"},{\"value\":\"Pending\"},{\"value\":\"\"},{\"value\":\"Brief team\"}],[{\"value\":\"Permitted disclosures documented\"},{\"value\":\"{{ $json.permitted_disclosures }}\"},{\"value\":\"Pending\"},{\"value\":\"\"},{\"value\":\"\"}],[{\"value\":\"Confidentiality end date tracked\"},{\"value\":\"{{ $json.confidentiality_duration }}\"},{\"value\":\"Pending\"},{\"value\":\"\"},{\"value\":\"Set calendar reminder\"}],[{\"value\":\"Return of materials process\"},{\"value\":\"{{ $json.return_of_materials }}\"},{\"value\":\"Pending\"},{\"value\":\"\"},{\"value\":\"At termination\"}]]}]"
},
"type": "n8n-nodes-iterationlayer.iterationLayer",
"typeVersion": 1,
"position": [750, 300],
"id": "b4c5d6e7-f8a9-0123-bcde-123456789006",
"name": "Generate Checklist",
"credentials": {
"iterationLayerApi": {
"id": "1",
"name": "Iteration Layer API"
}
}
}
],
"connections": {
"Manual Trigger": {
"main": [
[
{
"node": "Extract NDA Terms",
"type": "main",
"index": 0
}
]
]
},
"Extract NDA Terms": {
"main": [
[
{
"node": "Generate Checklist",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
}
}Extract NDA terms from the document at [file URL], then generate a compliance checklist. Use the extract_document tool with these fields:
- disclosing_party (TEXT): Name of the disclosing party
- receiving_party (TEXT): Name of the receiving party
- effective_date (DATE): NDA effective date
- confidentiality_duration (TEXT): Duration of confidentiality obligations
- scope_of_confidential_info (TEXTAREA): Definition and scope of confidential information
- permitted_disclosures (TEXTAREA): Exceptions or permitted disclosures
- return_of_materials (TEXTAREA): Obligations to return or destroy materials
- non_solicitation (BOOLEAN): Whether the NDA includes a non-solicitation clause
- governing_law (TEXT): Governing law and jurisdiction
- breach_remedies (TEXTAREA): Remedies available in case of breach
Then use the generate_sheet tool to create an XLSX checklist with columns for Obligation, Details, Status, Due Date, and Notes, with one row per key obligation extracted from the NDA.