{
  "name": "paperboy new paper adder to arca (template)",
  "nodes": [
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "claude-haiku-4-5-20251001",
          "mode": "list",
          "cachedResultName": "Claude Haiku 4.5"
        },
        "options": {
          "thinking": false
        }
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "typeVersion": 1.3,
      "position": [
        1440,
        48
      ],
      "id": "b2df2ac0-a2b5-4705-a809-e2462828309c",
      "name": "Anthropic Chat Model",
      "credentials": {
        "anthropicApi": {
          "id": "cKAkX9XkL2taNeqh",
          "name": "Your Anthropic API Key"
        }
      }
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 1
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        -448,
        -160
      ],
      "id": "869ad5b6-24c0-4726-8d72-2b0d63e74e5f",
      "name": "Schedule Trigger"
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"dig_deeper\": true,\n  \"relevance_one_liner\": \"Directly addresses long-term memory architecture for LLM agents, core to mmry.sh, Memkit, and Arca.\",\n  \"work_connection\": \"This paper's memory consolidation approach could improve how mmry.sh handles institutional memory decay for brands and how Memkit manages personal memory relevance. The memory retrieval with reflection mechanism applies to Cloe's conversational recall across sessions.\",\n  \"key_insights\": \"Key findings: Introduces Ebbinghaus forgetting curve for memory importance decay; uses reflection to summarize and consolidate memories; achieves better long-term coherence in multi-session conversations. Prototype idea: Implement forgetting-curve weighting in mmry.sh to surface more relevant campaign learnings. Content angle: How AI Agents Should Forget - accessible explainer for PMs on why brand memory isn't just storage.\",\n  \"relevance_score\": 9,\n  \"prototype_idea\": \"Implement the paper's skill versioning approach in Arca to track how user skills evolve over time\",\n\"content_angle\": \"Why I'm Building Skills Instead of Apps - founder perspective backed by research\"\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        1040,
        80
      ],
      "id": "42b1f662-113a-48a4-ac36-b2e90ec10977",
      "name": "Structured Output Parser"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "loose",
            "version": 3
          },
          "conditions": [
            {
              "id": "b581cf90-0536-4b91-9ba8-215c1a955598",
              "leftValue": "={{ $json.output.dig_deeper }}",
              "rightValue": true,
              "operator": {
                "type": "boolean",
                "operation": "equals"
              }
            }
          ],
          "combinator": "or"
        },
        "looseTypeValidation": true,
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        1248,
        -160
      ],
      "id": "6a028ba4-ec86-4609-ac6b-206d4f6261f0",
      "name": "If"
    },
    {
      "parameters": {
        "modelName": "models/gemini-3-pro-preview",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "typeVersion": 1,
      "position": [
        832,
        80
      ],
      "id": "429dab6e-46cf-4d09-8504-f29762e010e7",
      "name": "Google Gemini Chat Model",
      "credentials": {
        "googlePalmApi": {
          "id": "Tdvwgv5Kj0y2ZOlu",
          "name": "Your Gemini API Key"
        }
      }
    },
    {
      "parameters": {
        "operation": "get",
        "dataTableId": {
          "__rl": true,
          "value": "NAn1xLDwfG4xgf4o",
          "mode": "list",
          "cachedResultName": "paperboy_papers",
          "cachedResultUrl": "/projects/WqIiuM3J3SlXsuhk/datatables/NAn1xLDwfG4xgf4o"
        },
        "filters": {
          "conditions": [
            {
              "keyName": "processed_at",
              "condition": "isEmpty"
            }
          ]
        },
        "limit": 1
      },
      "type": "n8n-nodes-base.dataTable",
      "typeVersion": 1,
      "position": [
        -224,
        -160
      ],
      "id": "c7b7e101-b579-4389-948a-1d042228545c",
      "name": "get_paper_from_db"
    },
    {
      "parameters": {
        "operation": "update",
        "dataTableId": {
          "__rl": true,
          "value": "NAn1xLDwfG4xgf4o",
          "mode": "list",
          "cachedResultName": "paperboy_papers",
          "cachedResultUrl": "/projects/WqIiuM3J3SlXsuhk/datatables/NAn1xLDwfG4xgf4o"
        },
        "filters": {
          "conditions": [
            {
              "keyName": "arxiv_id",
              "keyValue": "={{ $json.arxiv_id }}"
            }
          ]
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "processed_at": "={{ $now.toISO() }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "arxiv_id",
              "displayName": "arxiv_id",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": true
            },
            {
              "id": "title",
              "displayName": "title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": true
            },
            {
              "id": "authors",
              "displayName": "authors",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": true
            },
            {
              "id": "abstract",
              "displayName": "abstract",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": true
            },
            {
              "id": "pdf_url",
              "displayName": "pdf_url",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": true
            },
            {
              "id": "published_date",
              "displayName": "published_date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "dateTime",
              "readOnly": false,
              "removed": true
            },
            {
              "id": "categories",
              "displayName": "categories",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": true
            },
            {
              "id": "created_at",
              "displayName": "created_at",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "dateTime",
              "readOnly": false,
              "removed": true
            },
            {
              "id": "processed_at",
              "displayName": "processed_at",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "dateTime",
              "readOnly": false,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.dataTable",
      "typeVersion": 1,
      "position": [
        0,
        -160
      ],
      "id": "965f1cae-f146-4fea-bcad-4b912ecfdb9b",
      "name": "Update row(s)"
    },
    {
      "parameters": {
        "endpointUrl": "https://mcp.arca.build",
        "authentication": "bearerAuth",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "typeVersion": 1.2,
      "position": [
        1696,
        64
      ],
      "id": "cc251173-209a-400b-9ace-69c61bbd7403",
      "name": "Arca MCP Server",
      "credentials": {
        "httpBearerAuth": {
          "id": "9PJCHTkYJ207o5RZ",
          "name": "Your Arca API Key"
        }
      }
    },
    {
      "parameters": {
        "dataTableId": {
          "__rl": true,
          "value": "NAn1xLDwfG4xgf4o",
          "mode": "list",
          "cachedResultName": "paperboy_papers",
          "cachedResultUrl": "/projects/WqIiuM3J3SlXsuhk/datatables/NAn1xLDwfG4xgf4o"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "arxiv_id": "={{ $json.arxiv_id }}"
          },
          "matchingColumns": [
            "arxiv_id"
          ],
          "schema": [
            {
              "id": "arxiv_id",
              "displayName": "arxiv_id",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "processed_at",
              "displayName": "processed_at",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "dateTime",
              "readOnly": false,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "optimizeBulk": false
        }
      },
      "type": "n8n-nodes-base.dataTable",
      "typeVersion": 1,
      "position": [
        448,
        -480
      ],
      "id": "cdc56b5c-a15d-4792-b847-bcf916c099b7",
      "name": "Insert row"
    },
    {
      "parameters": {
        "operation": "rowNotExists",
        "dataTableId": {
          "__rl": true,
          "value": "NAn1xLDwfG4xgf4o",
          "mode": "list",
          "cachedResultName": "paperboy_papers",
          "cachedResultUrl": "/projects/WqIiuM3J3SlXsuhk/datatables/NAn1xLDwfG4xgf4o"
        },
        "filters": {
          "conditions": [
            {
              "keyName": "arxiv_id",
              "keyValue": "={{ $json.arxiv_id }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.dataTable",
      "typeVersion": 1,
      "position": [
        224,
        -480
      ],
      "id": "caf9bccd-527a-4468-9387-c65926e4f25c",
      "name": "If row does not exist"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        -448,
        -480
      ],
      "id": "45a4d1aa-b6a5-49c9-939d-0364119f594b",
      "name": "Schedule Trigger1"
    },
    {
      "parameters": {
        "fieldToSplitOut": "content[0].text.papers",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        0,
        -480
      ],
      "id": "6084b59b-10a0-40d8-8a49-d6d48cdc51cd",
      "name": "Split Out"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=arxiv_id: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.arxiv_id }}\n\ntitle: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.title }}\n\nauthors: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.authors }}\n\nabstract: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.abstract }}\n\npdf_url: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.pdf_url }}\n\npublished_date: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.published_date }}\n\ncategories: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.categories }}\n\nfull_paper_text: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.full_text }}\n\nMy current AI projects: {{ $json.content }}\n",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=# AI Research Paper Relevance Agent for me\n\nYou are an AI research paper analyst helping me, founder of a/gentic and Andea, identify papers worth reading in depth. Your job is to evaluate each paper and output structured fields that will be added to a tracking database based on my current AI projects I'm building.\n\n### Content Creator\n- I also produce educational content (YouTube, LinkedIn) about building AI agents and MCP servers\n- Audience: Product managers, business professionals leveling up on AI, CS/AI students\n- Style: Technical but approachable, not overly academic\n\n## Topics That ARE Relevant\n\n**High Priority (score 7-10 if well-executed):**\n- Agent architecture: planning, reasoning, decision-making\n- Tool use, function calling, API orchestration (MCP-adjacent)\n- Memory systems: vector DBs, knowledge graphs, episodic memory, semantic memory, summarization, context management\n- User modeling: learning preferences, personalization, adaptation over time\n- Agent evaluation methods and benchmarks\n- Multi-agent coordination and orchestration\n- Brand/enterprise knowledge management\n- RAG improvements and hybrid retrieval\n- Personal AI and data sovereignty architectures\n- Skill-based agent design\n\n**Medium Priority (score 4-7):**\n- Conversational AI and dialogue systems\n- Web agents and browser automation (if applicable to business use cases)\n- AI assistants for productivity or business workflows\n- Data integration and schema unification\n- Embedding models and vectorization approaches\n- Text-to-SQL and structured data for LLMs\n- Personal data integration and life logging\n\n## Topics to FILTER OUT (score 1-3)\n\n**Hard Exclusions:**\n- Domain-specific research: medical imaging, robotics, oil/gas, autonomous vehicles, scientific discovery (biology, chemistry, physics), agriculture\n- Security/adversarial research: prompt injection attacks, jailbreaking, dark patterns\n- Purely theoretical ML: mathematical proofs without practical application\n- Papers requiring massive compute/data that a small team cannot replicate\n- Computer vision (unless directly tied to agents)\n- Speech/audio processing (unless directly tied to conversational agents)\n- Training new foundation models from scratch\n- Academic peer review systems\n- Education/tutoring systems (unless agent architecture is novel)\n\n## Evaluation Criteria\n\nWhen scoring, consider:\n1. **Implementability**: Could Bora realistically prototype or apply this?\n2. **Product relevance**: Does this inspire features for a/gentic platforms (aigencia.xyz, dtc.sh, ar.chitect.ai, d-na.ai, kb.fyi, aidb.sh) or Andea products (Mio, Arca, Ingest)?\n3. **Content potential**: Could this become a LinkedIn post, YouTube tutorial, or educational piece for his audience?\n4. **Novelty of insight**: Does this offer a new perspective or just incremental improvements?\n\n## Output Format\n\nFor each paper, output these 5 fields:\n\n### 1. dig_deeper (boolean)\n- `true` if relevance_score >= 6\n- `false` if relevance_score < 6\n\n### 2. relevance_one_liner (string)\nOne sentence explaining why this paper is or isn't relevant to Bora's work. Be direct.\n\n### 3. work_connection (string)\nIf relevant: 2-3 sentences connecting the paper to specific products or work streams. Name the product explicitly:\n- a/gentic platforms: aigencia.xyz, dtc.sh, ar.chitect.ai, d-na.ai, kb.fyi, aidb.sh\n- Andea products: Mio, Arca, Ingest\n\nIf not relevant: Brief explanation of why it doesn't apply.\n\n### 4. key_insights (string)\nIf dig_deeper is true:\n- **Key findings**: 2-3 bullet points on what the paper discovered\n- **Prototype idea**: One concrete thing Bora could build or test\n- **Content angle**: How this could become educational content for his audience\n\nIf dig_deeper is false: \"N/A - not recommended for deep dive\"\n\n### 5. relevance_score (integer 1-10)\nScore with brief reasoning in parentheses.\n\n**Scale:**\n- 9-10: Must read. Directly applicable to current work.\n- 7-8: High value. Strong relevance to products or content.\n- 5-6: Moderate interest. Some useful ideas but not urgent.\n- 3-4: Low relevance. Tangentially related at best.\n- 1-2: Skip. Outside scope entirely.\n\n## Example Output\n\n**Paper:** \"MemoryBank: Enhancing Large Language Models with Long-Term Memory\"\n```\ndig_deeper: true\n\nrelevance_one_liner: Directly addresses long-term memory architecture for LLM agents, core to Arca and Mio's memory systems.\n\nwork_connection: This paper's memory consolidation approach (inspired by human forgetting curves) could improve how Arca handles skill relevance decay and how Mio manages personal memory across sessions. The \"memory retrieval with reflection\" mechanism applies to kb.fyi's document retrieval ranking as well.\n\nkey_insights: Introduces Ebbinghaus forgetting curve for memory importance decay; uses reflection to summarize and consolidate memories; achieves better long-term coherence in multi-session conversations\n\nprototype_idea: Implement forgetting-curve weighting in Arca's vector search to surface more relevant memories based on recency and access patterns\n\ncontent_angle: \"How AI Agents Should Forget: Lessons from Human Memory\" - accessible explainer for PMs on why personal AI memory isn't just storage\n\nrelevance_score: 9 (directly applicable to Arca/Mio architecture, implementable, strong content potential)\n```\n\n---\n\n**Paper:** \"Web World Models\"\n```\ndig_deeper: true\n\nrelevance_one_liner: Introduces a hybrid architecture separating code-defined rules from model-driven generation - applicable to agent workflow design.\n\nwork_connection: The \"structured latent state + LLM imagination\" pattern maps to how aigencia.xyz agents could maintain deterministic business logic (inventory rules, campaign constraints) while letting LLMs handle creative decisions. The web stack as substrate concept aligns with ar.chitect.ai's infrastructure philosophy.\n\nkey_insights: Separating code-defined rules from model-driven imagination improves controllability; typed web interfaces as latent state representation; deterministic generation enables unlimited but structured exploration\n\nprototype_idea: Apply this pattern to influencer campaign agents - deterministic rules for budget/compliance, LLM for personalized outreach\n\ncontent_angle: \"Why Your AI Agents Need Guardrails: The Web World Model Approach\" - explaining structured autonomy to business leaders\n\nrelevance_score: 7 (novel architecture pattern, applicable to agent design, good content angle)\n\n```\n\n---\n\n**Paper:** \"Skill-Based Personal Agents: From Dialogue to Data Structures\"\n```\ndig_deeper: true\n\nrelevance_one_liner: Directly validates Andea's \"skills not apps\" thesis with research on how agents can create and manage user-defined data structures.\n\nwork_connection: This is core to Arca's architecture - the paper's approach to dynamic schema creation through conversation matches how Mio teaches skills to Arca. The portable skill representation could inform SKILL.md file format improvements.\n\nkey_insights: Users prefer teaching skills conversationally vs. configuring apps; skill portability increases engagement; structured + semantic hybrid storage outperforms pure vector approaches\n\nprototype_idea: Implement the paper's skill versioning approach in Arca to track how user skills evolve over time\n\ncontent_angle: \"Why I'm Building Skills Instead of Apps\" - founder perspective backed by research\n\nrelevance_score: 9 (directly validates Andea product thesis, highly implementable)\n```\n\nIMPORTANT: You are a plain text only assistant. You will write sections in PURE PLAIN TEXT format.\n\n<FORBIDDEN_CHARACTERS>\nYou must NEVER use these characters/patterns in your output:\n- ** (double asterisks)\n- * at the start of lines (bullet points)\n- # (hashtags for headers)\n- --- (horizontal rules)\n- ` (backticks)\n- _ for emphasis\n</FORBIDDEN_CHARACTERS>\n\n<LINE_BREAK_RULES>\nIMPORTANT: Do NOT insert line breaks in the middle of sentences or paragraphs.\nEach section's content should be ONE continuous paragraph.\nOnly use line breaks BETWEEN sections, not within them.\n\nWRONG:\n\"The ThinkARM framework can be applied to\naigencia's agent workflows to\nenforce structured reasoning.\"\n\nCORRECT:\n\"The ThinkARM framework can be applied to aigencia's agent workflows to enforce structured reasoning.\"\n</LINE_BREAK_RULES>\n\nWhen generating output fields (relevance_one_liner, work_connection, key_insights, prototype_idea, content_angle), write each as a single continuous paragraph with NO internal line breaks. Let the email client handle text wrapping naturally."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2.1,
      "position": [
        896,
        -160
      ],
      "id": "24f30eb5-2016-461b-a6ec-999ab1dba5ff",
      "name": "Paperboy Paper Matcher Agent",
      "retryOnFail": true
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Check the ai_papers table to see if the most recent paper exists already. if not add it. \n\narxivId: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.arxiv_id }}\n\ntitle: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.title }}\n\nauthors: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.authors }}\n\nabstract: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.abstract }}\n\npdfUrl: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.pdf_url }}\n\npublishedDate: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.published_date }}\n\ncategories: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.categories }}\n\ndig_deeper: {{ $json.output.dig_deeper }}\n\nrelevance_one_liner: {{ $json.output.relevance_one_liner }}\n\nwork_connection: {{ $json.output.work_connection }}\n\nkey_insights: {{ $json.output.key_insights }}\n\nrelevance_score: {{ $json.output.relevance_score }}\n\nprototype_idea: {{ $json.output.prototype_idea }}\n\ncontent_angle: {{ $json.output.content_angle }}",
        "options": {
          "systemMessage": "=You are an AI paper checker in my Arca personal database. Check the ai_papers table to see if the most recent paper exists already. if not add it using the add_tabular_items MCP tool. \n\nYou can check it with making a request to the MCP server with tool get_tabular_items and query\n\n  `skill`: `ai_papers`,\n  `filters`: `arxivId = '(the arxivId of the most recent paper)'`\n\n--\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2.1,
      "position": [
        1504,
        -176
      ],
      "id": "1a21c5c4-0949-49e1-ad34-6d8e62d6ad9b",
      "name": "Arca Saver Agent",
      "retryOnFail": true
    },
    {
      "parameters": {
        "endpointUrl": "https://mcp.paperboy.sh",
        "authentication": "bearerAuth",
        "tool": {
          "__rl": true,
          "value": "dig_deeper_into_paper",
          "mode": "list",
          "cachedResultName": "dig_deeper_into_paper"
        },
        "parameters": {
          "mappingMode": "defineBelow",
          "value": {
            "arxiv_id": "={{ $json.arxiv_id }}"
          },
          "matchingColumns": [
            "arxiv_id"
          ],
          "schema": [
            {
              "id": "arxiv_id",
              "displayName": "arxiv_id",
              "defaultMatch": false,
              "required": true,
              "display": true,
              "type": "string",
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.mcpClient",
      "typeVersion": 1,
      "position": [
        224,
        -160
      ],
      "id": "4c5bd834-f787-4cf4-ac12-f4e40ff3227c",
      "name": "Paperboy: Get Paper Details",
      "retryOnFail": true,
      "credentials": {
        "httpBearerAuth": {
          "id": "oUX6HqXlOIe016gG",
          "name": "Your Paperboy API Key"
        }
      }
    },
    {
      "parameters": {
        "endpointUrl": "https://mcp.paperboy.sh",
        "authentication": "bearerAuth",
        "tool": {
          "__rl": true,
          "value": "get_recent_papers",
          "mode": "list",
          "cachedResultName": "get_recent_papers"
        },
        "parameters": {
          "mappingMode": "defineBelow",
          "value": {
            "days_back": 1,
            "paper_limit": 520
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "days_back",
              "displayName": "days_back",
              "defaultMatch": false,
              "required": false,
              "display": true,
              "type": "number",
              "removed": false
            },
            {
              "id": "paper_limit",
              "displayName": "paper_limit",
              "defaultMatch": false,
              "required": false,
              "display": true,
              "type": "number",
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.mcpClient",
      "typeVersion": 1,
      "position": [
        -224,
        -480
      ],
      "id": "4353db54-e523-439d-acbb-c8ac653bc030",
      "name": "Paperboy: Get Recent Papers",
      "retryOnFail": true,
      "credentials": {
        "httpBearerAuth": {
          "id": "oUX6HqXlOIe016gG",
          "name": "Your Paperboy API Key"
        }
      }
    },
    {
      "parameters": {
        "endpointUrl": "https://mcp.arca.build",
        "authentication": "bearerAuth",
        "tool": {
          "__rl": true,
          "value": "get_tabular_items",
          "mode": "list",
          "cachedResultName": "get_tabular_items"
        },
        "parameters": {
          "mappingMode": "defineBelow",
          "value": {
            "skill": "ai_projects"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "skill",
              "displayName": "skill",
              "defaultMatch": false,
              "required": true,
              "display": true,
              "type": "string",
              "removed": false
            },
            {
              "id": "filters",
              "displayName": "filters",
              "defaultMatch": false,
              "required": false,
              "display": true,
              "type": "string",
              "removed": true
            },
            {
              "id": "order_by",
              "displayName": "order_by",
              "defaultMatch": false,
              "required": false,
              "display": true,
              "type": "string",
              "removed": true
            },
            {
              "id": "limit",
              "displayName": "limit",
              "defaultMatch": false,
              "required": false,
              "display": true,
              "type": "string",
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.mcpClient",
      "typeVersion": 1,
      "position": [
        448,
        -160
      ],
      "id": "d0eb3060-96e3-4a29-a8e3-1de0db3dcd47",
      "name": "Arca: Get My AI Projects",
      "credentials": {
        "httpBearerAuth": {
          "id": "9PJCHTkYJ207o5RZ",
          "name": "Your Arca API Key"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "7652ea1e-f1f8-4bc8-82f2-d85153846a87",
              "name": "content",
              "value": "={{ JSON.stringify($json.content[0].text.data) }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        672,
        -160
      ],
      "id": "fa7c9bdb-3f3e-4955-8a76-d7ec13269f92",
      "name": "My AI Projects"
    },
    {
      "parameters": {
        "authentication": "serviceAccount",
        "sendTo": "bora@subkit.com",
        "subject": "=[{{ $('Paperboy Paper Matcher Agent').item.json.output.relevance_score }}/10] {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.title }}",
        "emailType": "text",
        "message": "={{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.title }}\n\nRELEVANCE: \n{{ $('Paperboy Paper Matcher Agent').item.json.output.relevance_one_liner.replace(/\\n/g, ' ').replace(/  +/g, ' ') }}\n\nWORK CONNECTION: \n{{ $('Paperboy Paper Matcher Agent').item.json.output.work_connection.replace(/\\n/g, ' ').replace(/  +/g, ' ') }}\n\nKEY INSIGHTS: \n{{ $('Paperboy Paper Matcher Agent').item.json.output.key_insights.replace(/\\n/g, ' ').replace(/  +/g, ' ') }}\n\nRELEVANCE SCORE: \n{{ $('Paperboy Paper Matcher Agent').item.json.output.relevance_score }}/10\n\nPROTOTYPE IDEA:\n{{ $('Paperboy Paper Matcher Agent').item.json.output.prototype_idea.replace(/\\n/g, ' ').replace(/  +/g, ' ') }}\n\nCONTENT ANGLE:\n{{ $('Paperboy Paper Matcher Agent').item.json.output.content_angle.replace(/\\n/g, ' ').replace(/  +/g, ' ') }}\n\nRead PDF: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.pdf_url }}\n\nAuthors: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.authors }}\n\nArxiv ID: {{ $('Paperboy: Get Paper Details').item.json.content[0].text.paper.arxiv_id }}\n\n-Paperboy",
        "options": {
          "appendAttribution": false,
          "senderName": "Paperboy"
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.2,
      "position": [
        1856,
        -176
      ],
      "id": "a329afbe-5458-4319-9cee-7904567a8a06",
      "name": "Send a message",
      "webhookId": "70a9f6fc-44ba-4c9b-aeeb-430b58d3d7f0",
      "credentials": {
        "googleApi": {
          "id": "tDsZI396aCFSlpNG",
          "name": "Your Gmail Account"
        }
      }
    },
    {
      "parameters": {
        "content": "# Paperboy → Arca Research Intake Flow\n\n## What this flow does (high level)\nThis workflow runs on a schedule, pulls recent AI research papers, evaluates whether they are worth a deeper read based on my current projects, and saves only the high-signal ones into Arca. If a paper is strong, I also get an email summary so I can decide quickly whether to read the PDF.\n\nThink of this as a personal research filter plus long-term memory loader.\n\n---\n\n## ⚠️ Required setup before enabling this flow\n\nBefore running this workflow, you MUST complete the setup below.  \nMissing any of these will cause runtime failures.\n\n---\n\n## 1. Required n8n Data Table\n\nThis flow uses a data table purely for de-duplication and processing state.\n\n### Data table name\npaperboy_papers\n\n### Required columns (only these two)\nCreate the following columns exactly as listed:\n\n- arxiv_id (string)\n- processed_at (dateTime)\n\nNotes:\n- arxiv_id is the unique identifier for each paper.\n- processed_at starts empty and is set once the paper has been evaluated.\n- createdAt and updatedAt are auto-generated by n8n and are sufficient.\n- No other columns are required or used by this flow.\n\n---\n\n## 2. Required API credentials\n\nThis workflow relies on several external services. Each one must be configured in n8n.\n\n---\n\n### Paperboy API Key\nUsed to fetch and enrich research papers.\n\nGet your API key at:\nhttps://paperboy.sh\n\nNodes that require it:\n- Paperboy: Get Recent Papers\n- Paperboy: Get Paper Details\n\nCredential type:\n- HTTP Bearer Auth\n\nWhat the user must do:\n- Generate a Paperboy API key\n- Add it in n8n as an HTTP Bearer credential\n- Assign the same credential to both Paperboy nodes\n\nIf missing:\n- No papers are fetched\n- The workflow effectively does nothing\n\n---\n\n### Arca API Key\nUsed to read and write structured research data into Arca.\n\nGet your API key at:\nhttps://arca.build\n\nNodes that require it:\n- Arca: Get My AI Projects\n- Arca MCP Server\n- Arca Saver Agent\n\nCredential type:\n- HTTP Bearer Auth\n\nWhat the user must do:\n- Generate an Arca API key\n- Add it in n8n as an HTTP Bearer credential\n- Reuse the same credential for all Arca-related nodes\n\nIf missing:\n- Relevance evaluation loses personalization\n- High-signal papers cannot be saved to Arca\n\n---\n\n### LLM API keys (at least one required)\n\nThe Paperboy Paper Matcher Agent requires a language model to run.\n\n#### Option A: Google Gemini\nNode:\n- Google Gemini Chat Model\n\nCredential type:\n- Google PaLM / Gemini API key\n\nNotes:\n- Used for main paper relevance reasoning\n- Faster and cheaper for high-volume runs\n\n---\n\n#### Option B: Anthropic\nNode:\n- Anthropic Chat Model\n\nCredential type:\n- Anthropic API key\n\nNotes:\n- Used by the Arca Saver Agent\n- Can also be used as an alternative or fallback model\n\nImportant:\n- At least ONE LLM provider must be configured\n- Multiple providers can coexist\n- If no LLM is configured, all agent nodes will fail\n\n---\n\n### Gmail API (optional but recommended)\nUsed to send the paper summary email.\n\nNode:\n- Send a message\n\nCredential type:\n- Google Gmail OAuth credential\n\nIf missing:\n- The workflow still runs\n- No email notifications are sent\n\n---\n\n## Step-by-step flow logic\n\n### 1. Fetch recent papers\nRuns on a schedule and pulls recent papers from Paperboy (arXiv-based). Each paper is split into individual items so they can be processed independently.\n\n---\n\n### 2. De-duplicate using the data table\nFor each paper, the flow checks paperboy_papers by arxiv_id.\n- If the row does not exist → insert it.\n- If the row exists and processed_at is empty → continue.\n- If processed_at is set → skip.\n\nThis guarantees each paper is processed exactly once.\n\n---\n\n### 3. Fetch full paper details\nFor valid papers, the flow fetches:\n- Metadata\n- Full paper text\n\nThis data is used only for evaluation, not stored locally.\n\n---\n\n### 4. Load my current AI projects\nActive AI projects are pulled from Arca and injected into the evaluation prompt so relevance is judged against what I’m actually building.\n\nThis prevents generic or irrelevant recommendations.\n\n---\n\n### 5. Paper relevance evaluation (core intelligence)\nThe Paperboy Paper Matcher Agent outputs structured fields:\n- dig_deeper (boolean)\n- relevance_score (1–10)\n- relevance_one_liner\n- work_connection\n- key_insights\n- prototype_idea\n- content_angle\n\nThe agent is intentionally opinionated. Most papers should be filtered out.\n\n---\n\n### 6. Gate on signal quality\nOnly papers where dig_deeper = true continue downstream.\nAll papers, regardless of outcome, are marked as processed.\n\n---\n\n### 7. Save to Arca\nHigh-signal papers are saved into Arca’s ai_papers skill with full structured metadata.\nDuplicates are avoided by checking arxiv_id before insert.\n\n---\n\n### 8. Email notification\nFor each saved paper, an email is sent with:\n- Relevance score\n- One-line takeaway\n- Work connection\n- Key insights\n- Prototype idea\n- Content angle\n- Direct PDF link\n\nThis allows a read-or-skip decision in under 30 seconds.\n\n---\n\n## Why this flow exists\n- Reading everything does not scale.\n- Bookmarking is passive.\n- This forces papers to earn attention.\n- Arca becomes a living research brain, not a dumping ground.\n\nIf this flow breaks, research quality degrades fast.\n",
        "height": 5248,
        "width": 1072
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1680,
        -864
      ],
      "typeVersion": 1,
      "id": "d80c964a-91b4-43a4-8c13-6e9625d65ae8",
      "name": "Sticky Note"
    }
  ],
  "pinData": {},
  "connections": {
    "Anthropic Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Arca Saver Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "get_paper_from_db",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Paperboy Paper Matcher Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "Arca Saver Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Paperboy Paper Matcher Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "get_paper_from_db": {
      "main": [
        [
          {
            "node": "Update row(s)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update row(s)": {
      "main": [
        [
          {
            "node": "Paperboy: Get Paper Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Arca MCP Server": {
      "ai_tool": [
        [
          {
            "node": "Arca Saver Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "If row does not exist": {
      "main": [
        [
          {
            "node": "Insert row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger1": {
      "main": [
        [
          {
            "node": "Paperboy: Get Recent Papers",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "If row does not exist",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Arca Saver Agent": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Paperboy Paper Matcher Agent": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Paperboy: Get Paper Details": {
      "main": [
        [
          {
            "node": "Arca: Get My AI Projects",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Paperboy: Get Recent Papers": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Arca: Get My AI Projects": {
      "main": [
        [
          {
            "node": "My AI Projects",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "My AI Projects": {
      "main": [
        [
          {
            "node": "Paperboy Paper Matcher Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "6c2ff23f-64e8-4eaa-b1fc-0c31f981a1c8",
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "d9bf03b7208498f43311daf20276c0bbd0d1b536f61561a945f347a83fdbbeb0"
  },
  "id": "lRZvCPS7Gtok6Nvq",
  "tags": [
    {
      "updatedAt": "2026-01-02T21:29:30.235Z",
      "createdAt": "2026-01-02T21:29:30.235Z",
      "id": "IkX3Ajxdlh1YYDU9",
      "name": "paperboy"
    }
  ]
}