This workflow corresponds to n8n.io template #15565 — we link there as the canonical source.
This workflow follows the Agent → Documentdefaultdataloader recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "gI4L6WCIIbgYwn7o",
"name": "Multi-modal plagiarism detection system with AI agents",
"tags": [],
"nodes": [
{
"id": "124a4b1b-f76a-42a3-aa3f-7b41284a0d99",
"name": "Extract PDF/DOCX Text",
"type": "n8n-nodes-base.extractFromFile",
"position": [
592,
816
],
"parameters": {
"options": {},
"operation": "text",
"destinationKey": "docx",
"binaryPropertyName": "docx"
},
"typeVersion": 1.1
},
{
"id": "57b74548-f5e3-4e40-beb8-b54a0eed5eb3",
"name": "Combine All Extracted Data",
"type": "n8n-nodes-base.merge",
"position": [
880,
992
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3.2
},
{
"id": "bf238283-6325-4e8b-a66b-c1dcb40277d0",
"name": "Transcribe Audio (Whisper)",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
592,
1008
],
"parameters": {
"options": {
"temperature": 0
},
"resource": "audio",
"operation": "transcribe",
"binaryPropertyName": "sound"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "48f81998-3e65-473c-a6d3-fc0ce56a1e0e",
"name": "OCR & Image Analysis",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
592,
1200
],
"parameters": {
"text": "Extract all text from this image and describe any diagrams, charts, or visual elements in detail.",
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-5-mini"
},
"options": {
"detail": "high",
"maxTokens": 1000
},
"resource": "image",
"inputType": "base64",
"operation": "analyze",
"binaryPropertyName": "images"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "98af63ed-6717-456b-8483-def15d2c9412",
"name": "Normalize Submission Data",
"type": "n8n-nodes-base.set",
"position": [
1104,
1008
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1",
"name": "submissionId",
"type": "string",
"value": "= {{ $('Webhook').item.json.body.studentId }}"
},
{
"id": "2",
"name": "studentName",
"type": "string",
"value": "= {{ $('Webhook').item.json.body.studentName }}"
},
{
"id": "3",
"name": "content_image",
"type": "string",
"value": "= {{ $('OCR & Image Analysis').item.json['1'].content[0].text }}"
},
{
"id": "4",
"name": "content_sound",
"type": "string",
"value": "= {{ $('Transcribe Audio (Whisper)').item.json.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "2de7d0c4-f112-4c28-9eae-abd23fa40d0b",
"name": "Store in Submission Repository",
"type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
"position": [
1328,
1008
],
"parameters": {
"mode": "insert",
"memoryKey": {
"__rl": true,
"mode": "list",
"value": "plagiarism_submissions"
}
},
"typeVersion": 1.3
},
{
"id": "7e10ea47-5395-411e-8226-d62cd9b7c1c6",
"name": "OpenAI Embeddings",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
1280,
1264
],
"parameters": {
"options": {
"dimensions": 1536
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "c5ac78fb-27f5-4659-97a2-b45a5c80de8f",
"name": "Document Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
1456,
1328
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "submissionId",
"value": "={{ $json.submissionId }}"
},
{
"name": "studentName",
"value": "={{ $json.studentName }}"
},
{
"name": "contentType",
"value": "={{ $json.contentType }}"
}
]
}
},
"jsonData": "= {{ $('Combine All Extracted Data').item.json.text }}",
"jsonMode": "expressionData"
},
"typeVersion": 1.1
},
{
"id": "d1d15b28-602d-46fe-9bb6-e3b6a6db894c",
"name": "Text Similarity Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1680,
304
],
"parameters": {
"text": "={{ $json.content }}",
"options": {
"maxIterations": 15,
"systemMessage": "You are a text plagiarism detection expert. Analyze the provided submission content against the vector store of prior submissions. Identify:\n1. Exact matches (word-for-word copying, similarity > 0.90)\n2. Semantic matches (paraphrased content, similarity 0.70-0.90)\n3. Calculate overall similarity score (0-1)\n4. Assign risk level: low (<0.3), medium (0.3-0.6), high (>0.6)\n5. Provide detailed explanation with specific examples\n\nUse the Vector Store Retriever Tool to find similar submissions.",
"returnIntermediateSteps": false
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "25722c96-9b5f-4955-aa95-c1033a6eb96c",
"name": "OpenAI GPT Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1696,
528
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-5-mini"
},
"options": {
"maxTokens": 2000,
"temperature": 0.2
},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "4a9cf75a-3a40-4ee7-a32f-092d3b61455f",
"name": "Text Similarity Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1824,
528
],
"parameters": {
"jsonSchemaExample": {
"riskLevel": "high",
"explanation": "Detected multiple exact and semantic matches",
"exactMatches": [
{
"text": "matched text",
"source": "SUB-2023-045",
"similarity": 0.98
}
],
"semanticMatches": [
{
"source": "SUB-2023-012",
"paraphrase": "similar concept",
"similarity": 0.85
}
],
"overallSimilarityScore": 0.75
}
},
"typeVersion": 1.3
},
{
"id": "ae372b2a-83f7-487d-9a5e-c0d38856e037",
"name": "Retrieval Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
"position": [
1264,
1648
],
"parameters": {
"memoryKey": "plagiarism_submissions"
},
"typeVersion": 1
},
{
"id": "2ad82ece-18d6-498a-b2e9-e2e7b544ca41",
"name": "Merge Agent Outputs",
"type": "n8n-nodes-base.merge",
"position": [
2032,
896
],
"parameters": {
"numberInputs": 4
},
"typeVersion": 3.2
},
{
"id": "e2da5f4f-6fee-442d-91a7-11cf3db48139",
"name": "Code Analysis Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1680,
720
],
"parameters": {
"text": "={{ $json.content }}",
"options": {
"maxIterations": 15,
"systemMessage": "You are a code plagiarism detection expert specializing in structural and logical analysis. When analyzing code submissions:\n1. Identify structural matches (function/class structure, control flow patterns)\n2. Detect logical similarities (algorithm implementation, problem-solving approach)\n3. Recognize variable/function renaming attempts\n4. Classify code clone type: Type-1 (exact), Type-2 (renamed), Type-3 (modified), Type-4 (semantic)\n5. Calculate overall similarity score (0-1)\n6. Assign risk level: low (<0.4), medium (0.4-0.7), high (>0.7)\n7. Provide detailed explanation with code snippets\n\nUse the Vector Store Retriever Tool to compare against previous code submissions.",
"returnIntermediateSteps": false
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "04badd82-1f56-4a9f-9e79-757ea904c042",
"name": "Code Analysis Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1760,
928
],
"parameters": {
"jsonSchemaExample": {
"riskLevel": "high",
"explanation": "Detected structural and logical similarities",
"codeCloneType": "Type-2",
"logicalMatches": [
{
"source": "SUB-2023-034",
"algorithm": "sorting logic",
"similarity": 0.88
}
],
"variableRenaming": true,
"structuralMatches": [
{
"source": "SUB-2023-078",
"pattern": "function structure",
"similarity": 0.92
}
],
"overallSimilarityScore": 0.8
}
},
"typeVersion": 1.3
},
{
"id": "8f1c27dd-2e26-46ad-90b0-95e0b651079a",
"name": "Multi-Modal Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1680,
1104
],
"parameters": {
"text": "={{ $json.content }}",
"options": {
"maxIterations": 15,
"systemMessage": "You are a multi-modal plagiarism detection expert analyzing images, diagrams, and their relationship to text. Your tasks:\n1. Analyze image/diagram content for matches against previous submissions\n2. Evaluate text-image consistency (do diagrams match the written explanation?)\n3. Assess diagram originality vs. copied/modified visuals\n4. Detect visual plagiarism (screenshots, traced diagrams, modified charts)\n5. Calculate overall similarity score (0-1)\n6. Assign risk level: low (<0.4), medium (0.4-0.7), high (>0.7)\n7. Provide detailed explanation with visual element descriptions\n\nUse the Vector Store Retriever Tool to compare against previous image/diagram submissions.",
"returnIntermediateSteps": false
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "f4387bfa-a407-46bc-96a8-834f9fa9667d",
"name": "Multi-Modal Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1760,
1328
],
"parameters": {
"jsonSchemaExample": {
"riskLevel": "medium",
"explanation": "Image content matches previous submission with high text-image consistency",
"imageMatches": [
{
"source": "SUB-2023-056",
"element": "diagram structure",
"similarity": 0.87
}
],
"diagramOriginality": 0.65,
"textImageConsistency": 0.92,
"overallSimilarityScore": 0.7,
"visualPlagiarismDetected": true
}
},
"typeVersion": 1.3
},
{
"id": "cd5c55fb-1bc1-4ebf-bd5c-d2621eeee0c0",
"name": "Audio Analysis Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1680,
1616
],
"parameters": {
"text": "={{ $json.content }}",
"options": {
"maxIterations": 15,
"systemMessage": "You are an audio plagiarism detection expert analyzing transcribed speech content. Your responsibilities:\n1. Compare transcribed speech against previous audio presentation transcripts\n2. Detect exact verbal matches (word-for-word spoken content)\n3. Identify paraphrased speech (same concepts expressed differently)\n4. Assess voice content originality\n5. Calculate overall similarity score (0-1)\n6. Assign risk level: low (<0.4), medium (0.4-0.7), high (>0.7)\n7. Provide detailed explanation with transcript excerpts\n\nUse the Vector Store Retriever Tool to compare against previous audio submission transcripts.",
"returnIntermediateSteps": false
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "9cdace05-34ae-40e0-9dcd-9b2483ac664a",
"name": "Audio Analysis Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1760,
1840
],
"parameters": {
"jsonSchemaExample": {
"riskLevel": "high",
"explanation": "Transcribed speech shows high similarity to previous audio presentations",
"voiceOriginality": 0.68,
"paraphrasedSpeech": [
{
"source": "SUB-2023-067",
"concept": "methodology explanation",
"similarity": 0.83
}
],
"transcriptMatches": [
{
"source": "SUB-2023-089",
"segment": "introduction section",
"similarity": 0.91
}
],
"overallSimilarityScore": 0.72
}
},
"typeVersion": 1.3
},
{
"id": "76221884-979b-47d7-b668-5eb9a0a6cd9b",
"name": "Aggregate Agent Results",
"type": "n8n-nodes-base.aggregate",
"position": [
2256,
928
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "agentResults"
},
"typeVersion": 1
},
{
"id": "1490a482-a1f5-4d51-9add-676e7fc49bbf",
"name": "Reasoning & Aggregation Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2480,
928
],
"parameters": {
"text": "={{ JSON.stringify($json.agentResults) }}",
"options": {
"maxIterations": 10,
"systemMessage": "You are a senior academic integrity officer responsible for final plagiarism assessment. Analyze all agent outputs and produce a comprehensive, auditable report:\n\n1. AGGREGATE SCORES: Calculate weighted overall plagiarism score from all agents\n2. RISK CLASSIFICATION: Assign final risk level (low/medium/high) based on:\n - High: Overall score > 0.6 OR any single agent score > 0.85\n - Medium: Overall score 0.3-0.6\n - Low: Overall score < 0.3\n3. SUMMARIZE FINDINGS: For each modality (text/code/image/audio), provide concise summary\n4. HIGHLIGHT MATCHES: Extract top 5 most significant matches across all modalities\n5. JUSTIFICATION: Write detailed, evidence-based explanation suitable for academic review board\n6. RECOMMENDATION: Provide clear action (APPROVE / MINOR_REVIEW / REFER_TO_ACADEMIC_REVIEW)\n7. AUDIT TRAIL: Include analysis metadata (date, agents used, data sources)\n\nBe objective, thorough, and provide specific evidence. This report will be used for academic decisions.",
"returnIntermediateSteps": false
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "87a6c516-1372-404e-83c6-b0ea6bf6f708",
"name": "Reasoning Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
2560,
1152
],
"parameters": {
"jsonSchemaExample": {
"auditTrail": {
"agentsUsed": [
"Text Similarity",
"Code Analysis",
"Multi-Modal",
"Audio Analysis"
],
"analysisDate": "2024-01-15T10:30:00Z",
"vectorStoreVersion": "plagiarism_submissions_v1"
},
"studentName": "John Doe",
"codeAnalysis": {
"risk": "high",
"score": 0.8,
"summary": "Type-2 code cloning detected"
},
"submissionId": "SUB-2024-001",
"textAnalysis": {
"risk": "high",
"score": 0.75,
"summary": "Multiple exact and semantic matches found"
},
"audioAnalysis": {
"risk": "high",
"score": 0.72,
"summary": "Transcript matches previous presentations"
},
"imageAnalysis": {
"risk": "medium",
"score": 0.7,
"summary": "Diagram similarities identified"
},
"justification": "This submission exhibits high plagiarism risk across multiple modalities. Text analysis revealed exact matches with SUB-2023-045 (98% similarity). Code analysis detected Type-2 cloning from SUB-2023-078 with variable renaming. Image content shows structural similarities to SUB-2023-056. Audio transcript matches SUB-2023-089 introduction. Recommend academic review.",
"finalRiskLevel": "high",
"recommendation": "REFER_TO_ACADEMIC_REVIEW",
"highlightedMatches": [
{
"type": "text",
"source": "SUB-2023-045",
"excerpt": "neural networks are...",
"similarity": 0.98
},
{
"type": "code",
"source": "SUB-2023-078",
"excerpt": "nested loop structure",
"similarity": 0.92
}
],
"overallPlagiarismScore": 0.74
}
},
"typeVersion": 1.3
},
{
"id": "0025cfee-02d9-44c9-ac02-2a2fc7deb01e",
"name": "Format Final Report",
"type": "n8n-nodes-base.set",
"position": [
2832,
928
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1",
"name": "reportTitle",
"type": "string",
"value": "={{ \"Academic Plagiarism Detection Report - \" + $json.output.submissionId }}"
},
{
"id": "2",
"name": "student",
"type": "string",
"value": "={{ $json.output.studentName }}"
},
{
"id": "3",
"name": "overallScore",
"type": "number",
"value": "={{ $json.output.overallPlagiarismScore }}"
},
{
"id": "4",
"name": "riskLevel",
"type": "string",
"value": "={{ $json.output.finalRiskLevel }}"
},
{
"id": "5",
"name": "detailedAnalysis",
"type": "object",
"value": "={{ $json.output }}"
},
{
"id": "6",
"name": "recommendation",
"type": "string",
"value": "={{ $json.output.recommendation }}"
},
{
"id": "7",
"name": "generatedAt",
"type": "string",
"value": "={{ $now.toISO() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "38f528c3-41c3-4ff3-a001-95a4f88e273a",
"name": "Vector Store Retriever Tool",
"type": "@n8n/n8n-nodes-langchain.retrieverVectorStore",
"position": [
1344,
1504
],
"parameters": {
"topK": 5
},
"typeVersion": 1
},
{
"id": "51991f2d-c651-4c18-906f-df6e91ef2e3a",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
224,
1008
],
"parameters": {
"path": "7b1ba0a2-c24a-44fa-82fa-27806673da98",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2.1
},
{
"id": "cbb6c4cd-0abb-4b77-ba6f-26e997bd410d",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
1216,
32
],
"parameters": {
"color": 4,
"width": 368,
"height": 608,
"content": "## Prerequisites\n- OpenAI API key (GPT-4, Whisper, Embeddings)\n- Vector store account (Pinecone, Qdrant, or Weaviate)\n- File storage accessible to n8n (S3, local, or URL)\n## Use Cases\n- University exam submission plagiarism screening\n- Code originality checks for coding assessments\n- Audio transcription integrity verification for oral submissions\n- Enterprise compliance document auditing across formats\n## Customization\n- Swap GPT models for Claude or Mistral in any agent node\n- Add more parallel agents (e.g., formula or citation analysis)\n## Benefits\n- Processes text, code, audio, and images in a single pipeline\n- Parallel agent execution reduces total analysis time"
},
"typeVersion": 1
},
{
"id": "39951eb4-0543-4996-83df-435a68805982",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
336
],
"parameters": {
"width": 464,
"height": 304,
"content": "## Setup Steps\n1. Connect webhook trigger and note the endpoint URL.\n2. Add OpenAI credentials for Whisper, GPT (text/code agents), and Embeddings nodes.\n3. Configure a vector store (e.g., Pinecone or Qdrant) for Retrieval Vector Store and Vector Store Retriever Tool.\n4. Set Document Loader to point to your storage source (S3, local, or URL).\n5. Set all AI agent models and output parsers to your preferred GPT model version.\n6. Test with a sample multi-modal submission via the webhook."
},
"typeVersion": 1
},
{
"id": "7dc8fdc8-515f-45b2-b5c4-d4916ebe5d51",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
64,
352
],
"parameters": {
"width": 624,
"height": 304,
"content": "## How It Works\nThis workflow automates academic and professional plagiarism detection by processing multi-modal submissions \u2014 documents, audio recordings, and images,through specialized AI agents. It targets educators, academic institutions, compliance teams, and content reviewers who need scalable, evidence-based integrity checking beyond simple text matching. A webhook receives submissions, which are routed in parallel through PDF/DOCX extraction, Whisper audio transcription, and OCR image analysis. All extracted data is combined and normalized before being stored in a vector database via OpenAI Embeddings for semantic retrieval. Four specialized agents \u2014 Text Similarity, Code Analysis, Multi-Modal, and Audio Analysis, run concurrently, each targeting a different modality. Their outputs are merged, aggregated, and passed to a Reasoning & Aggregation agent that synthesizes findings. A structured final report is formatted and returned."
},
"typeVersion": 1
},
{
"id": "d1bf36bd-19a5-4f88-9899-9e0697fcb847",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
48,
720
],
"parameters": {
"color": 7,
"width": 1552,
"height": 1056,
"content": "## Input, Normalize & Store\n**What** \u2014 Combined data is normalized and stored in a vector store with OpenAI Embeddings.\n**Why** \u2014 Enables semantic similarity retrieval across all modalities."
},
"typeVersion": 1
},
{
"id": "ba01b473-59b8-4309-85a0-a31e60021c17",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
2768,
752
],
"parameters": {
"color": 7,
"width": 320,
"height": 432,
"content": "## Final Report\n**What** \u2014 Format Final Report node structures the verdict for delivery.\n**Why** \u2014 Returns actionable, human-readable results.\n"
},
"typeVersion": 1
},
{
"id": "9a25663e-12cf-40a9-80ad-80087c95854f",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1616,
128
],
"parameters": {
"color": 7,
"width": 352,
"height": 1888,
"content": "## Parallel Agent Analysis\n**What** \u2014 Text Similarity, Code Analysis, Multi-Modal, and Audio Analysis agents run concurrently.\n**Why** \u2014 Specialized agents yield higher accuracy per modality."
},
"typeVersion": 1
},
{
"id": "97d051a6-f43a-4368-b60d-b3e3ceb5eb66",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1984,
736
],
"parameters": {
"color": 7,
"width": 768,
"height": 592,
"content": "## Merge & Reason\n**What** \u2014 Outputs are merged, aggregated, then processed by a Reasoning & Aggregation agent with output parsing.\n**Why** \u2014 Produces a coherent, cross-modal integrity verdict."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "5634fce3-9660-462d-b587-c6f34e6fe996",
"connections": {
"Webhook": {
"main": [
[
{
"node": "Extract PDF/DOCX Text",
"type": "main",
"index": 0
},
{
"node": "Transcribe Audio (Whisper)",
"type": "main",
"index": 0
},
{
"node": "OCR & Image Analysis",
"type": "main",
"index": 0
}
]
]
},
"Document Loader": {
"ai_document": [
[
{
"node": "Store in Submission Repository",
"type": "ai_document",
"index": 0
}
]
]
},
"OpenAI GPT Model": {
"ai_languageModel": [
[
{
"node": "Text Similarity Agent",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Code Analysis Agent",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Multi-Modal Agent",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Audio Analysis Agent",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Reasoning & Aggregation Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Multi-Modal Agent": {
"main": [
[
{
"node": "Merge Agent Outputs",
"type": "main",
"index": 2
}
]
]
},
"OpenAI Embeddings": {
"ai_embedding": [
[
{
"node": "Store in Submission Repository",
"type": "ai_embedding",
"index": 0
},
{
"node": "Retrieval Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Code Analysis Agent": {
"main": [
[
{
"node": "Merge Agent Outputs",
"type": "main",
"index": 1
}
]
]
},
"Merge Agent Outputs": {
"main": [
[
{
"node": "Aggregate Agent Results",
"type": "main",
"index": 0
}
]
]
},
"Audio Analysis Agent": {
"main": [
[
{
"node": "Merge Agent Outputs",
"type": "main",
"index": 3
}
]
]
},
"OCR & Image Analysis": {
"main": [
[
{
"node": "Combine All Extracted Data",
"type": "main",
"index": 2
}
]
]
},
"Extract PDF/DOCX Text": {
"main": [
[
{
"node": "Combine All Extracted Data",
"type": "main",
"index": 0
}
]
]
},
"Text Similarity Agent": {
"main": [
[
{
"node": "Merge Agent Outputs",
"type": "main",
"index": 0
}
]
]
},
"Retrieval Vector Store": {
"ai_vectorStore": [
[
{
"node": "Vector Store Retriever Tool",
"type": "ai_vectorStore",
"index": 0
}
]
]
},
"Aggregate Agent Results": {
"main": [
[
{
"node": "Reasoning & Aggregation Agent",
"type": "main",
"index": 0
}
]
]
},
"Reasoning Output Parser": {
"ai_outputParser": [
[
{
"node": "Reasoning & Aggregation Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Multi-Modal Output Parser": {
"ai_outputParser": [
[
{
"node": "Multi-Modal Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Normalize Submission Data": {
"main": [
[
{
"node": "Store in Submission Repository",
"type": "main",
"index": 0
}
]
]
},
"Combine All Extracted Data": {
"main": [
[
{
"node": "Normalize Submission Data",
"type": "main",
"index": 0
}
]
]
},
"Transcribe Audio (Whisper)": {
"main": [
[
{
"node": "Combine All Extracted Data",
"type": "main",
"index": 1
}
]
]
},
"Code Analysis Output Parser": {
"ai_outputParser": [
[
{
"node": "Code Analysis Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Audio Analysis Output Parser": {
"ai_outputParser": [
[
{
"node": "Audio Analysis Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Reasoning & Aggregation Agent": {
"main": [
[
{
"node": "Format Final Report",
"type": "main",
"index": 0
}
]
]
},
"Text Similarity Output Parser": {
"ai_outputParser": [
[
{
"node": "Text Similarity Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Store in Submission Repository": {
"main": [
[
{
"node": "Text Similarity Agent",
"type": "main",
"index": 0
},
{
"node": "Code Analysis Agent",
"type": "main",
"index": 0
},
{
"node": "Multi-Modal Agent",
"type": "main",
"index": 0
},
{
"node": "Audio Analysis Agent",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates academic and professional plagiarism detection by processing multi-modal submissions — documents, audio recordings, and images,through specialized AI agents. It targets educators, academic institutions, compliance teams, and content reviewers who need…
Source: https://n8n.io/workflows/15565/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
AI Multi-Document Analyzer with Smart Recommendations & Reporting
This workflow implements an AI-powered incident investigation and root cause analysis system that automatically analyzes operational signals when a system incident occurs.
> Zoom + n8n + GPT-4o + Supabase RAG
Hi! I’m Amanda, a creator of intelligent automations using n8n and Make. I’ve been building AI-powered workflows for over 2 years, always focused on usability and innovation. This one here is very spe
This advanced n8n workflow automates the full lead enrichment, qualification, and personalized outreach process tailored specifically for the B2B real estate sector. Integrating top platforms like Api