Stop prompting chatbots and start building agentic AI systems that work for you. This guide shows you how to build a research agent with no-code tools.
What Most Guides Get Wrong About Agentic AI
Most tutorials on building agentic AI systems are written by developers, for developers. They immediately throw you into complex Python frameworks like LangChain or tell you to run AutoGPT locally. That’s massive overkill for 90% of real business problems. You don’t need a PhD in computer science to make an AI do a sequence of tasks.
The real work isn’t about picking the most complex reasoning model. It’s about the plumbing. It’s about state management, error handling, and connecting simple tools together in a reliable loop. The fancy frameworks hide this complexity, which is great until it breaks—and good luck finding docs for your specific edge case then. We’re going to focus on the plumbing, using tools you can actually manage without writing a line of code.
Forget the hype about artificial general intelligence. We’re building glorified state machines that use an LLM as a router. That’s it. And it’s incredibly effective.
The Core Loop: Think, Plan, Act
An agent is just a loop. It looks at a goal, decides on one small step, does that step, and then looks again. That’s the whole concept. Don’t let anyone tell you it’s more complicated than that at its core.
🤖
Recommended Reading
AI Side Hustles
12 Ways to Earn with AI
Practical setups for building real income streams with AI tools. No coding needed. 12 tested models with real numbers.
- Think: The LLM looks at the main objective and the current status. What have I done so far? What do I know right now?
- Plan: Based on that, the LLM decides the very next action to take. Not a 10-step master plan. Just the next single thing. This is the most critical part to get right.
- Act: A separate service—an API call, a database lookup, a script—executes the action the LLM planned. The result of this action is then fed back into the ‘Think’ step of the next loop.
Your job as the operator is to define the tools it can use and to manage the information (the ‘state’) between each loop. The AI is just the brain that chooses which tool to pick up next.
Your First Agent: A Simple Company Researcher
Let’s build something real. The goal: give our agent a company name, and have it automatically search the web, gather information, and write a one-paragraph summary of the company’s business model and recent news. This is a classic lead enrichment task.
Here are the tools for the job:
- LLM: We’ll use Claude 3 Sonnet via its API. It’s great at following structured prompt instructions and is cheaper than GPT-4 for this kind of work.
- Search Tool: The Serper Google Search API. It’s fast, reliable, and way cheaper than trying to scrape Google yourself. Their free plan is often enough to get started.
- Orchestrator: Make (formerly Integromat). I use it for all my multi-step automations. Its visual interface and built-in data stores are perfect for agentic loops. Honestly, trying to build this in Zapier automations is a path to madness.
Here’s the process, step-by-step, inside Make.com:
- The Trigger: Start with a ‘Watch New Rows’ module for Google Sheets. When you add a company name to a new row in a specific sheet, the agent wakes up.
- Initialize State: Create a JSON object to hold the agent’s memory. It should include the `goal`, `company_name`, `gathered_notes`, `actions_taken`, and a `loop_count`. Store this in a Make.com Data Store.
- The Planner: This is an API call to Claude. You’ll send it the current state and a special prompt asking it to choose the next tool. (More on this prompt in a minute).
- The Router: Use Make.com’s Router module to split the path based on the Planner’s output. If the AI said `search_web`, the flow goes to the Serper module. If it said `summarize_text`, it goes to a different Claude module. If it said `finish`, it goes to the final step.
- The Executor: This is the set of tool modules connected to the Router. The Serper module runs a search. A different Claude module takes a block of text and summarizes it. Each tool does one specific job.
- Update State: After a tool runs, take its output (e.g., the search results) and update the JSON object in your Data Store. Increment the `loop_count`.
- The Loop: This is the clever part. The flow now goes back to the Planner module (Step 3). Because the state has been updated, the Planner will make a new, more informed decision on its next run.
- The Exit: The Router has one path for the `finish` command. When the AI decides it’s done, this path takes the final compiled notes and updates the original row in the Google Sheet with the summary. The process stops.
How Do You Actually Manage State in No-Code?
This is the question that separates a toy project from a real production system. State is just the agent’s memory. What has it done? What has it learned? Without a reliable way to store this between steps, your agent is an amnesiac. It will just do the same search over and over.
My big gripe is with how some platforms handle this. Trying to build a loop in Zapier is a nightmare. Their official method involves the Zap calling itself via a webhook, which feels clunky, gets expensive with task usage, and makes tracking a single agent’s ‘session’ incredibly difficult. I burned a weekend trying to make it work reliably before giving up.
This is why I build all my agents in Make.com. My favorite feature is their built-in Data Store. It’s a simple key-value database that lives inside your Make account. You can create a record when the agent starts, and then read and write to that same record on every loop. It’s persistent. It’s clean. It just works. This is the boring, unsexy part that actually makes a system functional.
For what you get, the pricing is fair. Make.com’s Core plan is around $9/month and gives you more than enough operations and data storage for building several sophisticated agents. The free plan is a joke for anything more than a simple A-to-B data transfer; you’ll hit the operations limit almost immediately with a looping agent.
The Prompt is Not a Magic Wand
Your agent’s reliability depends almost entirely on the quality of your ‘Planner’ prompt. A vague instruction like “Research this company” will produce inconsistent, unpredictable results. You need to be ruthlessly specific and force the model to give you structured output.
This is a system prompt that works. It constrains the model and forces it to think like a machine, not a conversationalist.
You are a research assistant bot. Your main goal is to compile a dossier on {{company_name}}. You must operate by choosing one tool at a time to incrementally build up your knowledge.Here is the information you have gathered so far in this session:{{current_research_notes}}Here are the queries you have already run:{{actions_taken}}Based on the goal and the current information, what is the single next action you should take?Your only available tools are:1. search_web(query: string) - Searches Google for a specific query. Use this to find articles, news, and official websites. Do not repeat queries.2. summarize_text(text: string) - Takes a block of text and produces a concise summary. Use this after gathering raw text from search results.3. finish(report: string) - Call this tool ONLY when you have enough information to write the final report. The report should be a single paragraph.Respond ONLY with the next tool call in a valid JSON format. Do not add any other text or explanation.Example response:{"tool": "search_web", "query": "latest funding round for {{company_name}}"}
See the difference? We’re giving it context (what it already knows), defining its exact capabilities, and telling it the precise format for its answer. This turns the LLM from a creative Writer.com into a predictable component in a larger machine.
How to Debug When This Breaks
And it will break. Building agentic AI systems involves a lot of trial and error. Here are the three most common failure modes and how to fix them.
1. The Infinite Loop. The agent gets stuck, running the same `search_web` query over and over. This happens when its state isn’t updated properly or the prompt isn’t specific enough. The fix is twofold. First, add a `loop_count` to your state. If it exceeds a certain number (say, 7), force the `finish` action. It’s better to get an incomplete report than a massive bill. Second, explicitly pass in the list of `actions_taken` to the prompt, as shown above, and instruct the model not to repeat itself.
2. Malformed JSON Output. The LLM ignores your instructions and replies with `Sure, here is the JSON you requested!` followed by the JSON block. This breaks the next step in your automation, which is expecting pure JSON. The fix is to be more aggressive in your prompt: `Respond ONLY with the JSON. Do not include markdown formatting or any other explanatory text.` Models like Claude 3 and GPT-4 are better at this, but you should still have an error-handling route in your Make.com scenario that catches a JSON parsing failure, logs the raw output, and stops the execution.
3. Hallucinated Tool Calls. The agent decides it needs a tool you haven’t defined, like `find_ceo_on_linkedin()`, and returns that in its response. This is a sign your prompt isn’t constrained enough. Reiterate that the provided list is the *only* set of available tools. Your Router module should also have a ‘fallback’ or ‘default’ route. If the tool name from the LLM doesn’t match any of your defined paths, it should go down this route, log an error, and stop.
Building these systems requires a shift in thinking. You’re not chatting with an AI; you’re programming its decision-making process with careful prompts and rigid logic. It’s less about AI magic and more about solid automation architecture.
We cover this in more depth elsewhere — deeper coverage of AI agent platforms.
If you’d rather skip the build and deploy a working version in an afternoon, we’ve packaged this entire workflow as a deployable AI automation blueprint. You can find it in the vault at deepusecase.com/vault.