What Most Guides Get Wrong About AI Systems
Most tutorials on building AI automation are just glorified prompt engineering guides. They show you a clever, 2000-word mega-prompt that supposedly does everything from research to writing to formatting. It works once in the demo, you get excited, you try to build a business process on it, and it fails unpredictably. The problem isn’t your prompt. The problem is that a single prompt isn’t a system.
A real AI system is plumbing. It’s a series of small, specialized, and resilient steps, not one giant, fragile brain. It’s about managing state, handling errors, and connecting discrete tools. The magic isn’t in one perfect prompt that writes a blog post; it’s in a workflow where one AI agent generates an outline, another finds sources, a third drafts sections, and a fourth checks for consistency. This approach is more work to set up, but it’s the only way to build something that runs reliably without you babysitting it every morning. Forget the single-prompt dream. It’s a trap.
The Core Components: State, Tools, and Transitions
To build durable AI systems, you need to think like a programmer, even if you’re using no-code tools. Every automated workflow is composed of three fundamental parts.
AI Side Hustles
Practical setups for building real income streams with AI tools. No coding needed. 12 tested models with real numbers.
Get the Guide → $14
- State: This is the memory of your system. It’s the information that gets passed from one step to the next. In a simple case, the state might just be a single piece of text, like a customer email. In a more complex system, it could be a structured JSON object containing a user ID, research notes, a list of sources, and a draft status. Managing state is critical. Losing state mid-workflow means the system has amnesia and can’t complete its task.
- Tools: These are the verbs of your system. A tool is a specific capability you give your AI. This could be ‘call the Google Search API’, ‘read a file from Dropbox’, ‘query our database’, or ‘send an email’. The most important tool, of course, is ‘ask an LLM to think’. By breaking down capabilities into discrete tools, you create predictable, testable actions. Instead of asking one big prompt to ‘research a topic and write a post’, you use a ‘search’ tool, a ‘scrape_url’ tool, and a ‘write_draft’ tool.
- Transitions: This is the logic that connects the steps. It’s the ‘if this, then that’ brain of the operation. After a tool runs, the transition logic decides what to do next based on the result. If the ‘search’ tool returns a list of URLs, the transition logic might send each URL to the ‘scrape_url’ tool. If the search tool returns an error, the transition logic should trigger an error-handling path, maybe by trying a different search query or notifying a human. This is where most no-code automations fall apart—they lack robust transition logic.
Thinking in these terms forces you to design a process, not just write a prompt. It’s the difference between a hobby project and a production asset.
A Concrete Example: Building a Research Agent with Make
Let’s make this real. I’ll show you how to build a simple agent that takes a topic, researches it, and produces a summary brief. We’ll use Make.com as our orchestrator (the platform that handles state and transitions) and connect to a few external tools.
The goal: A new row in an Airtable base with a ‘Topic’ field triggers a workflow that fills in a ‘Research Brief’ field.
Here’s the step-by-step flow inside Make:
- Trigger: New Record in Airtable. The workflow starts when we add a new topic, like “The history of GraphQL APIs”.
- LLM Step 1: Generate Questions. We send the topic to an LLM. I use the Claude 3 Sonnet API for this because it’s fast and cheap. The prompt isn’t fancy:
Given the topic "{{topic}}", generate a JSON array of 5 specific questions a researcher would ask to understand this topic. Output ONLY the JSON array, with no preamble. - Tool Step 1: Search. Make’s iterator function takes the JSON array from Claude and runs a new branch for each question. In each branch, we use a search API. I prefer Serper for this; it’s fast and the $10/month plan is generous for most uses. We call the Serper API with the question as the query.
- Tool Step 2: Scrape. The search API returns a list of URLs. We take the top 2-3 URLs and pass them to a scraping tool. You can use a built-in Make HTTP module with a service like ScraperAPI, or a dedicated scraping tool. The goal is to get the raw text content from each page.
- LLM Step 2: Synthesize. This is the hard part. We now have a big mess of unstructured text from multiple sources. We bundle it all up and send it back to Claude with a clear, structured prompt. This is a prompt I’ve had success with:
You are a research analyst. I will provide you with a topic and a block of raw text scraped from several web pages. Your task is to synthesize this information into a concise research brief of 3-4 paragraphs. Ignore irrelevant text like navigation links, ads, and comments. Focus only on the substantive content. Topic: {{topic}}. Raw Text: {{scraped_text}}. - Final Step: Update Airtable. We take the generated brief from the LLM and use the Airtable ‘Update a Record’ module to write it back to the correct field in our base.
This multi-step process is far more reliable than a single prompt that tries to do everything. Each step is simple, has a clear input and output, and can be debugged individually.
