Hi here, new to n8n. Started to create a workflow to copilot-apply to some roles that match with my profile, but I just can’t get the flow to work. Is it an architecture problem or am I doing something else wrong? Is this something doable or am I being too ambitious? If not possible, what could I do to make it at least usable? - for example, just getting the workflow to put all the links and info in a data table so I can apply easier. Should I start over?
This automation must:
-
Run every day at 9 AM.
-
Search multiple job boards daily for vacancies that match a candidate’s experience (single candidate).
-
Detect ATS keywords, URL, company, job information, role, and detect prompt injections and evidence.
-
Extract the information into a table.
A second trigger should create tailored versions of the resume and cover letter for each candidate and save these files in a Drive folder. It must also auto-fill forms so the candidate can decide whether to apply or not. It must upload the CV documents to each website.
If this is not possible or has limitations, tell me and we will do something simpler. I have access to Perplexity and Google Studio.
1 Like
Welcome @Camila_Andrea!
The a.ok(nodeExists) error usually means a node in the agent’s tool chain is referenced but not wired correctly - double-check that each tool node (Perplexity, HTTP) has a proper connection to the AI Agent node’s “Tool” input, not just the main flow. The OOM issue is a separate problem: with Gemini + multiple tools, the agent can loop many times accumulating a large context window, which exhausts memory. Set a max iterations limit on the Agent node (under Settings) - start with 5-10 and see if it completes.
For the architecture: your scope is fine, but I’d split it into two separate workflows - one for job discovery/extraction, one for document generation. Running everything in a single agent with this many tools makes debugging much harder.
1 Like
Hey Camila,
This is actually a really cool project, and it’s definitely doable in n8n — but the architecture needs some rethinking.
The crash you’re seeing is likely coming from the Agent node trying to handle too much at once. When you combine multiple tool calls (Perplexity search + job board scraping + form filling) inside a single Agent node, it can blow past memory limits, especially with Gemini.
Here’s what I’d suggest:
-
Break it into separate workflows.** Don’t try to do everything in one Agent node. Split it:
Workflow A: Daily cron → search job boards → filter matches → save to database
Workflow B: Triggered per match → Perplexity for ATS keyword analysis → format into spreadsheet
Workflow C: Manual trigger → generate tailored resume/cover letter per selected job
-
The Agent node works best for decision-making**, not for chaining multiple heavy HTTP requests. Use the Agent to decide WHICH jobs to apply for, not to scrape the jobs themselves.
-
For the form auto-fill part** — that’s the trickiest piece. Most job boards use unique form structures. A more practical approach is to have the workflow prepare everything (resume, cover letter, answers) and alert you to apply manually. I’ve found this 80/20 approach saves massive development time.
I build n8n workflows like this professionally — this kind of multi-step AI automation is actually my specialty. If you’d like me to help architect or build it out, send me a DM. Happy to jump on a quick call and map out the architecture for you.
Either way, great project idea — don’t scrap it, just restructure it.
1 Like
Two different errors alternating usually means two real problems stacked, and the reply above split them correctly. Worth tackling in this order.
The a.ok(nodeExists) error is a wiring problem: a tool node (Perplexity, the HTTP tool) is referenced by the agent but not connected into the AI Agent node’s Tool input correctly. Each tool has to connect to the agent’s ai_tool input, not into the main execution line. Open the agent node and confirm each tool shows up in its tools list, if one is wired to the main flow instead of the tool input, you get exactly this.
The out-of-memory is separate and it is the agent looping. With Gemini plus several tools, if the agent does not converge it keeps calling tools and accumulating context until it runs the instance out of memory. Cap it: set a max iterations limit on the agent so it cannot loop unbounded, and trim what each tool returns (the HTTP tool dumping a huge response into context is a common OOM cause). Fix the wiring first so it runs at all, then add the iteration cap so a non-converging run fails cleanly instead of eating memory.
For a beginner this is a doable workflow, you are not being too ambitious, you just hit two of the standard agent traps at once. Get one tool wired and working end to end before adding the second, it is much easier to debug one tool than three. Which tool were you wiring when the nodeExists error first showed up?
1 Like
This alternating error happens when the Node.js memory heap allocation (max-old-space-size) is completely overwhelmed by the concurrent execution data flowing through the Gemini and Perplexity context windows. When the container chokes, it either drops the node state tracking (a.ok(nodeExists) or hard-crashes with an Out-of-Memory error.
To keep this from bringing down your instance, you need to force n8n to prune past execution logs and expand the Node.js memory footprint inside your Docker environment variables.
Add these to your container setup right now:
NODE_OPTIONS=–max-old-space-size=4096
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=24
If you are running highly complex AI loops for a client project and need an ironclad server setup that won’t crash under load before Monday morning, let’s connect. I’m a backend infrastructure engineer; I can jump on a quick screen-share with you today, optimize your Docker compose layers, and stabilize your AI parsing engines for a flat $250. Drop me a DM if you want to get this fixed within 30 minutes!