-
-
Save alnutile/f23c0311e7e2aad40747ccf21ad4732d to your computer and use it in GitHub Desktop.
Open Source LLMS Are They Any Good
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "nodes": [ | |
| { | |
| "parameters": {}, | |
| "type": "n8n-nodes-base.manualTrigger", | |
| "typeVersion": 1, | |
| "position": [ | |
| -860, | |
| 720 | |
| ], | |
| "id": "a042e5e5-2031-4235-9e7c-551fe694c8d3", | |
| "name": "When clicking ‘Test workflow’" | |
| }, | |
| { | |
| "parameters": { | |
| "owner": { | |
| "__rl": true, | |
| "value": "alfred-nutile-inc", | |
| "mode": "list", | |
| "cachedResultName": "alfred-nutile-inc", | |
| "cachedResultUrl": "https://github.com/alfred-nutile-inc" | |
| }, | |
| "repository": { | |
| "__rl": true, | |
| "value": "pet-paintings", | |
| "mode": "list", | |
| "cachedResultName": "pet-paintings", | |
| "cachedResultUrl": "https://github.com/alfred-nutile-inc/pet-paintings" | |
| }, | |
| "events": [ | |
| "pull_request" | |
| ], | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.githubTrigger", | |
| "typeVersion": 1, | |
| "position": [ | |
| -880, | |
| 1000 | |
| ], | |
| "id": "a644b9e4-749e-421b-b326-dca0ff4b65b6", | |
| "name": "Github Trigger", | |
| "webhookId": "14568d6d-48a1-4117-b3f5-40518a44b71a", | |
| "credentials": { | |
| "githubApi": { | |
| "id": "ewDwgI1cdsIsvjTw", | |
| "name": "GitHub account" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "command": "=rm -rf /tmp/{{ $('Github Trigger').item.json.body.number }}\nmkdir /tmp/{{ $('Github Trigger').item.json.body.number }}" | |
| }, | |
| "type": "n8n-nodes-base.executeCommand", | |
| "typeVersion": 1, | |
| "position": [ | |
| -200, | |
| 20 | |
| ], | |
| "id": "5db09be5-a373-460e-b16c-828ee6ef479a", | |
| "name": "CleanUp" | |
| }, | |
| { | |
| "parameters": { | |
| "authentication": "gitPassword", | |
| "operation": "clone", | |
| "repositoryPath": "=/tmp/{{ $('Github Trigger').item.json.body.number }}/{{ $('vars').item.json.repo_name }}", | |
| "sourceRepository": "={{ $('Github Trigger').item.json.body.repository.clone_url }}" | |
| }, | |
| "type": "n8n-nodes-base.git", | |
| "typeVersion": 1, | |
| "position": [ | |
| -340, | |
| 280 | |
| ], | |
| "id": "25c3e1b0-b5ec-4107-bc4b-6c07d51a52fc", | |
| "name": "Git", | |
| "credentials": { | |
| "gitPassword": { | |
| "id": "oaK2lboA4IlMHCFk", | |
| "name": "Git account" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "f34c5b78-37b4-457b-ba23-0e5eb850ad07", | |
| "name": "repo_name", | |
| "value": "pet-paintings", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "285f08f1-3573-427f-9a20-c7120f053e4f", | |
| "name": "site_url", | |
| "value": "https://petwatercolors.studio/", | |
| "type": "string" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.set", | |
| "typeVersion": 3.4, | |
| "position": [ | |
| -340, | |
| 20 | |
| ], | |
| "id": "77d82efe-9c6e-4760-ae00-f5406063d13d", | |
| "name": "vars" | |
| }, | |
| { | |
| "parameters": { | |
| "command": "=cd /tmp/{{ $('Github Trigger').item.json.body.number }}/{{ $('vars').first().json.repo_name }}\ngit checkout {{ $('Github Trigger').item.json.body.pull_request.head.ref }}\nnpm install repomix" | |
| }, | |
| "type": "n8n-nodes-base.executeCommand", | |
| "typeVersion": 1, | |
| "position": [ | |
| -140, | |
| 280 | |
| ], | |
| "id": "f1ccad96-31ca-43d3-8d18-b3b6389d61fe", | |
| "name": "InstallRepoMix", | |
| "alwaysOutputData": true | |
| }, | |
| { | |
| "parameters": { | |
| "command": "=cd /tmp/{{ $('Github Trigger').item.json.body.number }}/{{ $('vars').first().json.repo_name }}\nnpx repomix --style markdown --ignore \"node_modules\" --compress " | |
| }, | |
| "type": "n8n-nodes-base.executeCommand", | |
| "typeVersion": 1, | |
| "position": [ | |
| -340, | |
| 520 | |
| ], | |
| "id": "06cabcfb-456b-40af-9947-6a6de6e19c67", | |
| "name": "RunRepoMix", | |
| "alwaysOutputData": true | |
| }, | |
| { | |
| "parameters": { | |
| "fileSelector": "=/tmp/{{ $('Github Trigger').item.json.body.number }}/{{ $('vars').first().json.repo_name}}/repomix-output.md", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.readWriteFile", | |
| "typeVersion": 1, | |
| "position": [ | |
| -160, | |
| 520 | |
| ], | |
| "id": "9fc51bb6-c1fd-4cc3-b91b-0d05f5a6cc44", | |
| "name": "Read/Write Files from Disk" | |
| }, | |
| { | |
| "parameters": { | |
| "operation": "text", | |
| "destinationKey": "repomix", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.extractFromFile", | |
| "typeVersion": 1, | |
| "position": [ | |
| -340, | |
| 760 | |
| ], | |
| "id": "f48385aa-d6ce-439c-b48a-fafecf838198", | |
| "name": "RepoMix" | |
| }, | |
| { | |
| "parameters": { | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.splitInBatches", | |
| "typeVersion": 3, | |
| "position": [ | |
| 560, | |
| 1120 | |
| ], | |
| "id": "1cc5e70c-13c6-4fba-a6b2-b1b808364695", | |
| "name": "Loop Over Items" | |
| }, | |
| { | |
| "parameters": { | |
| "owner": { | |
| "__rl": true, | |
| "value": "={{ $('Github Trigger').item.json.body.repository.owner.login }}", | |
| "mode": "name" | |
| }, | |
| "repository": { | |
| "__rl": true, | |
| "value": "={{ $('Github Trigger').item.json.body.repository.name }}", | |
| "mode": "name" | |
| }, | |
| "title": "={{ $json.issue_title }}", | |
| "body": "={{ $json.issue_details }}", | |
| "labels": [ | |
| { | |
| "label": "agentic" | |
| } | |
| ], | |
| "assignees": [ | |
| { | |
| "assignee": "={{ $('Github Trigger').item.json.body.pull_request.user.login }}" | |
| } | |
| ] | |
| }, | |
| "type": "n8n-nodes-base.github", | |
| "typeVersion": 1.1, | |
| "position": [ | |
| 720, | |
| 1300 | |
| ], | |
| "id": "252f6e0d-3f75-499d-8e0d-d90069e7d8e8", | |
| "name": "GitHub", | |
| "webhookId": "41ace1cb-accc-4a0a-8d99-ae8428cc1099", | |
| "credentials": { | |
| "githubApi": { | |
| "id": "9BTzUJnX3cOzKlSj", | |
| "name": "AlfredNutileInfoOrg" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "aggregate": "aggregateAllItemData", | |
| "include": "specifiedFields", | |
| "fieldsToInclude": "title,body", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.aggregate", | |
| "typeVersion": 1, | |
| "position": [ | |
| 80, | |
| 760 | |
| ], | |
| "id": "70bb6637-6d88-4e32-8b73-0b380e6e139d", | |
| "name": "Aggregate" | |
| }, | |
| { | |
| "parameters": { | |
| "resource": "repository", | |
| "owner": { | |
| "__rl": true, | |
| "value": "={{ $('Github Trigger').item.json.body.repository.owner.login }}", | |
| "mode": "name" | |
| }, | |
| "repository": { | |
| "__rl": true, | |
| "value": "={{ $('Github Trigger').item.json.body.repository.name }}", | |
| "mode": "name" | |
| }, | |
| "limit": 10, | |
| "getRepositoryIssuesFilters": {} | |
| }, | |
| "type": "n8n-nodes-base.github", | |
| "typeVersion": 1.1, | |
| "position": [ | |
| -140, | |
| 760 | |
| ], | |
| "id": "e89464ac-0d97-4924-bd89-2cea2553bc4f", | |
| "name": "GetIssues", | |
| "webhookId": "623d8b37-06aa-4aaf-8ee6-bc3bc69e8510", | |
| "alwaysOutputData": true, | |
| "credentials": { | |
| "githubApi": { | |
| "id": "9BTzUJnX3cOzKlSj", | |
| "name": "AlfredNutileInfoOrg" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "fieldsToSummarize": { | |
| "values": [ | |
| { | |
| "aggregation": "concatenate", | |
| "field": "data" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.summarize", | |
| "typeVersion": 1.1, | |
| "position": [ | |
| 300, | |
| 760 | |
| ], | |
| "id": "51748ec5-a602-4aa2-b632-078b8b8f9adf", | |
| "name": "Issues" | |
| }, | |
| { | |
| "parameters": { | |
| "fieldToSplitOut": "output", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.splitOut", | |
| "typeVersion": 1, | |
| "position": [ | |
| 340, | |
| 1120 | |
| ], | |
| "id": "b97d931c-3d89-486e-a36e-b78cb3ead3ac", | |
| "name": "Split Out" | |
| }, | |
| { | |
| "parameters": { | |
| "aggregate": "aggregateAllItemData", | |
| "include": "specifiedFields", | |
| "fieldsToInclude": "title,number,body", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.aggregate", | |
| "typeVersion": 1, | |
| "position": [ | |
| 740, | |
| 1060 | |
| ], | |
| "id": "1b3fcd60-a212-4335-975d-e7fdf9a392a6", | |
| "name": "Aggregate1" | |
| }, | |
| { | |
| "parameters": { | |
| "fieldsToSummarize": { | |
| "values": [ | |
| { | |
| "aggregation": "concatenate", | |
| "field": "data" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.summarize", | |
| "typeVersion": 1.1, | |
| "position": [ | |
| 960, | |
| 1060 | |
| ], | |
| "id": "822a0fba-46ef-422c-a8f1-c8b874dbde88", | |
| "name": "Summarize" | |
| }, | |
| { | |
| "parameters": { | |
| "content": "Links\nhttps://github.com/alfred-nutile-inc/pet-paintings\n\nhttps://app.excalidraw.com/s/9rZJm2HlJOy/rTK9dZ8F9d\n\nhttps://github.com/alfred-nutile-inc/pet-paintings/issues", | |
| "height": 180, | |
| "width": 660 | |
| }, | |
| "type": "n8n-nodes-base.stickyNote", | |
| "typeVersion": 1, | |
| "position": [ | |
| 0, | |
| 0 | |
| ], | |
| "id": "32928225-1bba-4a6f-8928-318bc446e57c", | |
| "name": "Sticky Note" | |
| }, | |
| { | |
| "parameters": { | |
| "resource": "review", | |
| "owner": { | |
| "__rl": true, | |
| "value": "={{ $('Github Trigger').item.json.body.pull_request.head.user.login }}", | |
| "mode": "name" | |
| }, | |
| "repository": { | |
| "__rl": true, | |
| "value": "={{ $('Github Trigger').item.json.body.pull_request.base.repo.name }}", | |
| "mode": "name" | |
| }, | |
| "pullRequestNumber": "={{ $('Github Trigger').item.json.body.number }}", | |
| "event": "comment", | |
| "body": "={{ $json.message.content.comment }}", | |
| "additionalFields": {} | |
| }, | |
| "type": "n8n-nodes-base.github", | |
| "typeVersion": 1.1, | |
| "position": [ | |
| 980, | |
| 1360 | |
| ], | |
| "id": "ded38c43-e170-464a-a7bf-c742f5790a8c", | |
| "name": "GitHub1", | |
| "webhookId": "2f8adb97-4b20-4ae2-bdbd-836094c6fa88", | |
| "credentials": { | |
| "githubApi": { | |
| "id": "9BTzUJnX3cOzKlSj", | |
| "name": "AlfredNutileInfoOrg" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "modelId": { | |
| "__rl": true, | |
| "value": "gpt-4.1-mini", | |
| "mode": "list", | |
| "cachedResultName": "GPT-4.1-MINI" | |
| }, | |
| "messages": { | |
| "values": [ | |
| { | |
| "content": "={{ $json.concatenated_data }}" | |
| }, | |
| { | |
| "content": "=Your role is to take all of these incoming issues that the AI before you suggested based on the code base it saw and just summarize these and then link to the particular pull request in the pull request issues so the user, sorry, to the pull request issues so the user can see all the issues.\n\n\n## Links to share with them\n\n**Issues**\nhttps://github.com/{{ $('Github Trigger').item.json.body.pull_request.head.repo.full_name }}/issues \n\n## ALWAYS\nLink to the related issue by using the issue id and the known url for github issues\n\n## Format Output\n\nMarkdown and in this form\n\n{\n \"comment\": \"<string>\"\n}", | |
| "role": "system" | |
| } | |
| ] | |
| }, | |
| "jsonOutput": true, | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.openAi", | |
| "typeVersion": 1.8, | |
| "position": [ | |
| 1180, | |
| 1060 | |
| ], | |
| "id": "c95188ee-7e03-4d5f-a025-e0262b211693", | |
| "name": "OpenAI", | |
| "credentials": { | |
| "openAiApi": { | |
| "id": "TqEEu0VRFjao8YS9", | |
| "name": "DailyMasterToken" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "conditions": { | |
| "options": { | |
| "caseSensitive": true, | |
| "leftValue": "", | |
| "typeValidation": "strict", | |
| "version": 2 | |
| }, | |
| "conditions": [ | |
| { | |
| "id": "4ef248d5-31b7-4d32-b3c2-6722044a90f4", | |
| "leftValue": "={{ $json.body.action }}", | |
| "rightValue": "opened", | |
| "operator": { | |
| "type": "string", | |
| "operation": "equals", | |
| "name": "filter.operator.equals" | |
| } | |
| } | |
| ], | |
| "combinator": "and" | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.if", | |
| "typeVersion": 2.2, | |
| "position": [ | |
| -580, | |
| 840 | |
| ], | |
| "id": "5f9386ba-aac5-40a4-8fb0-1403271e91b4", | |
| "name": "If" | |
| }, | |
| { | |
| "parameters": { | |
| "promptType": "define", | |
| "text": "=## Results of SEO Agent\n{{ $json.output }}\n\n## Results of Code Agent Review\n{{ $('CodeReviewAgent').first().json.output }}\n\n## Past Issues to prevent repot\n{{ $('Issues').first().json.concatenated_data }}\n", | |
| "options": { | |
| "systemMessage": "=Date: {{ $now }}\n\nYour role is to help this pull request meet the standards of this project and rules. \n\nUsing the Rules the code base has and the tools you have attached to you give a full review of the pull request so and build out an \"issue\" list that can be placed on the github repo related to this project.\n\n## ALWAYS\nMake sure to use the attached tools for specific checks. If the tool is not provided then ignore that check for now as we build up the tooling.\n\n## ALWAYS USE TOOLS\n**Tools**\nseo-tool for checking with our specific seo rules\n\ncode-standard-checker for checking with our specific code rules\n\n\n## FORMAT\n\n[\n {\n \"issue_title\": \"<string>\",\n \"issue_details\": \"<string>\",\n \"issue_type:\": \"<string: security, code, style, seo>\",\n \"urgency\": \"<string: high, medium, low>\"\n },\n {\n \"issue_title\": \"<string>\",\n \"issue_details\": \"<string>\",\n \"issue_type:\": \"<string: security, code, style, seo>\",\n \"urgency\": \"<string: high, medium, low>\"\n }\n]" | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.agent", | |
| "typeVersion": 1.9, | |
| "position": [ | |
| -360, | |
| 1120 | |
| ], | |
| "id": "1387519e-d0f5-467c-9163-2881f0ef4d0a", | |
| "name": "AI Agent" | |
| }, | |
| { | |
| "parameters": { | |
| "model": { | |
| "__rl": true, | |
| "value": "gpt-4.1-mini", | |
| "mode": "list", | |
| "cachedResultName": "gpt-4.1-mini" | |
| }, | |
| "options": { | |
| "responseFormat": "json_object" | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", | |
| "typeVersion": 1.2, | |
| "position": [ | |
| -500, | |
| 1400 | |
| ], | |
| "id": "667695b9-0cbd-4936-afd6-b110c1f1f1ad", | |
| "name": "OpenAI Chat Model1", | |
| "credentials": { | |
| "openAiApi": { | |
| "id": "TqEEu0VRFjao8YS9", | |
| "name": "DailyMasterToken" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "workflowId": { | |
| "__rl": true, | |
| "value": "b0uCXBIp8cfBiPKp", | |
| "mode": "list", | |
| "cachedResultName": "tool-code-review-open" | |
| }, | |
| "workflowInputs": { | |
| "mappingMode": "defineBelow", | |
| "value": { | |
| "repomix": "={{ $('RepoMix').first().json.repomix }}" | |
| }, | |
| "matchingColumns": [ | |
| "repomix" | |
| ], | |
| "schema": [ | |
| { | |
| "id": "repomix", | |
| "displayName": "repomix", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "canBeUsedToMatch": true, | |
| "type": "string", | |
| "removed": false | |
| } | |
| ], | |
| "attemptToConvertTypes": false, | |
| "convertFieldsToString": true | |
| }, | |
| "options": { | |
| "waitForSubWorkflow": true | |
| } | |
| }, | |
| "type": "n8n-nodes-base.executeWorkflow", | |
| "typeVersion": 1.2, | |
| "position": [ | |
| 540, | |
| 760 | |
| ], | |
| "id": "a40b5aa0-452a-42a7-b3d5-cef802cfa546", | |
| "name": "CodeReviewAgent" | |
| }, | |
| { | |
| "parameters": { | |
| "content": "## TODO\n * [ ] Supabase RLS using MCP to connect to the system\n * [ ] Browser User QA for End 2 End\n * [ ] Owasp Test\n * [ ] Changelog\n * [ ] Readme update\n * [ ] ACL Review", | |
| "height": 280, | |
| "width": 660, | |
| "color": 3 | |
| }, | |
| "type": "n8n-nodes-base.stickyNote", | |
| "typeVersion": 1, | |
| "position": [ | |
| 1020, | |
| 720 | |
| ], | |
| "id": "f42d3f1e-005e-4db5-975b-572a78b9c981", | |
| "name": "Sticky Note1" | |
| }, | |
| { | |
| "parameters": { | |
| "workflowId": { | |
| "__rl": true, | |
| "value": "b0uCXBIp8cfBiPKp", | |
| "mode": "list", | |
| "cachedResultName": "tool-code-review-open" | |
| }, | |
| "workflowInputs": { | |
| "mappingMode": "defineBelow", | |
| "value": { | |
| "repomix": "={{ $('RepoMix').first().json.repomix }}" | |
| }, | |
| "matchingColumns": [ | |
| "repomix" | |
| ], | |
| "schema": [ | |
| { | |
| "id": "repomix", | |
| "displayName": "repomix", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "canBeUsedToMatch": true, | |
| "type": "string" | |
| } | |
| ], | |
| "attemptToConvertTypes": false, | |
| "convertFieldsToString": true | |
| }, | |
| "options": { | |
| "waitForSubWorkflow": true | |
| } | |
| }, | |
| "type": "n8n-nodes-base.executeWorkflow", | |
| "typeVersion": 1.2, | |
| "position": [ | |
| 740, | |
| 760 | |
| ], | |
| "id": "487ed69e-d55e-4de5-867a-fbec38621d84", | |
| "name": "CodeSeoAgent" | |
| }, | |
| { | |
| "parameters": { | |
| "model": "qwen3:8b", | |
| "options": { | |
| "format": "json" | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.lmChatOllama", | |
| "typeVersion": 1, | |
| "position": [ | |
| -220, | |
| 1420 | |
| ], | |
| "id": "67a24e5f-fb52-4ed1-a83b-e43dd03c93e5", | |
| "name": "Ollama Chat Model", | |
| "credentials": { | |
| "ollamaApi": { | |
| "id": "83hE7MHI8l0FWzkm", | |
| "name": "Ollama account" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "promptType": "define", | |
| "text": "={{ $json.output }}", | |
| "options": { | |
| "systemMessage": "Your only role is to return valid JSON fixing it as needed so it works.\n\n### FORMAT\n\n[\n {\n \"issue_title\": \"<string>\",\n \"issue_details\": \"<string>\",\n \"issue_type:\": \"<string: security, code, style, seo>\",\n \"urgency\": \"<string: high, medium, low>\"\n },\n {\n \"issue_title\": \"<string>\",\n \"issue_details\": \"<string>\",\n \"issue_type:\": \"<string: security, code, style, seo>\",\n \"urgency\": \"<string: high, medium, low>\"\n }\n]" | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.agent", | |
| "typeVersion": 1.9, | |
| "position": [ | |
| 0, | |
| 1120 | |
| ], | |
| "id": "ae91bcb5-d54c-414f-9a90-87653f9d3a97", | |
| "name": "AI Agent1" | |
| } | |
| ], | |
| "connections": { | |
| "When clicking ‘Test workflow’": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "vars", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Github Trigger": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "If", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "CleanUp": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Git", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Git": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "InstallRepoMix", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "vars": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "CleanUp", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "InstallRepoMix": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "RunRepoMix", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "RunRepoMix": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Read/Write Files from Disk", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Read/Write Files from Disk": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "RepoMix", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "RepoMix": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "GetIssues", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Loop Over Items": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Aggregate1", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ], | |
| [ | |
| { | |
| "node": "GitHub", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "GitHub": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Loop Over Items", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Aggregate": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Issues", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "GetIssues": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Aggregate", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Issues": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "CodeReviewAgent", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Split Out": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Loop Over Items", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Aggregate1": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Summarize", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Summarize": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "OpenAI", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "OpenAI": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "GitHub1", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "If": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "vars", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "AI Agent": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "AI Agent1", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "OpenAI Chat Model1": { | |
| "ai_languageModel": [ | |
| [] | |
| ] | |
| }, | |
| "CodeReviewAgent": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "CodeSeoAgent", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "CodeSeoAgent": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Ollama Chat Model": { | |
| "ai_languageModel": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_languageModel", | |
| "index": 0 | |
| }, | |
| { | |
| "node": "AI Agent1", | |
| "type": "ai_languageModel", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "AI Agent1": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Split Out", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| } | |
| }, | |
| "pinData": { | |
| "Github Trigger": [ | |
| { | |
| "body": { | |
| "action": "opened", | |
| "number": 36, | |
| "pull_request": { | |
| "url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/pulls/36", | |
| "id": 2659634808, | |
| "node_id": "PR_kwDOPHek3s6ehs54", | |
| "html_url": "https://github.com/alfred-nutile-inc/pet-paintings/pull/36", | |
| "diff_url": "https://github.com/alfred-nutile-inc/pet-paintings/pull/36.diff", | |
| "patch_url": "https://github.com/alfred-nutile-inc/pet-paintings/pull/36.patch", | |
| "issue_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues/36", | |
| "number": 36, | |
| "state": "open", | |
| "locked": false, | |
| "title": "Update README.md", | |
| "user": { | |
| "login": "alnutile", | |
| "id": 365385, | |
| "node_id": "MDQ6VXNlcjM2NTM4NQ==", | |
| "avatar_url": "https://avatars.githubusercontent.com/u/365385?v=4", | |
| "gravatar_id": "", | |
| "url": "https://api.github.com/users/alnutile", | |
| "html_url": "https://github.com/alnutile", | |
| "followers_url": "https://api.github.com/users/alnutile/followers", | |
| "following_url": "https://api.github.com/users/alnutile/following{/other_user}", | |
| "gists_url": "https://api.github.com/users/alnutile/gists{/gist_id}", | |
| "starred_url": "https://api.github.com/users/alnutile/starred{/owner}{/repo}", | |
| "subscriptions_url": "https://api.github.com/users/alnutile/subscriptions", | |
| "organizations_url": "https://api.github.com/users/alnutile/orgs", | |
| "repos_url": "https://api.github.com/users/alnutile/repos", | |
| "events_url": "https://api.github.com/users/alnutile/events{/privacy}", | |
| "received_events_url": "https://api.github.com/users/alnutile/received_events", | |
| "type": "User", | |
| "user_view_type": "public", | |
| "site_admin": false | |
| }, | |
| "body": null, | |
| "created_at": "2025-07-11T16:11:56Z", | |
| "updated_at": "2025-07-11T16:11:56Z", | |
| "closed_at": null, | |
| "merged_at": null, | |
| "merge_commit_sha": null, | |
| "assignee": null, | |
| "assignees": [], | |
| "requested_reviewers": [], | |
| "requested_teams": [], | |
| "labels": [], | |
| "milestone": null, | |
| "draft": false, | |
| "commits_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/pulls/36/commits", | |
| "review_comments_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/pulls/36/comments", | |
| "review_comment_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/pulls/comments{/number}", | |
| "comments_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues/36/comments", | |
| "statuses_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/statuses/8053c8a5dc287ebff48f76f7fa2ce2ac8ab92844", | |
| "head": { | |
| "label": "alfred-nutile-inc:test-002", | |
| "ref": "test-002", | |
| "sha": "8053c8a5dc287ebff48f76f7fa2ce2ac8ab92844", | |
| "user": { | |
| "login": "alfred-nutile-inc", | |
| "id": 8970227, | |
| "node_id": "MDEyOk9yZ2FuaXphdGlvbjg5NzAyMjc=", | |
| "avatar_url": "https://avatars.githubusercontent.com/u/8970227?v=4", | |
| "gravatar_id": "", | |
| "url": "https://api.github.com/users/alfred-nutile-inc", | |
| "html_url": "https://github.com/alfred-nutile-inc", | |
| "followers_url": "https://api.github.com/users/alfred-nutile-inc/followers", | |
| "following_url": "https://api.github.com/users/alfred-nutile-inc/following{/other_user}", | |
| "gists_url": "https://api.github.com/users/alfred-nutile-inc/gists{/gist_id}", | |
| "starred_url": "https://api.github.com/users/alfred-nutile-inc/starred{/owner}{/repo}", | |
| "subscriptions_url": "https://api.github.com/users/alfred-nutile-inc/subscriptions", | |
| "organizations_url": "https://api.github.com/users/alfred-nutile-inc/orgs", | |
| "repos_url": "https://api.github.com/users/alfred-nutile-inc/repos", | |
| "events_url": "https://api.github.com/users/alfred-nutile-inc/events{/privacy}", | |
| "received_events_url": "https://api.github.com/users/alfred-nutile-inc/received_events", | |
| "type": "Organization", | |
| "user_view_type": "public", | |
| "site_admin": false | |
| }, | |
| "repo": { | |
| "id": 1014473950, | |
| "node_id": "R_kgDOPHek3g", | |
| "name": "pet-paintings", | |
| "full_name": "alfred-nutile-inc/pet-paintings", | |
| "private": true, | |
| "owner": { | |
| "login": "alfred-nutile-inc", | |
| "id": 8970227, | |
| "node_id": "MDEyOk9yZ2FuaXphdGlvbjg5NzAyMjc=", | |
| "avatar_url": "https://avatars.githubusercontent.com/u/8970227?v=4", | |
| "gravatar_id": "", | |
| "url": "https://api.github.com/users/alfred-nutile-inc", | |
| "html_url": "https://github.com/alfred-nutile-inc", | |
| "followers_url": "https://api.github.com/users/alfred-nutile-inc/followers", | |
| "following_url": "https://api.github.com/users/alfred-nutile-inc/following{/other_user}", | |
| "gists_url": "https://api.github.com/users/alfred-nutile-inc/gists{/gist_id}", | |
| "starred_url": "https://api.github.com/users/alfred-nutile-inc/starred{/owner}{/repo}", | |
| "subscriptions_url": "https://api.github.com/users/alfred-nutile-inc/subscriptions", | |
| "organizations_url": "https://api.github.com/users/alfred-nutile-inc/orgs", | |
| "repos_url": "https://api.github.com/users/alfred-nutile-inc/repos", | |
| "events_url": "https://api.github.com/users/alfred-nutile-inc/events{/privacy}", | |
| "received_events_url": "https://api.github.com/users/alfred-nutile-inc/received_events", | |
| "type": "Organization", | |
| "user_view_type": "public", | |
| "site_admin": false | |
| }, | |
| "html_url": "https://github.com/alfred-nutile-inc/pet-paintings", | |
| "description": "Get a painting of your pet", | |
| "fork": false, | |
| "url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings", | |
| "forks_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/forks", | |
| "keys_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/keys{/key_id}", | |
| "collaborators_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/collaborators{/collaborator}", | |
| "teams_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/teams", | |
| "hooks_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/hooks", | |
| "issue_events_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues/events{/number}", | |
| "events_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/events", | |
| "assignees_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/assignees{/user}", | |
| "branches_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/branches{/branch}", | |
| "tags_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/tags", | |
| "blobs_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/blobs{/sha}", | |
| "git_tags_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/tags{/sha}", | |
| "git_refs_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/refs{/sha}", | |
| "trees_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/trees{/sha}", | |
| "statuses_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/statuses/{sha}", | |
| "languages_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/languages", | |
| "stargazers_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/stargazers", | |
| "contributors_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/contributors", | |
| "subscribers_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/subscribers", | |
| "subscription_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/subscription", | |
| "commits_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/commits{/sha}", | |
| "git_commits_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/commits{/sha}", | |
| "comments_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/comments{/number}", | |
| "issue_comment_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues/comments{/number}", | |
| "contents_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/contents/{+path}", | |
| "compare_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/compare/{base}...{head}", | |
| "merges_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/merges", | |
| "archive_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/{archive_format}{/ref}", | |
| "downloads_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/downloads", | |
| "issues_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues{/number}", | |
| "pulls_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/pulls{/number}", | |
| "milestones_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/milestones{/number}", | |
| "notifications_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/notifications{?since,all,participating}", | |
| "labels_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/labels{/name}", | |
| "releases_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/releases{/id}", | |
| "deployments_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/deployments", | |
| "created_at": "2025-07-05T19:50:47Z", | |
| "updated_at": "2025-07-09T15:45:37Z", | |
| "pushed_at": "2025-07-11T16:11:53Z", | |
| "git_url": "git://github.com/alfred-nutile-inc/pet-paintings.git", | |
| "ssh_url": "git@github.com:alfred-nutile-inc/pet-paintings.git", | |
| "clone_url": "https://github.com/alfred-nutile-inc/pet-paintings.git", | |
| "svn_url": "https://github.com/alfred-nutile-inc/pet-paintings", | |
| "homepage": null, | |
| "size": 293, | |
| "stargazers_count": 0, | |
| "watchers_count": 0, | |
| "language": "TypeScript", | |
| "has_issues": true, | |
| "has_projects": true, | |
| "has_downloads": true, | |
| "has_wiki": false, | |
| "has_pages": false, | |
| "has_discussions": false, | |
| "forks_count": 0, | |
| "mirror_url": null, | |
| "archived": false, | |
| "disabled": false, | |
| "open_issues_count": 1, | |
| "license": null, | |
| "allow_forking": true, | |
| "is_template": false, | |
| "web_commit_signoff_required": false, | |
| "topics": [], | |
| "visibility": "private", | |
| "forks": 0, | |
| "open_issues": 1, | |
| "watchers": 0, | |
| "default_branch": "main", | |
| "allow_squash_merge": true, | |
| "allow_merge_commit": true, | |
| "allow_rebase_merge": true, | |
| "allow_auto_merge": false, | |
| "delete_branch_on_merge": false, | |
| "allow_update_branch": false, | |
| "use_squash_pr_title_as_default": false, | |
| "squash_merge_commit_message": "COMMIT_MESSAGES", | |
| "squash_merge_commit_title": "COMMIT_OR_PR_TITLE", | |
| "merge_commit_message": "PR_TITLE", | |
| "merge_commit_title": "MERGE_MESSAGE" | |
| } | |
| }, | |
| "base": { | |
| "label": "alfred-nutile-inc:staging", | |
| "ref": "staging", | |
| "sha": "e25b3377952f3ef6780807855cc8d01da60af2cc", | |
| "user": { | |
| "login": "alfred-nutile-inc", | |
| "id": 8970227, | |
| "node_id": "MDEyOk9yZ2FuaXphdGlvbjg5NzAyMjc=", | |
| "avatar_url": "https://avatars.githubusercontent.com/u/8970227?v=4", | |
| "gravatar_id": "", | |
| "url": "https://api.github.com/users/alfred-nutile-inc", | |
| "html_url": "https://github.com/alfred-nutile-inc", | |
| "followers_url": "https://api.github.com/users/alfred-nutile-inc/followers", | |
| "following_url": "https://api.github.com/users/alfred-nutile-inc/following{/other_user}", | |
| "gists_url": "https://api.github.com/users/alfred-nutile-inc/gists{/gist_id}", | |
| "starred_url": "https://api.github.com/users/alfred-nutile-inc/starred{/owner}{/repo}", | |
| "subscriptions_url": "https://api.github.com/users/alfred-nutile-inc/subscriptions", | |
| "organizations_url": "https://api.github.com/users/alfred-nutile-inc/orgs", | |
| "repos_url": "https://api.github.com/users/alfred-nutile-inc/repos", | |
| "events_url": "https://api.github.com/users/alfred-nutile-inc/events{/privacy}", | |
| "received_events_url": "https://api.github.com/users/alfred-nutile-inc/received_events", | |
| "type": "Organization", | |
| "user_view_type": "public", | |
| "site_admin": false | |
| }, | |
| "repo": { | |
| "id": 1014473950, | |
| "node_id": "R_kgDOPHek3g", | |
| "name": "pet-paintings", | |
| "full_name": "alfred-nutile-inc/pet-paintings", | |
| "private": true, | |
| "owner": { | |
| "login": "alfred-nutile-inc", | |
| "id": 8970227, | |
| "node_id": "MDEyOk9yZ2FuaXphdGlvbjg5NzAyMjc=", | |
| "avatar_url": "https://avatars.githubusercontent.com/u/8970227?v=4", | |
| "gravatar_id": "", | |
| "url": "https://api.github.com/users/alfred-nutile-inc", | |
| "html_url": "https://github.com/alfred-nutile-inc", | |
| "followers_url": "https://api.github.com/users/alfred-nutile-inc/followers", | |
| "following_url": "https://api.github.com/users/alfred-nutile-inc/following{/other_user}", | |
| "gists_url": "https://api.github.com/users/alfred-nutile-inc/gists{/gist_id}", | |
| "starred_url": "https://api.github.com/users/alfred-nutile-inc/starred{/owner}{/repo}", | |
| "subscriptions_url": "https://api.github.com/users/alfred-nutile-inc/subscriptions", | |
| "organizations_url": "https://api.github.com/users/alfred-nutile-inc/orgs", | |
| "repos_url": "https://api.github.com/users/alfred-nutile-inc/repos", | |
| "events_url": "https://api.github.com/users/alfred-nutile-inc/events{/privacy}", | |
| "received_events_url": "https://api.github.com/users/alfred-nutile-inc/received_events", | |
| "type": "Organization", | |
| "user_view_type": "public", | |
| "site_admin": false | |
| }, | |
| "html_url": "https://github.com/alfred-nutile-inc/pet-paintings", | |
| "description": "Get a painting of your pet", | |
| "fork": false, | |
| "url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings", | |
| "forks_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/forks", | |
| "keys_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/keys{/key_id}", | |
| "collaborators_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/collaborators{/collaborator}", | |
| "teams_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/teams", | |
| "hooks_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/hooks", | |
| "issue_events_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues/events{/number}", | |
| "events_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/events", | |
| "assignees_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/assignees{/user}", | |
| "branches_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/branches{/branch}", | |
| "tags_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/tags", | |
| "blobs_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/blobs{/sha}", | |
| "git_tags_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/tags{/sha}", | |
| "git_refs_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/refs{/sha}", | |
| "trees_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/trees{/sha}", | |
| "statuses_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/statuses/{sha}", | |
| "languages_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/languages", | |
| "stargazers_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/stargazers", | |
| "contributors_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/contributors", | |
| "subscribers_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/subscribers", | |
| "subscription_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/subscription", | |
| "commits_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/commits{/sha}", | |
| "git_commits_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/commits{/sha}", | |
| "comments_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/comments{/number}", | |
| "issue_comment_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues/comments{/number}", | |
| "contents_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/contents/{+path}", | |
| "compare_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/compare/{base}...{head}", | |
| "merges_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/merges", | |
| "archive_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/{archive_format}{/ref}", | |
| "downloads_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/downloads", | |
| "issues_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues{/number}", | |
| "pulls_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/pulls{/number}", | |
| "milestones_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/milestones{/number}", | |
| "notifications_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/notifications{?since,all,participating}", | |
| "labels_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/labels{/name}", | |
| "releases_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/releases{/id}", | |
| "deployments_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/deployments", | |
| "created_at": "2025-07-05T19:50:47Z", | |
| "updated_at": "2025-07-09T15:45:37Z", | |
| "pushed_at": "2025-07-11T16:11:53Z", | |
| "git_url": "git://github.com/alfred-nutile-inc/pet-paintings.git", | |
| "ssh_url": "git@github.com:alfred-nutile-inc/pet-paintings.git", | |
| "clone_url": "https://github.com/alfred-nutile-inc/pet-paintings.git", | |
| "svn_url": "https://github.com/alfred-nutile-inc/pet-paintings", | |
| "homepage": null, | |
| "size": 293, | |
| "stargazers_count": 0, | |
| "watchers_count": 0, | |
| "language": "TypeScript", | |
| "has_issues": true, | |
| "has_projects": true, | |
| "has_downloads": true, | |
| "has_wiki": false, | |
| "has_pages": false, | |
| "has_discussions": false, | |
| "forks_count": 0, | |
| "mirror_url": null, | |
| "archived": false, | |
| "disabled": false, | |
| "open_issues_count": 1, | |
| "license": null, | |
| "allow_forking": true, | |
| "is_template": false, | |
| "web_commit_signoff_required": false, | |
| "topics": [], | |
| "visibility": "private", | |
| "forks": 0, | |
| "open_issues": 1, | |
| "watchers": 0, | |
| "default_branch": "main", | |
| "allow_squash_merge": true, | |
| "allow_merge_commit": true, | |
| "allow_rebase_merge": true, | |
| "allow_auto_merge": false, | |
| "delete_branch_on_merge": false, | |
| "allow_update_branch": false, | |
| "use_squash_pr_title_as_default": false, | |
| "squash_merge_commit_message": "COMMIT_MESSAGES", | |
| "squash_merge_commit_title": "COMMIT_OR_PR_TITLE", | |
| "merge_commit_message": "PR_TITLE", | |
| "merge_commit_title": "MERGE_MESSAGE" | |
| } | |
| }, | |
| "_links": { | |
| "self": { | |
| "href": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/pulls/36" | |
| }, | |
| "html": { | |
| "href": "https://github.com/alfred-nutile-inc/pet-paintings/pull/36" | |
| }, | |
| "issue": { | |
| "href": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues/36" | |
| }, | |
| "comments": { | |
| "href": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues/36/comments" | |
| }, | |
| "review_comments": { | |
| "href": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/pulls/36/comments" | |
| }, | |
| "review_comment": { | |
| "href": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/pulls/comments{/number}" | |
| }, | |
| "commits": { | |
| "href": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/pulls/36/commits" | |
| }, | |
| "statuses": { | |
| "href": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/statuses/8053c8a5dc287ebff48f76f7fa2ce2ac8ab92844" | |
| } | |
| }, | |
| "author_association": "MEMBER", | |
| "auto_merge": null, | |
| "active_lock_reason": null, | |
| "merged": false, | |
| "mergeable": null, | |
| "rebaseable": null, | |
| "mergeable_state": "unknown", | |
| "merged_by": null, | |
| "comments": 0, | |
| "review_comments": 0, | |
| "maintainer_can_modify": false, | |
| "commits": 1, | |
| "additions": 2, | |
| "deletions": 0, | |
| "changed_files": 1 | |
| }, | |
| "repository": { | |
| "id": 1014473950, | |
| "node_id": "R_kgDOPHek3g", | |
| "name": "pet-paintings", | |
| "full_name": "alfred-nutile-inc/pet-paintings", | |
| "private": true, | |
| "owner": { | |
| "login": "alfred-nutile-inc", | |
| "id": 8970227, | |
| "node_id": "MDEyOk9yZ2FuaXphdGlvbjg5NzAyMjc=", | |
| "avatar_url": "https://avatars.githubusercontent.com/u/8970227?v=4", | |
| "gravatar_id": "", | |
| "url": "https://api.github.com/users/alfred-nutile-inc", | |
| "html_url": "https://github.com/alfred-nutile-inc", | |
| "followers_url": "https://api.github.com/users/alfred-nutile-inc/followers", | |
| "following_url": "https://api.github.com/users/alfred-nutile-inc/following{/other_user}", | |
| "gists_url": "https://api.github.com/users/alfred-nutile-inc/gists{/gist_id}", | |
| "starred_url": "https://api.github.com/users/alfred-nutile-inc/starred{/owner}{/repo}", | |
| "subscriptions_url": "https://api.github.com/users/alfred-nutile-inc/subscriptions", | |
| "organizations_url": "https://api.github.com/users/alfred-nutile-inc/orgs", | |
| "repos_url": "https://api.github.com/users/alfred-nutile-inc/repos", | |
| "events_url": "https://api.github.com/users/alfred-nutile-inc/events{/privacy}", | |
| "received_events_url": "https://api.github.com/users/alfred-nutile-inc/received_events", | |
| "type": "Organization", | |
| "user_view_type": "public", | |
| "site_admin": false | |
| }, | |
| "html_url": "https://github.com/alfred-nutile-inc/pet-paintings", | |
| "description": "Get a painting of your pet", | |
| "fork": false, | |
| "url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings", | |
| "forks_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/forks", | |
| "keys_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/keys{/key_id}", | |
| "collaborators_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/collaborators{/collaborator}", | |
| "teams_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/teams", | |
| "hooks_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/hooks", | |
| "issue_events_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues/events{/number}", | |
| "events_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/events", | |
| "assignees_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/assignees{/user}", | |
| "branches_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/branches{/branch}", | |
| "tags_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/tags", | |
| "blobs_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/blobs{/sha}", | |
| "git_tags_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/tags{/sha}", | |
| "git_refs_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/refs{/sha}", | |
| "trees_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/trees{/sha}", | |
| "statuses_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/statuses/{sha}", | |
| "languages_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/languages", | |
| "stargazers_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/stargazers", | |
| "contributors_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/contributors", | |
| "subscribers_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/subscribers", | |
| "subscription_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/subscription", | |
| "commits_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/commits{/sha}", | |
| "git_commits_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/git/commits{/sha}", | |
| "comments_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/comments{/number}", | |
| "issue_comment_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues/comments{/number}", | |
| "contents_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/contents/{+path}", | |
| "compare_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/compare/{base}...{head}", | |
| "merges_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/merges", | |
| "archive_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/{archive_format}{/ref}", | |
| "downloads_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/downloads", | |
| "issues_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/issues{/number}", | |
| "pulls_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/pulls{/number}", | |
| "milestones_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/milestones{/number}", | |
| "notifications_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/notifications{?since,all,participating}", | |
| "labels_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/labels{/name}", | |
| "releases_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/releases{/id}", | |
| "deployments_url": "https://api.github.com/repos/alfred-nutile-inc/pet-paintings/deployments", | |
| "created_at": "2025-07-05T19:50:47Z", | |
| "updated_at": "2025-07-09T15:45:37Z", | |
| "pushed_at": "2025-07-11T16:11:53Z", | |
| "git_url": "git://github.com/alfred-nutile-inc/pet-paintings.git", | |
| "ssh_url": "git@github.com:alfred-nutile-inc/pet-paintings.git", | |
| "clone_url": "https://github.com/alfred-nutile-inc/pet-paintings.git", | |
| "svn_url": "https://github.com/alfred-nutile-inc/pet-paintings", | |
| "homepage": null, | |
| "size": 293, | |
| "stargazers_count": 0, | |
| "watchers_count": 0, | |
| "language": "TypeScript", | |
| "has_issues": true, | |
| "has_projects": true, | |
| "has_downloads": true, | |
| "has_wiki": false, | |
| "has_pages": false, | |
| "has_discussions": false, | |
| "forks_count": 0, | |
| "mirror_url": null, | |
| "archived": false, | |
| "disabled": false, | |
| "open_issues_count": 1, | |
| "license": null, | |
| "allow_forking": true, | |
| "is_template": false, | |
| "web_commit_signoff_required": false, | |
| "topics": [], | |
| "visibility": "private", | |
| "forks": 0, | |
| "open_issues": 1, | |
| "watchers": 0, | |
| "default_branch": "main", | |
| "custom_properties": {} | |
| }, | |
| "organization": { | |
| "login": "alfred-nutile-inc", | |
| "id": 8970227, | |
| "node_id": "MDEyOk9yZ2FuaXphdGlvbjg5NzAyMjc=", | |
| "url": "https://api.github.com/orgs/alfred-nutile-inc", | |
| "repos_url": "https://api.github.com/orgs/alfred-nutile-inc/repos", | |
| "events_url": "https://api.github.com/orgs/alfred-nutile-inc/events", | |
| "hooks_url": "https://api.github.com/orgs/alfred-nutile-inc/hooks", | |
| "issues_url": "https://api.github.com/orgs/alfred-nutile-inc/issues", | |
| "members_url": "https://api.github.com/orgs/alfred-nutile-inc/members{/member}", | |
| "public_members_url": "https://api.github.com/orgs/alfred-nutile-inc/public_members{/member}", | |
| "avatar_url": "https://avatars.githubusercontent.com/u/8970227?v=4", | |
| "description": "Laravel, PHP, Developer" | |
| }, | |
| "sender": { | |
| "login": "alnutile", | |
| "id": 365385, | |
| "node_id": "MDQ6VXNlcjM2NTM4NQ==", | |
| "avatar_url": "https://avatars.githubusercontent.com/u/365385?v=4", | |
| "gravatar_id": "", | |
| "url": "https://api.github.com/users/alnutile", | |
| "html_url": "https://github.com/alnutile", | |
| "followers_url": "https://api.github.com/users/alnutile/followers", | |
| "following_url": "https://api.github.com/users/alnutile/following{/other_user}", | |
| "gists_url": "https://api.github.com/users/alnutile/gists{/gist_id}", | |
| "starred_url": "https://api.github.com/users/alnutile/starred{/owner}{/repo}", | |
| "subscriptions_url": "https://api.github.com/users/alnutile/subscriptions", | |
| "organizations_url": "https://api.github.com/users/alnutile/orgs", | |
| "repos_url": "https://api.github.com/users/alnutile/repos", | |
| "events_url": "https://api.github.com/users/alnutile/events{/privacy}", | |
| "received_events_url": "https://api.github.com/users/alnutile/received_events", | |
| "type": "User", | |
| "user_view_type": "public", | |
| "site_admin": false | |
| } | |
| }, | |
| "headers": { | |
| "host": "n8n-next.apps.thedailyaistudio.com", | |
| "user-agent": "GitHub-Hookshot/bde5943", | |
| "content-length": "25007", | |
| "accept": "*/*", | |
| "content-type": "application/json", | |
| "x-forwarded-for": "140.82.115.11", | |
| "x-forwarded-host": "n8n-next.apps.thedailyaistudio.com", | |
| "x-forwarded-port": "443", | |
| "x-forwarded-proto": "https", | |
| "x-forwarded-server": "536677c81f48", | |
| "x-github-delivery": "c513f420-5e71-11f0-9ef4-390b2a90f35c", | |
| "x-github-event": "pull_request", | |
| "x-github-hook-id": "557441148", | |
| "x-github-hook-installation-target-id": "1014473950", | |
| "x-github-hook-installation-target-type": "repository", | |
| "x-real-ip": "140.82.115.11", | |
| "accept-encoding": "gzip" | |
| }, | |
| "query": {} | |
| } | |
| ], | |
| "AI Agent": [ | |
| { | |
| "output": "{\n \"issue_title\": \"Missing AI Image Transformation Logic\",\n \"issue_details\": \"The core functionality of the application is missing. The AI image transformation process is not implemented, and the codebase assumes it is handled by an external service. This needs to be addressed to make the application functional.\",\n \"issue_type\": \"code\",\n \"urgency\": \"high\"\n}" | |
| } | |
| ], | |
| "CodeReviewAgent": [ | |
| { | |
| "output": "This is a comprehensive breakdown of the codebase, highlighting key components, functionalities, and potential areas for improvement. Here’s a more detailed analysis, categorized for clarity:\n\n**1. Core Architecture & Technologies:**\n\n* **React:** The foundation of the frontend, utilizing components and hooks for a modular design.\n* **TypeScript:** Promotes type safety and improves code maintainability.\n* **Tailwind CSS:** Provides a utility-first approach for styling, allowing for rapid UI development and customization.\n* **Lucide React:** Uses icons from the Lucide library, enhancing the UI.\n* **Supabase:** The backend of the application:\n * **PostgreSQL:** Database for storing transformation data, user information (if implemented), and potentially payment information (though Stripe handles payments directly).\n * **Edge Functions:** Serverless functions for:\n * **`stripe-webhook`:** Handles Stripe webhooks to process payments and update transformation status. This is the *most critical* component of the entire system.\n * **`create-checkout-session`:** Initiates Stripe checkout sessions.\n * **`update-transformation-status`:** (Potentially, based on the structure). This might be for other status changes not directly related to payment.\n * **Storage:** Used for storing uploaded images.\n* **Stripe:** Used for payment processing.\n\n**2. Key Components & Functionality:**\n\n* **`App.tsx`:** The root component, orchestrates the entire application flow. Includes features like:\n * Anonymous authentication (loading in the background).\n * Handling URL parameters (e.g., to display specific transformation results).\n * Navigation.\n* **`UploadZone.tsx`:** The component where the user uploads their image. Crucial for the initial image processing flow.\n* **`StatusIndicator.tsx`:** Displays the status of the transformation process (uploading, processing, complete, failed, etc.).\n* **`ArtworkDisplay.tsx`:** Shows the transformed image, providing options for download and sharing. This is where the user interacts with the final output.\n* **`ExamplesGallery.tsx`:** Provides previews of previous transformations, demonstrating the AI's capabilities.\n* **`PaymentStatus.tsx`:** A modal to display the result of the payment, allowing the user to confirm or cancel the purchase.\n* **`AdSpace.tsx`**: Displays promotional banners/ads, likely for monetization.\n\n**3. Workflow & Logic:**\n\n1. **Upload:** User uploads an image via the `UploadZone`.\n2. **AI Transformation:** The uploaded image is sent to the backend for transformation (using an external AI service – not implemented here).\n3. **Status Updates:** The `stripe-webhook` function receives payment confirmation from Stripe and updates the transformation status in the database.\n4. **Display Results:** The `ArtworkDisplay` component displays the transformed image, based on the current status. It also offers download and sharing options.\n5. **Payment Flow:** The `create-checkout-session` function initiates a Stripe Checkout session. The user completes the purchase through Stripe. The `stripe-webhook` then handles the payment processing and updates the transformation status.\n\n**4. Critical Code Areas & Considerations:**\n\n* **`stripe-webhook`:** This is the *most important* part of the entire system. It *must* be robust and properly configured to handle webhooks correctly. A single error here can cause significant problems.\n * **Signature Verification:** The code includes signature verification, which is essential for security.\n * **Event Handling:** It needs to correctly handle the `checkout.session.completed` event.\n * **Data Updates:** Correctly updates the `transformed_image_url` and `paid` fields in the database.\n* **Image Processing:** The AI image transformation itself is *not* implemented in this codebase. It's assumed to be handled by a third-party service.\n* **Error Handling:** The codebase lacks extensive error handling. More robust error handling should be added, especially in the `stripe-webhook` function.\n* **Security:** While the signature verification is good, there's no input sanitization or other security measures. Adding these will further strengthen the application.\n* **Scalability:** The current design might not be suitable for high volumes of transformations.\n\n**5. Potential Improvements & Future Features:**\n\n* **AI Integration:** Integrate an actual AI image transformation service (e.g., DALL-E, Stable Diffusion). This is the core feature missing.\n* **User Accounts:** Implement user accounts for managing transformations and preferences.\n* **More Detailed Statuses:** Add more granular statuses to the transformation process (e.g., \"image processing started,\" \"image processing failed\").\n* **Logging:** Add detailed logging to help with debugging and monitoring.\n* **Caching:** Implement caching to improve performance.\n* **Queueing:** If the AI transformation is time-consuming, use a queueing system (e.g., Redis Queue) to handle transformations asynchronously.\n* **Previews/Thumbnails:** Generate thumbnails of the transformed images for faster loading.\n* **User Interface Enhancements:** Improve the UI/UX of the application.\n* **Mobile Responsiveness:** Ensure the application is responsive on mobile devices.\n\n**In summary, this is a well-structured and organized codebase, but it’s currently a *proof of concept*. The core missing piece is the AI image transformation functionality. Addressing the critical code areas (particularly the `stripe-webhook` and adding AI integration) will transform this into a fully functional application.**\n" | |
| } | |
| ], | |
| "CodeSeoAgent": [ | |
| { | |
| "output": "This is a comprehensive breakdown of the codebase, identifying key components, their functionalities, and potential areas for improvement. Here's a categorized summary, along with suggestions for optimization and further development:\n\n**1. Core Architecture & Technologies:**\n\n* **React:** The frontend framework. Well-structured component-based architecture.\n* **TypeScript:** Strong typing provides benefits for maintainability and error prevention.\n* **Tailwind CSS:** Modern CSS framework for styling.\n* **Lucide React:** Excellent icon library.\n* **Supabase:** The core backend. Provides database, authentication, storage, and edge functions.\n* **Stripe:** For payment processing.\n* **Vite:** Fast build tool.\n\n**2. Key Components & Functionality:**\n\n* **`App.tsx`:** The main component, responsible for routing and overall application state. Includes:\n * Authentication (using `useAuth` hook - needs implementation)\n * Handling URL parameters for routing\n * Managing the state of various components.\n* **`UploadZone.tsx`:** Component where users upload their pet images.\n* **`StatusIndicator.tsx`:** Displays the processing status of a transformation. Crucial for user experience.\n* **`ArtworkDisplay.tsx`:** Displays the transformed image, handling different image URLs based on transformation state.\n* **`ExamplesGallery.tsx`:** Shows examples of transformed images to inspire users.\n* **`PaymentStatus.tsx`:** Modal/component to display the current payment status.\n* **`AdSpace.tsx`:** (Present in the files, but not yet implemented) Adds advertising.\n* **`PetTransformation` Type:** Defines the structure of a transformation record in Supabase. This is very well-defined.\n\n**3. Backend (Edge Functions):**\n\n* **`stripe-webhook/index.ts`:** Handles Stripe webhooks, crucial for processing payments and updating the transformation status. This is the most complex part and needs careful attention to security.\n * **Signature Verification:** The implementation of signature verification is vital for security.\n * **Error Handling:** Needs comprehensive error handling (logging, retries, etc.).\n * **Webhook Events:** Properly handles the `checkout.session.completed` event.\n* **`create-checkout-session/index.ts`:** Creates the Stripe checkout session, setting up the payment details.\n * **Dynamic Pricing:** The amount (4.99) is hardcoded. This should be configurable.\n * **Success and Cancel URLs:** Properly handles success and cancel URLs.\n\n**4. Data Model & Supabase:**\n\n* **`PetTransformation` Table:** Excellent design with fields like `original_image_url`, `transformed_image_url`, `transformed_image_url_watermarked`, `transformed_image_url_upscaled`, `transformed_image_url_phone` and `status` This is the foundation of the application.\n* **Storage Bucket:** Publicly accessible bucket for storing images.\n\n**5. Areas for Improvement & Suggestions:**\n\n* **Authentication:** Implement authentication (likely using Supabase Auth).\n* **Error Handling & Logging:** Implement robust error handling and logging across the entire application. This is especially crucial in the `stripe-webhook/index.ts` function.\n* **UI/UX:**\n * **User Feedback:** Add more visual feedback during image processing (e.g., loading spinners).\n * **Clear Instructions:** Improve instructions for uploading images and understanding the process.\n * **Mobile Responsiveness:** Ensure the application is fully responsive on mobile devices.\n* **Image Processing:**\n * **Image Optimization:** Optimize images for web delivery (compression, resizing).\n * **AI Integration:** Implement the actual AI transformation logic. This is the core functionality. Consider using a cloud-based AI service for this.\n * **Upscaling & Watermarking:** Implement the image upscaling and watermarking features.\n* **Payment Flow Enhancements:**\n * **More Payment Options:** Explore other payment methods beyond Stripe.\n * **Pre-Payment Option:** Consider offering a one-time purchase option.\n* **Code Quality & Maintainability:**\n * **Code Reviews:** Implement code reviews to ensure quality and consistency.\n * **Documentation:** Add comprehensive documentation to the codebase.\n* **Scalability:** Consider scalability issues as the application grows. Use serverless functions for image processing and other tasks.\n* **Testing:** Add thorough unit and integration tests.\n\n**6. Missing Pieces & Next Steps:**\n\n* **AI Transformation Logic:** This is the *most* important missing piece. Implement the actual AI algorithm.\n* **Image Processing Infrastructure:** How will images be processed? Cloud functions (e.g., AWS Lambda, Google Cloud Functions) are a good option.\n* **UI Components:** Implement the UI components defined in the file structure.\n* **State Management:** Implement a state management solution (e.g., Redux, Zustand) if the application becomes more complex.\n\n**In summary, this codebase provides a solid foundation for a pet image transformation application. The core architecture is well-designed, and the use of Supabase and Stripe is appropriate. The biggest challenge will be implementing the AI transformation logic and ensuring a smooth user experience.**\n" | |
| } | |
| ] | |
| }, | |
| "meta": { | |
| "templateCredsSetupCompleted": true, | |
| "instanceId": "b77b374d91a001765a8bf2832badc1f8fcc5407c99c4c6f3f68d6413d663ef83" | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "name": "email-email-automations", | |
| "nodes": [ | |
| { | |
| "parameters": { | |
| "downloadAttachments": true, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.emailReadImap", | |
| "typeVersion": 2, | |
| "position": [ | |
| -800, | |
| -280 | |
| ], | |
| "id": "ca047e5b-5bd2-457c-8cbb-20deab21f445", | |
| "name": "Email Trigger (IMAP)", | |
| "credentials": { | |
| "imap": { | |
| "id": "07zrgCACJNPeozzF", | |
| "name": "Automation Example DailyAi" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "options": { | |
| "systemMessage": "=Date: {{ $now }}\n\n🧠 Assistant Role Prompt (for LLM Node or AI Module)\n\nYou are a smart assistant designed to help process incoming messages, typically from email, and decide what to do with them based on the content. Your job is to extract value from these messages and use the available tools to organize, track, or follow up as needed. Think like an efficient team member who knows when something should be logged, followed up on, or simply saved.\n\n🛠️ Tools You Can Use\n\nHere’s a quick overview of your capabilities. Use whichever are appropriate based on the context of the message:\n\t•\tSimple Memory: Pulls in recent context or memory related to users or prior tasks.\n\t•\tget_existing_leads (read: sheet): Retrieves the current list of known leads to avoid duplicates.\n\t•\tadd_leads_to_sheets (append: sheet): Adds new leads to a Google Sheet. Use this when someone expresses interest or needs to be followed up with.\n\t•\tadd_tasks (append: sheet): Use this when a task needs to be created—e.g., follow-up, schedule a demo, gather information, etc.\n\t•\tget_existing_tasks (read: sheet): Use this to check what tasks are already active before creating a new one.\n\t•\tget_recipes (read: sheet): Get the recipes from the sheet.\n\t•\tadd_recipe (append: sheet): Save any recipes, tips, or useful how-tos. If the message contains something like a recipe, idea, or method, use this tool.\n\t•\tscrape_url (Tool): If the message contains a URL, and it’s useful to know more about it (like in lead research), scrape it for summary or relevant info.\n\t•\tSend Email (Send): Use this to send replies, confirmations, or updates when appropriate.\n\n⸻\n\n✅ What You Should Always Do\n\t•\tIf the message contains a recipe, method, or useful how-to, save it using add_recipe.\n\t•\tIf it’s a new lead, check get_existing_leads first, and if it’s not there, use add_leads_to_sheets.\n\t•\tIf there’s an action we need to remember, such as following up with someone, use add_tasks (after checking get_existing_tasks if needed).\n\t•\tIf there’s a URL, consider using scrape_url to pull in details for analysis or tracking.\n\t•\tUse your memory (Simple Memory) to keep track of what’s already known.\n\n⸻\n\n🧠 Example Scenarios\n\t•\tSomeone says, “We’d like a demo of your platform next week.” → Add them as a lead and a task to follow up.\n\t•\tA message says, “Here’s my favorite pasta recipe…” → Add it to add_recipe.\n\t•\tThe message includes a link to their company site → Use scrape_url to learn more.\n\t•\tYou see a todo or note like “We should email them in 3 days.” → Add a task and optionally send an email reminder.\n\n" | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.agent", | |
| "typeVersion": 1.9, | |
| "position": [ | |
| 100, | |
| -260 | |
| ], | |
| "id": "f05633d2-8ae8-43e8-8c73-d23a8027bdd1", | |
| "name": "AI Agent" | |
| }, | |
| { | |
| "parameters": { | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "1b3703a2-7b20-4cbe-9397-bcad65a8deb4", | |
| "name": "chatInput", | |
| "value": "={{ $json }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "3608fa24-2aa0-4c63-bbb1-4d8ef0a02f4e", | |
| "name": "sessionId", | |
| "value": "={{ $json.metadata['return-path'] }}", | |
| "type": "string" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.set", | |
| "typeVersion": 3.4, | |
| "position": [ | |
| -600, | |
| -280 | |
| ], | |
| "id": "0c136f96-22f5-4b4a-a480-fe21de7d1db8", | |
| "name": "Edit Fields" | |
| }, | |
| { | |
| "parameters": {}, | |
| "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", | |
| "typeVersion": 1.3, | |
| "position": [ | |
| -340, | |
| 540 | |
| ], | |
| "id": "337952ca-7fdb-4916-af35-15199dcd44ad", | |
| "name": "Simple Memory" | |
| }, | |
| { | |
| "parameters": { | |
| "model": { | |
| "__rl": true, | |
| "value": "gpt-4.1-mini", | |
| "mode": "list", | |
| "cachedResultName": "gpt-4.1-mini" | |
| }, | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", | |
| "typeVersion": 1.2, | |
| "position": [ | |
| -500, | |
| 340 | |
| ], | |
| "id": "f2c4fffa-e005-4dd0-83b5-6ff43efc66b9", | |
| "name": "OpenAI Chat Model", | |
| "credentials": { | |
| "openAiApi": { | |
| "id": "TqEEu0VRFjao8YS9", | |
| "name": "DailyMasterToken" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.chatTrigger", | |
| "typeVersion": 1.1, | |
| "position": [ | |
| -820, | |
| 140 | |
| ], | |
| "id": "36e58bf8-b4fe-4371-a792-4e67a9d253b9", | |
| "name": "When chat message received", | |
| "webhookId": "9e211b9e-de59-4ce7-8953-4c07278f4c12" | |
| }, | |
| { | |
| "parameters": { | |
| "operation": "append", | |
| "documentId": { | |
| "__rl": true, | |
| "value": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit?gid=1961660783#gid=1961660783", | |
| "mode": "url" | |
| }, | |
| "sheetName": { | |
| "__rl": true, | |
| "value": "gid=0", | |
| "mode": "list", | |
| "cachedResultName": "Leads", | |
| "cachedResultUrl": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit#gid=0" | |
| }, | |
| "columns": { | |
| "mappingMode": "defineBelow", | |
| "value": { | |
| "Name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Name', ``, 'string') }}", | |
| "Email": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Email', ``, 'string') }}", | |
| "Phone": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Phone', ``, 'string') }}", | |
| "Date": "={{ $now.format('yyyy-MM-dd h:m a') }}", | |
| "Message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}" | |
| }, | |
| "matchingColumns": [], | |
| "schema": [ | |
| { | |
| "id": "Name", | |
| "displayName": "Name", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "type": "string", | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Email", | |
| "displayName": "Email", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "type": "string", | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Phone", | |
| "displayName": "Phone", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "type": "string", | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Date", | |
| "displayName": "Date", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "type": "string", | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Message", | |
| "displayName": "Message", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "type": "string", | |
| "canBeUsedToMatch": true | |
| } | |
| ], | |
| "attemptToConvertTypes": false, | |
| "convertFieldsToString": false | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.googleSheetsTool", | |
| "typeVersion": 4.6, | |
| "position": [ | |
| 120, | |
| 320 | |
| ], | |
| "id": "d20d08c8-98d2-41eb-a77c-89813ea6b45f", | |
| "name": "add_leads_to_sheets", | |
| "credentials": { | |
| "googleSheetsOAuth2Api": { | |
| "id": "rWb3copWsrXALz2Z", | |
| "name": "Google Sheets account 2" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "descriptionType": "manual", | |
| "toolDescription": "Get Existing Leads to make sure it is not a duplicate", | |
| "documentId": { | |
| "__rl": true, | |
| "value": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit?gid=1961660783#gid=1961660783", | |
| "mode": "url" | |
| }, | |
| "sheetName": { | |
| "__rl": true, | |
| "value": "gid=0", | |
| "mode": "list", | |
| "cachedResultName": "Leads", | |
| "cachedResultUrl": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit#gid=0" | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.googleSheetsTool", | |
| "typeVersion": 4.6, | |
| "position": [ | |
| -40, | |
| 340 | |
| ], | |
| "id": "c8ba2a89-2b25-430e-8e30-25c78d668a27", | |
| "name": "get_existing_leads", | |
| "credentials": { | |
| "googleSheetsOAuth2Api": { | |
| "id": "rWb3copWsrXALz2Z", | |
| "name": "Google Sheets account 2" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "descriptionType": "manual", | |
| "toolDescription": "Get Existing Tasks to make sure it is not a duplicate", | |
| "documentId": { | |
| "__rl": true, | |
| "value": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit?gid=1961660783#gid=1961660783", | |
| "mode": "url" | |
| }, | |
| "sheetName": { | |
| "__rl": true, | |
| "value": 1139481038, | |
| "mode": "list", | |
| "cachedResultName": "Tasks", | |
| "cachedResultUrl": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit#gid=1139481038" | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.googleSheetsTool", | |
| "typeVersion": 4.6, | |
| "position": [ | |
| 420, | |
| 300 | |
| ], | |
| "id": "43b793a1-1650-4e2c-81b7-a63adbc0b8d2", | |
| "name": "get_existing_tasks", | |
| "credentials": { | |
| "googleSheetsOAuth2Api": { | |
| "id": "rWb3copWsrXALz2Z", | |
| "name": "Google Sheets account 2" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "descriptionType": "manual", | |
| "toolDescription": "Create a new Task", | |
| "operation": "append", | |
| "documentId": { | |
| "__rl": true, | |
| "value": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit?gid=1961660783#gid=1961660783", | |
| "mode": "url" | |
| }, | |
| "sheetName": { | |
| "__rl": true, | |
| "value": 1139481038, | |
| "mode": "list", | |
| "cachedResultName": "Tasks", | |
| "cachedResultUrl": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit#gid=1139481038" | |
| }, | |
| "columns": { | |
| "mappingMode": "defineBelow", | |
| "value": { | |
| "Item": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Item', ``, 'string') }}", | |
| "Notes": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Notes', ``, 'string') }}", | |
| "Related Lead": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Related_Lead', ``, 'string') }}", | |
| "Due Date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Due_Date', ``, 'string') }}" | |
| }, | |
| "matchingColumns": [], | |
| "schema": [ | |
| { | |
| "id": "Item", | |
| "displayName": "Item", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "type": "string", | |
| "canBeUsedToMatch": true, | |
| "removed": false | |
| }, | |
| { | |
| "id": "Notes", | |
| "displayName": "Notes", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "type": "string", | |
| "canBeUsedToMatch": true, | |
| "removed": false | |
| }, | |
| { | |
| "id": "Related Lead", | |
| "displayName": "Related Lead", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "type": "string", | |
| "canBeUsedToMatch": true, | |
| "removed": false | |
| }, | |
| { | |
| "id": "Due Date", | |
| "displayName": "Due Date", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "type": "string", | |
| "canBeUsedToMatch": true, | |
| "removed": false | |
| } | |
| ], | |
| "attemptToConvertTypes": false, | |
| "convertFieldsToString": false | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.googleSheetsTool", | |
| "typeVersion": 4.6, | |
| "position": [ | |
| 280, | |
| 300 | |
| ], | |
| "id": "fdb327ad-f43b-46d4-8b9b-7b3baaef1ba4", | |
| "name": "add_tasks", | |
| "credentials": { | |
| "googleSheetsOAuth2Api": { | |
| "id": "rWb3copWsrXALz2Z", | |
| "name": "Google Sheets account 2" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "descriptionType": "manual", | |
| "toolDescription": "Create a new Recipe from the URL", | |
| "operation": "append", | |
| "documentId": { | |
| "__rl": true, | |
| "value": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit?gid=1961660783#gid=1961660783", | |
| "mode": "url" | |
| }, | |
| "sheetName": { | |
| "__rl": true, | |
| "value": 744417427, | |
| "mode": "list", | |
| "cachedResultName": "Recipes", | |
| "cachedResultUrl": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit#gid=744417427" | |
| }, | |
| "columns": { | |
| "mappingMode": "defineBelow", | |
| "value": { | |
| "Title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Title', ``, 'string') }}", | |
| "URL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}", | |
| "TLDR": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('TLDR', ``, 'string') }}" | |
| }, | |
| "matchingColumns": [], | |
| "schema": [ | |
| { | |
| "id": "Title", | |
| "displayName": "Title", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "type": "string", | |
| "canBeUsedToMatch": true, | |
| "removed": false | |
| }, | |
| { | |
| "id": "URL", | |
| "displayName": "URL", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "type": "string", | |
| "canBeUsedToMatch": true, | |
| "removed": false | |
| }, | |
| { | |
| "id": "TLDR", | |
| "displayName": "TLDR", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "type": "string", | |
| "canBeUsedToMatch": true, | |
| "removed": false | |
| } | |
| ], | |
| "attemptToConvertTypes": false, | |
| "convertFieldsToString": false | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.googleSheetsTool", | |
| "typeVersion": 4.6, | |
| "position": [ | |
| 580, | |
| 280 | |
| ], | |
| "id": "c40806b5-3236-4636-9e65-8df3321cefa6", | |
| "name": "add_recipe", | |
| "credentials": { | |
| "googleSheetsOAuth2Api": { | |
| "id": "rWb3copWsrXALz2Z", | |
| "name": "Google Sheets account 2" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "rule": { | |
| "interval": [ | |
| { | |
| "triggerAtHour": 6 | |
| } | |
| ] | |
| } | |
| }, | |
| "type": "n8n-nodes-base.scheduleTrigger", | |
| "typeVersion": 1.2, | |
| "position": [ | |
| -800, | |
| -60 | |
| ], | |
| "id": "7ea2ca8b-d0bc-4fc2-bd79-c323daaa49f9", | |
| "name": "Schedule Trigger" | |
| }, | |
| { | |
| "parameters": { | |
| "fromEmail": "automations-example@dailyai.studio", | |
| "toEmail": "bob@dailyai.studio", | |
| "subject": "Your daliy update", | |
| "emailFormat": "text", | |
| "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Text', ``, 'string') }}", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.emailSendTool", | |
| "typeVersion": 2.1, | |
| "position": [ | |
| 1100, | |
| 220 | |
| ], | |
| "id": "c426cc91-1b3a-4ef8-8716-fea7051965e9", | |
| "name": "Send Email", | |
| "webhookId": "5d1aa3cc-b1d6-40dc-87cb-8efc428c1ec6", | |
| "credentials": { | |
| "smtp": { | |
| "id": "kYuzndvwAyWQieUf", | |
| "name": "SMTP account" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "1b3703a2-7b20-4cbe-9397-bcad65a8deb4", | |
| "name": "chatInput", | |
| "value": "=Look for our todo items due today and leads that came in yesterday and anything else to give us our daily report using the SMTP tool to send it as an email.\n\nToday is {{ $now }}", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "3608fa24-2aa0-4c63-bbb1-4d8ef0a02f4e", | |
| "name": "sessionId", | |
| "value": "=daily_message", | |
| "type": "string" | |
| }, | |
| { | |
| "id": "605cf15c-01cc-4435-a904-499a77871d00", | |
| "name": "drive_url", | |
| "value": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit?gid=1961660783#gid=1961660783", | |
| "type": "string" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.set", | |
| "typeVersion": 3.4, | |
| "position": [ | |
| -600, | |
| -60 | |
| ], | |
| "id": "0629a43a-cea1-4d25-b0cf-7db1dff5f915", | |
| "name": "Edit Fields1" | |
| }, | |
| { | |
| "parameters": { | |
| "description": "Get Data from a URL", | |
| "workflowId": { | |
| "__rl": true, | |
| "value": "CpQCnPqBUEZcho8l", | |
| "mode": "list", | |
| "cachedResultName": "scrape-site" | |
| }, | |
| "workflowInputs": { | |
| "mappingMode": "defineBelow", | |
| "value": { | |
| "url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('url', ``, 'string') }}" | |
| }, | |
| "matchingColumns": [ | |
| "url" | |
| ], | |
| "schema": [ | |
| { | |
| "id": "url", | |
| "displayName": "url", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "canBeUsedToMatch": true, | |
| "type": "string", | |
| "removed": false | |
| } | |
| ], | |
| "attemptToConvertTypes": false, | |
| "convertFieldsToString": false | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.toolWorkflow", | |
| "typeVersion": 2.2, | |
| "position": [ | |
| 900, | |
| 260 | |
| ], | |
| "id": "380b164e-3cab-4c90-b065-f7d0d5d1e41c", | |
| "name": "scrape_url" | |
| }, | |
| { | |
| "parameters": { | |
| "model": "qwen3:8b", | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.lmChatOllama", | |
| "typeVersion": 1, | |
| "position": [ | |
| -280, | |
| 340 | |
| ], | |
| "id": "c77da2fa-d25e-4414-9460-1406655c67cf", | |
| "name": "Ollama Chat Model", | |
| "credentials": { | |
| "ollamaApi": { | |
| "id": "83hE7MHI8l0FWzkm", | |
| "name": "Ollama account" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "descriptionType": "manual", | |
| "toolDescription": "Get Existing Recipes", | |
| "documentId": { | |
| "__rl": true, | |
| "value": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit?gid=1961660783#gid=1961660783", | |
| "mode": "url" | |
| }, | |
| "sheetName": { | |
| "__rl": true, | |
| "value": 744417427, | |
| "mode": "list", | |
| "cachedResultName": "Recipes", | |
| "cachedResultUrl": "https://docs.google.com/spreadsheets/d/165e9YpWep6xaUcgcv3-3VcjEJ5BqumO5Gs06DoDYZ8Q/edit#gid=744417427" | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.googleSheetsTool", | |
| "typeVersion": 4.6, | |
| "position": [ | |
| 740, | |
| 280 | |
| ], | |
| "id": "e5d705c7-8103-4dc3-9bfb-c56858ff8129", | |
| "name": "get_recipes", | |
| "credentials": { | |
| "googleSheetsOAuth2Api": { | |
| "id": "rWb3copWsrXALz2Z", | |
| "name": "Google Sheets account 2" | |
| } | |
| } | |
| } | |
| ], | |
| "pinData": { | |
| "Email Trigger (IMAP)": [ | |
| { | |
| "json": { | |
| "textHtml": "", | |
| "textPlain": "the url is https://simplerecipes.io/recipes/51", | |
| "metadata": { | |
| "return-path": "<bob@dailyai.studio>", | |
| "delivered-to": "automations-example@dailyai.studio", | |
| "received": "from heracles.mxrouting.net\tby heracles.mxrouting.net with LMTP\tid gJRyN9a3XmjjIS4AB5j/qg\t(envelope-from <bob@dailyai.studio>)\tfor <automations-example@dailyai.studio>; Fri, 27 Jun 2025 15:25:10 +0000", | |
| "envelope-to": "automations-example@dailyai.studio", | |
| "delivery-date": "Fri, 27 Jun 2025 15:25:10 +0000", | |
| "x-spam-checker-version": "SpamAssassin 4.0.0 (2022-12-14) on\theracles.mxrouting.net", | |
| "x-spam-level": "", | |
| "x-spam-status": "No, score=-10.0 required=5.0 tests=ALL_TRUSTED\tautolearn=disabled version=4.0.0", | |
| "mime-version": "1.0", | |
| "message-id": "<e4397500258b42bccabba22fecd9f877@dailyai.studio>", | |
| "x-sender": "bob@dailyai.studio", | |
| "content-type": "text/plain; charset=US-ASCII; format=flowed", | |
| "content-transfer-encoding": "7bit" | |
| }, | |
| "attributes": { | |
| "uid": 4 | |
| }, | |
| "date": "Fri, 27 Jun 2025 17:25:10 +0200", | |
| "from": "bob@dailyai.studio", | |
| "to": "automations-example@dailyai.studio", | |
| "subject": "Recipe save" | |
| } | |
| } | |
| ] | |
| }, | |
| "connections": { | |
| "Email Trigger (IMAP)": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Edit Fields", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Edit Fields": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Simple Memory": { | |
| "ai_memory": [ | |
| [] | |
| ] | |
| }, | |
| "OpenAI Chat Model": { | |
| "ai_languageModel": [ | |
| [] | |
| ] | |
| }, | |
| "When chat message received": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "add_leads_to_sheets": { | |
| "ai_tool": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_tool", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "get_existing_leads": { | |
| "ai_tool": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_tool", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "get_existing_tasks": { | |
| "ai_tool": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_tool", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "add_tasks": { | |
| "ai_tool": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_tool", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "add_recipe": { | |
| "ai_tool": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_tool", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Send Email": { | |
| "ai_tool": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_tool", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Schedule Trigger": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Edit Fields1", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Edit Fields1": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "scrape_url": { | |
| "ai_tool": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_tool", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Ollama Chat Model": { | |
| "ai_languageModel": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_languageModel", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "get_recipes": { | |
| "ai_tool": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_tool", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| } | |
| }, | |
| "active": false, | |
| "settings": { | |
| "executionOrder": "v1" | |
| }, | |
| "versionId": "78792e57-cc9c-41b6-aafc-2d5521b9832e", | |
| "meta": { | |
| "templateCredsSetupCompleted": true, | |
| "instanceId": "b77b374d91a001765a8bf2832badc1f8fcc5407c99c4c6f3f68d6413d663ef83" | |
| }, | |
| "id": "NXy32prxhEOHUzBe", | |
| "tags": [ | |
| { | |
| "createdAt": "2025-07-11T16:04:59.120Z", | |
| "updatedAt": "2025-07-11T16:04:59.120Z", | |
| "id": "JVFrlEXRhFpKH26X", | |
| "name": "testing" | |
| } | |
| ] | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "nodes": [ | |
| { | |
| "parameters": { | |
| "httpMethod": "POST", | |
| "path": "process/assets", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.webhook", | |
| "typeVersion": 2, | |
| "position": [ | |
| -340, | |
| -80 | |
| ], | |
| "id": "c1d25c79-cb03-4186-8a06-6546cc6e68f3", | |
| "name": "ProcessAssets", | |
| "webhookId": "4b84c2f9-7beb-4cf0-a946-a90558c503c2" | |
| }, | |
| { | |
| "parameters": { | |
| "url": "=https://cfvrauuiniospijccuzg.supabase.co/storage/v1/object/project-files/{{ $json.body.record.file_path }}", | |
| "authentication": "predefinedCredentialType", | |
| "nodeCredentialType": "supabaseApi", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.httpRequest", | |
| "typeVersion": 4.2, | |
| "position": [ | |
| -120, | |
| -80 | |
| ], | |
| "id": "088c5fdb-c866-43c7-8a60-a2477a2c9ecd", | |
| "name": "HTTP Request", | |
| "credentials": { | |
| "supabaseApi": { | |
| "id": "263xXnCQ57LLBu5F", | |
| "name": "Production" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "mode": "insert", | |
| "tableName": { | |
| "__rl": true, | |
| "value": "documents", | |
| "mode": "list", | |
| "cachedResultName": "documents" | |
| }, | |
| "options": { | |
| "queryName": "hybrid_search" | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase", | |
| "typeVersion": 1.3, | |
| "position": [ | |
| 100, | |
| -80 | |
| ], | |
| "id": "ed40d716-b0ac-4fa9-a9f0-2b2898a33d11", | |
| "name": "Supabase Vector Store", | |
| "credentials": { | |
| "supabaseApi": { | |
| "id": "263xXnCQ57LLBu5F", | |
| "name": "Production" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "dataType": "binary", | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", | |
| "typeVersion": 1.1, | |
| "position": [ | |
| 180, | |
| 160 | |
| ], | |
| "id": "64eb229d-3eb4-4229-b86c-de51074f64eb", | |
| "name": "Default Data Loader" | |
| }, | |
| { | |
| "parameters": { | |
| "model": "nomic-embed-text:latest" | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.embeddingsOllama", | |
| "typeVersion": 1, | |
| "position": [ | |
| 0, | |
| 180 | |
| ], | |
| "id": "691c9c2d-4b06-41c8-8b42-520cf22cfe23", | |
| "name": "Embeddings Ollama", | |
| "credentials": { | |
| "ollamaApi": { | |
| "id": "9AOxA7OBSIn1RCAg", | |
| "name": "Ollama Office" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "options": { | |
| "systemMessage": "Your role is to use the hybrid_search tool passing in the users query to help return values from the database of all the data we have stored" | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.agent", | |
| "typeVersion": 2, | |
| "position": [ | |
| -20, | |
| 360 | |
| ], | |
| "id": "f7ca66ad-4d7f-440f-9865-9aaa4eeb90f3", | |
| "name": "AI Agent" | |
| }, | |
| { | |
| "parameters": { | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.chatTrigger", | |
| "typeVersion": 1.1, | |
| "position": [ | |
| -240, | |
| 360 | |
| ], | |
| "id": "8d61b011-f52a-496e-8657-e8c605a270c1", | |
| "name": "When chat message received", | |
| "webhookId": "9c2be0a6-bf5f-4a0c-bc88-1fee8ec3065d" | |
| }, | |
| { | |
| "parameters": { | |
| "model": "qwen3:8b", | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.lmChatOllama", | |
| "typeVersion": 1, | |
| "position": [ | |
| -140, | |
| 600 | |
| ], | |
| "id": "84b57cfd-9316-49da-8de6-8a855e5f858b", | |
| "name": "Ollama Chat Model1", | |
| "credentials": { | |
| "ollamaApi": { | |
| "id": "9AOxA7OBSIn1RCAg", | |
| "name": "Ollama Office" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "description": "This is key to any query the user makes that is clearly not a chat question but a question related to content we have in the system", | |
| "workflowId": { | |
| "__rl": true, | |
| "value": "fKIekZgRZbfAA6bP", | |
| "mode": "list", | |
| "cachedResultName": "hyrbid-query" | |
| }, | |
| "workflowInputs": { | |
| "mappingMode": "defineBelow", | |
| "value": { | |
| "query": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('query', ``, 'string') }}" | |
| }, | |
| "matchingColumns": [ | |
| "query" | |
| ], | |
| "schema": [ | |
| { | |
| "id": "query", | |
| "displayName": "query", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "canBeUsedToMatch": true, | |
| "type": "string", | |
| "removed": false | |
| } | |
| ], | |
| "attemptToConvertTypes": false, | |
| "convertFieldsToString": false | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.toolWorkflow", | |
| "typeVersion": 2.2, | |
| "position": [ | |
| 160, | |
| 600 | |
| ], | |
| "id": "01f56e36-596e-4795-a755-f0f510975f3f", | |
| "name": "hybrid_search" | |
| } | |
| ], | |
| "connections": { | |
| "ProcessAssets": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "HTTP Request", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "HTTP Request": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Supabase Vector Store", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Default Data Loader": { | |
| "ai_document": [ | |
| [ | |
| { | |
| "node": "Supabase Vector Store", | |
| "type": "ai_document", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Embeddings Ollama": { | |
| "ai_embedding": [ | |
| [ | |
| { | |
| "node": "Supabase Vector Store", | |
| "type": "ai_embedding", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "When chat message received": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Ollama Chat Model1": { | |
| "ai_languageModel": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_languageModel", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "hybrid_search": { | |
| "ai_tool": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_tool", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| } | |
| }, | |
| "pinData": { | |
| "ProcessAssets": [ | |
| { | |
| "headers": { | |
| "host": "n8n-business-hub.apps.thedailyaistudio.com", | |
| "user-agent": "pg_net/0.14.0", | |
| "content-length": "742", | |
| "accept": "*/*", | |
| "content-type": "application/json", | |
| "x-forwarded-for": "3.147.147.72", | |
| "x-forwarded-host": "n8n-business-hub.apps.thedailyaistudio.com", | |
| "x-forwarded-port": "443", | |
| "x-forwarded-proto": "https", | |
| "x-forwarded-server": "536677c81f48", | |
| "x-real-ip": "3.147.147.72", | |
| "accept-encoding": "gzip" | |
| }, | |
| "params": {}, | |
| "query": {}, | |
| "body": { | |
| "type": "INSERT", | |
| "table": "project_assets", | |
| "record": { | |
| "id": "9fa0e330-ec2f-4f4f-9037-2be2b1f47e56", | |
| "name": "Community_Wellness_Initiative_2025_RFP.pdf", | |
| "type": "pdf", | |
| "status": "pending", | |
| "metadata": { | |
| "original_name": "Community_Wellness_Initiative_2025_RFP.pdf", | |
| "upload_method": "file_upload" | |
| }, | |
| "file_path": "projects/779288b4-909e-4c7d-8878-14e0796b8aae/a5274b69-7942-4536-9a7e-23f83ffb3d5d_Community_Wellness_Initiative_2025_RFP.pdf", | |
| "file_size": 2948, | |
| "mime_type": "application/pdf", | |
| "created_at": "2025-07-13T01:26:24.59884+00:00", | |
| "project_id": "779288b4-909e-4c7d-8878-14e0796b8aae", | |
| "updated_at": "2025-07-13T01:26:24.59884+00:00", | |
| "uploaded_by": "3801beb2-9ad3-49e0-ac11-ee7c5d60788a" | |
| }, | |
| "schema": "public", | |
| "old_record": null | |
| }, | |
| "webhookUrl": "https://n8n-business-hub.apps.thedailyaistudio.com/webhook/process/assets", | |
| "executionMode": "production" | |
| } | |
| ] | |
| }, | |
| "meta": { | |
| "templateCredsSetupCompleted": true, | |
| "instanceId": "9e541fc4f8c045ab228fc3663ff2746d730c24f6e7aa45d9d0a9fc9baf1635dd" | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "nodes": [ | |
| { | |
| "parameters": { | |
| "httpMethod": "POST", | |
| "path": "a81f397c-75de-489a-9240-11b398abdeff", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.webhook", | |
| "typeVersion": 2, | |
| "position": [ | |
| -340, | |
| -80 | |
| ], | |
| "id": "69365a2c-efab-4113-8ee6-450a9749d048", | |
| "name": "ProcessAssets", | |
| "webhookId": "a81f397c-75de-489a-9240-11b398abdeff" | |
| }, | |
| { | |
| "parameters": { | |
| "url": "=https://cfvrauuiniospijccuzg.supabase.co/storage/v1/object/project-files/{{ $json.body.record.file_path }}", | |
| "authentication": "predefinedCredentialType", | |
| "nodeCredentialType": "supabaseApi", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.httpRequest", | |
| "typeVersion": 4.2, | |
| "position": [ | |
| -140, | |
| -80 | |
| ], | |
| "id": "e8d6d0c6-d0d0-420b-8d1a-43683a4865c3", | |
| "name": "HTTP Request", | |
| "credentials": { | |
| "supabaseApi": { | |
| "id": "263xXnCQ57LLBu5F", | |
| "name": "Production" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "mode": "insert", | |
| "tableName": { | |
| "__rl": true, | |
| "value": "documents", | |
| "mode": "list", | |
| "cachedResultName": "documents" | |
| }, | |
| "options": { | |
| "queryName": "hybrid_search" | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase", | |
| "typeVersion": 1.3, | |
| "position": [ | |
| 1340, | |
| 480 | |
| ], | |
| "id": "c6a67204-6fd7-47f3-ac3a-11f4780af93b", | |
| "name": "Supabase Vector Store", | |
| "credentials": { | |
| "supabaseApi": { | |
| "id": "263xXnCQ57LLBu5F", | |
| "name": "Production" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", | |
| "typeVersion": 1.1, | |
| "position": [ | |
| 1520, | |
| 720 | |
| ], | |
| "id": "4ea3dfdd-89b3-4ae7-a5c9-e8c1a26dc4e6", | |
| "name": "Default Data Loader" | |
| }, | |
| { | |
| "parameters": { | |
| "model": "nomic-embed-text:latest" | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.embeddingsOllama", | |
| "typeVersion": 1, | |
| "position": [ | |
| 1240, | |
| 700 | |
| ], | |
| "id": "0be42d44-1990-41f6-8967-a95d81c899c0", | |
| "name": "Embeddings Ollama", | |
| "credentials": { | |
| "ollamaApi": { | |
| "id": "9AOxA7OBSIn1RCAg", | |
| "name": "Ollama Office" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "options": { | |
| "systemMessage": "Your role is to use the hybrid_search tool passing in the users query to help return values from the database of all the data we have stored" | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.agent", | |
| "typeVersion": 2, | |
| "position": [ | |
| 2620, | |
| -40 | |
| ], | |
| "id": "c3d5c0f9-9789-4531-a0b1-6182a25bf14a", | |
| "name": "AI Agent" | |
| }, | |
| { | |
| "parameters": { | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.chatTrigger", | |
| "typeVersion": 1.1, | |
| "position": [ | |
| 2400, | |
| -40 | |
| ], | |
| "id": "8361c03e-6661-428c-b49b-d1b4d48e5ec4", | |
| "name": "When chat message received", | |
| "webhookId": "5ffd6aed-3ead-46f5-9afa-e007d30e9a1f" | |
| }, | |
| { | |
| "parameters": { | |
| "model": "qwen3:8b", | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.lmChatOllama", | |
| "typeVersion": 1, | |
| "position": [ | |
| 2620, | |
| 320 | |
| ], | |
| "id": "aaa479d1-f0c7-461e-a6a2-6a8e1c8c2c50", | |
| "name": "Ollama Chat Model1", | |
| "credentials": { | |
| "ollamaApi": { | |
| "id": "9AOxA7OBSIn1RCAg", | |
| "name": "Ollama Office" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "description": "This is key to any query the user makes that is clearly not a chat question but a question related to content we have in the system", | |
| "workflowId": { | |
| "__rl": true, | |
| "value": "fKIekZgRZbfAA6bP", | |
| "mode": "list", | |
| "cachedResultName": "hyrbid-query" | |
| }, | |
| "workflowInputs": { | |
| "mappingMode": "defineBelow", | |
| "value": { | |
| "query": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('query', ``, 'string') }}" | |
| }, | |
| "matchingColumns": [ | |
| "query" | |
| ], | |
| "schema": [ | |
| { | |
| "id": "query", | |
| "displayName": "query", | |
| "required": false, | |
| "defaultMatch": false, | |
| "display": true, | |
| "canBeUsedToMatch": true, | |
| "type": "string", | |
| "removed": false | |
| } | |
| ], | |
| "attemptToConvertTypes": false, | |
| "convertFieldsToString": false | |
| } | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.toolWorkflow", | |
| "typeVersion": 2.2, | |
| "position": [ | |
| 2800, | |
| 320 | |
| ], | |
| "id": "fcd08d13-ed6d-4a43-8202-27e73f9dacac", | |
| "name": "hybrid_search" | |
| }, | |
| { | |
| "parameters": {}, | |
| "type": "n8n-nodes-base.compression", | |
| "typeVersion": 1.1, | |
| "position": [ | |
| 500, | |
| 200 | |
| ], | |
| "id": "c3cd94de-dc62-46ba-8963-35c51719b4c8", | |
| "name": "Compression" | |
| }, | |
| { | |
| "parameters": { | |
| "operation": "write", | |
| "fileName": "/tmp/test.zip", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.readWriteFile", | |
| "typeVersion": 1, | |
| "position": [ | |
| 420, | |
| -80 | |
| ], | |
| "id": "22cbc663-5727-4e7f-8560-59c67c52b6b7", | |
| "name": "Read/Write Files from Disk" | |
| }, | |
| { | |
| "parameters": { | |
| "fileSelector": "/tmp/test.zip", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.readWriteFile", | |
| "typeVersion": 1, | |
| "position": [ | |
| 740, | |
| -80 | |
| ], | |
| "id": "76e78988-b618-4189-b5db-cfe238db81ba", | |
| "name": "Read/Write Files from Disk1" | |
| }, | |
| { | |
| "parameters": { | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.splitInBatches", | |
| "typeVersion": 3, | |
| "position": [ | |
| 840, | |
| 200 | |
| ], | |
| "id": "8ce45eb1-1fa2-4856-81e5-48e0ca8542f1", | |
| "name": "Loop Over Items" | |
| }, | |
| { | |
| "parameters": { | |
| "jsCode": "let results = [];\n\nfor (item of items) {\n for (key of Object.keys(item.binary)) {\n results.push({\n json: {\n fileName: item.binary[key].fileName\n },\n binary: {\n data: item.binary[key],\n }\n });\n }\n}\n\nreturn results;" | |
| }, | |
| "type": "n8n-nodes-base.code", | |
| "typeVersion": 2, | |
| "position": [ | |
| 680, | |
| 200 | |
| ], | |
| "id": "bebae7e2-1504-4903-a2ba-3c28c54b7824", | |
| "name": "List" | |
| }, | |
| { | |
| "parameters": {}, | |
| "type": "n8n-nodes-base.noOp", | |
| "typeVersion": 1, | |
| "position": [ | |
| 1080, | |
| 80 | |
| ], | |
| "id": "e007291b-d887-49d0-9e5c-1e82a7a7ad1a", | |
| "name": "No Operation, do nothing" | |
| }, | |
| { | |
| "parameters": { | |
| "method": "POST", | |
| "url": "https://spdf-wk8skow.apps.thedailyaistudio.com/api/v1/convert/pdf/img", | |
| "sendHeaders": true, | |
| "headerParameters": { | |
| "parameters": [ | |
| { | |
| "name": "accept", | |
| "value": "*/*" | |
| } | |
| ] | |
| }, | |
| "sendBody": true, | |
| "contentType": "multipart-form-data", | |
| "bodyParameters": { | |
| "parameters": [ | |
| { | |
| "name": "imageFormat", | |
| "value": "png" | |
| }, | |
| { | |
| "name": "singleOrMultiple", | |
| "value": "multiple" | |
| }, | |
| { | |
| "name": "colorType", | |
| "value": "color" | |
| }, | |
| { | |
| "name": "dpi", | |
| "value": "300" | |
| }, | |
| { | |
| "parameterType": "formBinaryData", | |
| "name": "fileInput", | |
| "inputDataFieldName": "data" | |
| }, | |
| { | |
| "name": "pageNumbers", | |
| "value": "all" | |
| } | |
| ] | |
| }, | |
| "options": { | |
| "redirect": { | |
| "redirect": { | |
| "followRedirects": true, | |
| "maxRedirects": 21 | |
| } | |
| }, | |
| "response": {} | |
| } | |
| }, | |
| "type": "n8n-nodes-base.httpRequest", | |
| "typeVersion": 4.2, | |
| "position": [ | |
| 80, | |
| -80 | |
| ], | |
| "id": "bf61421b-afd5-4a47-9a0b-890e696cdd6e", | |
| "name": "HTTP Request1" | |
| }, | |
| { | |
| "parameters": { | |
| "method": "POST", | |
| "url": "http://100.76.120.31:11434/api/generate", | |
| "sendBody": true, | |
| "specifyBody": "json", | |
| "jsonBody": "={\n \"model\": \"gemma3:4b\",\n \"prompt\": \"This is a pdf that will have text for you to OCR but also charts I want you to explain so we get a better picture of the page for later RAG work\",\n \"images\": [\"{{ $json.data }}\"],\n \"stream\": false\n}", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.httpRequest", | |
| "typeVersion": 4.2, | |
| "position": [ | |
| 840, | |
| 480 | |
| ], | |
| "id": "3372a43e-0e50-4901-a4f8-ff1253315c0e", | |
| "name": "HTTP Request2" | |
| }, | |
| { | |
| "parameters": { | |
| "operation": "binaryToPropery", | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.extractFromFile", | |
| "typeVersion": 1, | |
| "position": [ | |
| 440, | |
| 560 | |
| ], | |
| "id": "11752006-d124-47cd-a22d-127c0df60747", | |
| "name": "Extract from File" | |
| }, | |
| { | |
| "parameters": { | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "5d982d54-2428-40e5-92af-edb9074b9e56", | |
| "name": "response", | |
| "value": "={{ $json.response }}", | |
| "type": "string" | |
| } | |
| ] | |
| }, | |
| "options": {} | |
| }, | |
| "type": "n8n-nodes-base.set", | |
| "typeVersion": 3.4, | |
| "position": [ | |
| 1100, | |
| 480 | |
| ], | |
| "id": "51dfb2cb-64a7-4d4a-8421-d4a70f0f6007", | |
| "name": "content" | |
| }, | |
| { | |
| "parameters": { | |
| "model": "nomic-embed-text:latest" | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.embeddingsOllama", | |
| "typeVersion": 1, | |
| "position": [ | |
| 2160, | |
| 560 | |
| ], | |
| "id": "75b027c7-9f5d-4383-a2b1-4c4f06df8998", | |
| "name": "Embeddings Ollama1", | |
| "credentials": { | |
| "ollamaApi": { | |
| "id": "9AOxA7OBSIn1RCAg", | |
| "name": "Ollama Office" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "name": "user_documents", | |
| "description": "Contains all the user's documents that you can check for context to answer user questions.", | |
| "topK": 20 | |
| }, | |
| "id": "537b3ef8-3d35-42ee-a3a3-37e0f085306f", | |
| "name": "Retrieve Documents", | |
| "type": "@n8n/n8n-nodes-langchain.toolVectorStore", | |
| "typeVersion": 1, | |
| "position": [ | |
| 2300, | |
| 200 | |
| ] | |
| }, | |
| { | |
| "parameters": { | |
| "tableName": { | |
| "__rl": true, | |
| "value": "documents", | |
| "mode": "list", | |
| "cachedResultName": "documents" | |
| }, | |
| "options": { | |
| "queryName": "match_documents" | |
| } | |
| }, | |
| "id": "35d1a97e-6162-4d0a-bfc2-ad82c743e7f9", | |
| "name": "Supabase Vector Store2", | |
| "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase", | |
| "typeVersion": 1, | |
| "position": [ | |
| 2100, | |
| 340 | |
| ], | |
| "credentials": { | |
| "supabaseApi": { | |
| "id": "263xXnCQ57LLBu5F", | |
| "name": "Production" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "model": "qwen3:8b", | |
| "options": {} | |
| }, | |
| "type": "@n8n/n8n-nodes-langchain.lmOllama", | |
| "typeVersion": 1, | |
| "position": [ | |
| 2420, | |
| 320 | |
| ], | |
| "id": "40aa6f0b-067b-4ba9-bc64-1be0c1d426da", | |
| "name": "Ollama Model", | |
| "credentials": { | |
| "ollamaApi": { | |
| "id": "9AOxA7OBSIn1RCAg", | |
| "name": "Ollama Office" | |
| } | |
| } | |
| }, | |
| { | |
| "parameters": { | |
| "content": "## Data In" | |
| }, | |
| "type": "n8n-nodes-base.stickyNote", | |
| "position": [ | |
| -360, | |
| -300 | |
| ], | |
| "typeVersion": 1, | |
| "id": "41ce5b0a-1761-4910-9dca-d7154ed29905", | |
| "name": "Sticky Note" | |
| }, | |
| { | |
| "parameters": { | |
| "content": "## Daa Out", | |
| "color": 5 | |
| }, | |
| "type": "n8n-nodes-base.stickyNote", | |
| "position": [ | |
| 2060, | |
| -220 | |
| ], | |
| "typeVersion": 1, | |
| "id": "431d2240-d9bf-481b-a570-24e49e35cacf", | |
| "name": "Sticky Note1" | |
| } | |
| ], | |
| "connections": { | |
| "ProcessAssets": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "HTTP Request", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "HTTP Request": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "HTTP Request1", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Supabase Vector Store": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Loop Over Items", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Default Data Loader": { | |
| "ai_document": [ | |
| [ | |
| { | |
| "node": "Supabase Vector Store", | |
| "type": "ai_document", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Embeddings Ollama": { | |
| "ai_embedding": [ | |
| [ | |
| { | |
| "node": "Supabase Vector Store", | |
| "type": "ai_embedding", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "When chat message received": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Ollama Chat Model1": { | |
| "ai_languageModel": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_languageModel", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "hybrid_search": { | |
| "ai_tool": [ | |
| [] | |
| ] | |
| }, | |
| "Compression": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "List", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Read/Write Files from Disk": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Read/Write Files from Disk1", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Read/Write Files from Disk1": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Compression", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Loop Over Items": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "No Operation, do nothing", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ], | |
| [ | |
| { | |
| "node": "Extract from File", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "List": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Loop Over Items", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "No Operation, do nothing": { | |
| "main": [ | |
| [] | |
| ] | |
| }, | |
| "HTTP Request1": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Read/Write Files from Disk", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "HTTP Request2": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "content", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Extract from File": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "HTTP Request2", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "content": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Supabase Vector Store", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Embeddings Ollama1": { | |
| "ai_embedding": [ | |
| [ | |
| { | |
| "node": "Supabase Vector Store2", | |
| "type": "ai_embedding", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Retrieve Documents": { | |
| "ai_tool": [ | |
| [ | |
| { | |
| "node": "AI Agent", | |
| "type": "ai_tool", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Supabase Vector Store2": { | |
| "ai_vectorStore": [ | |
| [ | |
| { | |
| "node": "Retrieve Documents", | |
| "type": "ai_vectorStore", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Ollama Model": { | |
| "ai_languageModel": [ | |
| [ | |
| { | |
| "node": "Retrieve Documents", | |
| "type": "ai_languageModel", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| } | |
| }, | |
| "pinData": { | |
| "ProcessAssets": [ | |
| { | |
| "headers": { | |
| "host": "n8n-business-hub.apps.thedailyaistudio.com", | |
| "user-agent": "pg_net/0.14.0", | |
| "content-length": "694", | |
| "accept": "*/*", | |
| "content-type": "application/json", | |
| "x-forwarded-for": "3.147.147.72", | |
| "x-forwarded-host": "n8n-business-hub.apps.thedailyaistudio.com", | |
| "x-forwarded-port": "443", | |
| "x-forwarded-proto": "https", | |
| "x-forwarded-server": "536677c81f48", | |
| "x-real-ip": "3.147.147.72", | |
| "accept-encoding": "gzip" | |
| }, | |
| "params": {}, | |
| "query": {}, | |
| "body": { | |
| "type": "INSERT", | |
| "table": "project_assets", | |
| "record": { | |
| "id": "4242e59c-f5de-45bb-8054-c9bd3914ed2b", | |
| "name": "pickleball_facts_2023.pdf", | |
| "type": "pdf", | |
| "status": "pending", | |
| "metadata": { | |
| "original_name": "pickleball_facts_2023.pdf", | |
| "upload_method": "file_upload" | |
| }, | |
| "file_path": "projects/c8914667-6c92-46a7-98c0-b5a7201c6e6e/ba511afd-b28b-4062-89c2-425c0cc9c144_pickleball_facts_2023.pdf", | |
| "file_size": 30446, | |
| "mime_type": "application/pdf", | |
| "created_at": "2025-07-13T20:28:49.456296+00:00", | |
| "project_id": "c8914667-6c92-46a7-98c0-b5a7201c6e6e", | |
| "updated_at": "2025-07-13T20:28:49.456296+00:00", | |
| "uploaded_by": "3801beb2-9ad3-49e0-ac11-ee7c5d60788a" | |
| }, | |
| "schema": "public", | |
| "old_record": null | |
| }, | |
| "webhookUrl": "https://n8n-business-hub.apps.thedailyaistudio.com/webhook/process/assets", | |
| "executionMode": "production" | |
| } | |
| ] | |
| }, | |
| "meta": { | |
| "templateCredsSetupCompleted": true, | |
| "instanceId": "9e541fc4f8c045ab228fc3663ff2746d730c24f6e7aa45d9d0a9fc9baf1635dd" | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment