
TL;DR: This is a guest post from , founder and CEO of GenSX. GenSX is a React-based framework for building LLM apps and in my experience with it it’s far more superior in both capabilities and performance than any other, including no-code tools. Evan makes compelling arguments on redefining your relationship to coding and I find this an interesting perspective. Enjoy.
Most people can’t code. So if you’re running a business, for years you’ve had only two options when you wanted to improve your productivity with the tools and systems you used.
Buy better software
Pay someone to build better software
For years, we've been promised a future where anyone could build software without learning to code, giving us a third option. A promised third option was that you could just drag-and-drop some blocks, connect a few nodes, and voilà — you've built a fully functional app without writing a single line of code!
But if you've spent any time with these tools, you know the disappointing reality:
The cliff is real and it's steep. You start with a simple workflow, add a few conditions, and suddenly you're staring at a tangled spider web that even you, its creator, can't understand. It's the programming equivalent of a plate of spaghetti.
The abstraction always leaks. No-code tools hide complexity until they don't. Then you're stuck googling technical concepts you were promised you'd never need to learn.
Everyone eventually graduates. Nearly every power user of no-code tools eventually hits the wall and thinks, "I wish I could just write a simple if statement here!"
I recently reviewed a "customer success story" where a marketing team built an automation workflow using n8n. The screenshot they proudly displayed looked like a circuit board designed by a caffeinated squirrel — 47 nodes connected by crisscrossing lines, with nested conditions and loops that would make any programmer's eye twitch. So even the best no-code tools fail at their simple promise.
This leads to a radical idea:
What if the easier path was actually code all along?
David’s notes: As a business owner you should be able to just prompt a model, have it do stuff for you and then whenever it does something right, save that so it remembers. Model Context Protocol allows us to plug any API into Claude Desktop, but you still need to manually prompt your AI to keep doing stuff for you. As I’m building Alfred, I faced the very real limitations of no-code tools and started looking for an alternative. That alternative is GenSX.
Graphs vs Trees
No-code tools use graphs to build automations. Make, Zapier, Gumloop, n8n all have some kind of node-based logic with a visual editor. Learning how to think in nodes and edges is usually the first step of learning a no-code tool. The problem with graphs is that they become convoluted faster than you could realize. Look at this Deep Research clone from Jim Le:
Graphs can manage a lot, but they get complicated. A simpler approach is to use a special type of graph called trees. While graphs can have multiple inputs, outputs, cycles, etc, trees follow a strict parent-child relationship making them hierarchical.
Most automations you’ll need are more or less completed sequentially — one step after the other. This means that the node-based visual editor makes it actually harder to understand the process. Let’s look at another example: washing the dishes.
It’s a simple sequential process and if we want to visualize it using nodes and edges, we get something like this:
But there’s an easier way to understand this: Read it like a story.
Start washing the dishes
Prepare the workspace
Clear the table
Scrape leftover food into the trash
Fill the sink with warm soapy water
Set up the drying rack and towels
Sort all dishes by type
Wash the glasses first
Rinse each glass thoroughly
Dry each glass carefully
Put each glass away in the cabinet
Wash all the plates
Rinse each plate completely
Dry each plate with a clean towel
Stack plates in the cupboard
Wash the utensils
Rinse all utensils under running water
Dry the utensils
Sort and put away in the drawer
Wash the pots and pans last
Rinse thoroughly to remove all soap
Dry completely to prevent water spots
Put away in their proper places
Clean the sink itself
Wipe down all counters
Dishwashing is now complete
The only way to build automations like this is to write code. Which has been a problem for non-coders — until now.
LLMs Changed Everything (And So Did Component Models)
Something interesting happened while the no-code movement was busy creating increasingly complex visual programming environments: AI got really, really good at writing and explaining code. And simultaneously, component-based programming models like React became the dominant paradigm for building software.
Today's landscape is completely different:
User: I need to automate pulling data from our CRM, filtering out inactive leads, and sending a weekly summary to my team.
AI: Here's how you could do this with GenSX, which gives you React-like components for workflows:
import * as gensx from "@gensx/core";
import { fetchCRMData, filterInactiveLeads, generateReport, sendEmail } from "./utils";
const WeeklyLeadReport = gensx.Component(
"WeeklyLeadReport",
async () => {
// Fetch all lead data from CRM
const allLeads = await fetchCRMData();
// Filter out inactive leads
const activeLeads = filterInactiveLeads(allLeads);
// Generate the report
const report = generateReport(activeLeads);
// Send email
await sendEmail({
to: "team@company.com",
subject: "Weekly Lead Report",
body: report
});
return {
processedAt: new Date().toISOString(),
leadCount: activeLeads.length
};
}
);
Here’s the kicker: You don't need to understand every line! Not anymore. Let’s block out the bits of code that are hard to understand for non-coders:
Notice how readable this is compared to a visual flow with dozens of connected nodes. And if you want to add a condition? Just add an if statement. Want to customize the report format? It's just regular JavaScript.
You don’t have to add the code yourself. Claude, ChatGPT, Gemini will all write terrific JavaScript code for you.
The barrier to entry for coding has never been lower. LLM-powered tools like GitHub Copilot, Cursor, and Claude are transforming the coding experience from "staring at a blank editor" to "having a conversation about what you want to build."
This brings us to this new phenomenon what’s commonly known as Vibe Coding or what
refers to as Prompt-Driven Development as its more sophisticated cousin..The New Learning Curve
Let's be honest about something: the "no-code to code cliff" has been replaced by a gentler "prompt to code slope."
Instead of learning to drag-and-drop and then hitting a wall, you now have a continuous learning curve:
Start by describing what you want - Just explain your goal in plain English
Understand the suggested code - AI tools explain what they write line by line
Make small tweaks and ask questions - The feedback loop is instant
Gradually absorb programming concepts - You'll pick up the patterns naturally
This approach is fundamentally more sustainable than no-code because:
You're working with a medium (text) that scales infinitely better than visual nodes
You're learning transferable skills that work across platforms and tools
You're not constrained by what the no-code platform creators thought you might need
I recently watched a non-technical founder move from n8n to GenSX using Claude as his guide. He started by asking for a simple script to pull data from an API. Then, through conversation, he added error handling, pagination, and even a basic dashboard. At no point did he hit a wall where the AI said, "Sorry, you need to upgrade to our Pro plan to access this functionality."
Real No-Code Was Inside the Code All Along
The irony is that actual code is more "no-code" than no-code tools ever were. Let me explain:
No-code tools try to abstract away complexity but end up creating their own complexity.
Each platform has its own UI patterns, its own quirky limitations, its own proprietary ways of connecting things. You're not learning to code, but you are learning a complex system that only works within that specific platform.
If you’re not an engineer, even learning Make is hard at first.
Meanwhile, modern code with AI assistance is becoming increasingly:
Readable - Plain English variable names and clean structure
Self-documenting - Comments explain what the code does
Customizable - Change anything you want, not just what the platform allows
Transferable - Learn it once, use it across many different projects
Even the errors are more human now. Instead of cryptic failure states in a no-code platform, you get:
AI: I noticed an issue in your GenSX component. When you're trying to fetch data from the API, you might need to handle potential authentication errors.
Let's add a try/catch block:
try {
const response = await fetchData(apiUrl);
return response.data;
} catch (error) {
if (error.status === 401) {
console.error("Authentication failed - please check your API key");
// Retry with refreshed token or notify user
}
throw error;
}
Code is Eating No-Code (And React Patterns Are Leading the Way)
What's happening is nothing short of a revolution: code is eating no-code from the bottom up, and component-based models inspired by React are making it more accessible than ever.
The evidence is everywhere:
No-code platforms are adding code blocks - Nearly every major no-code tool now has some form of "insert custom code here" block, admitting that pure visual programming isn't enough.
AI coding assistants are growing faster than no-code tools - The adoption curve for tools like GitHub Copilot and Cursor is steeper than any no-code platform in history.
The knowledge gap is closing - With AI explaining code concepts in plain English, writing and understanding code faster than you ever could, the intimidation factor of programming is vanishing.
Think about what no-code was trying to solve: making software development accessible to more people. But it turns out that the better solution wasn't abstracting away code—it was making code itself more accessible through familiar patterns and models.
That's where frameworks like GenSX come in—they bring the intuitive component model of React to backend workflows, making them as easy to reason about as a React component tree, but without any of the baggage.
The Future Belongs to Conversation-Driven Development
We're entering an era of Prompt-Driven Development, where building software is less about knowing syntax and more about clearly articulating what you want to achieve.
This is genuinely democratizing tech in a way that no-code only promised:
User: I need to analyze Hacker News posts, find trends, and generate a report.
AI: That's a perfect use case for GenSX's component model. Here's how you could structure it:
import * as gensx from "@gensx/core";
import { OpenAIProvider } from "@gensx/openai";
export const AnalyzeHackerNewsTrends = gensx.Component(
"AnalyzeHackerNewsTrends",
({ postCount }) => {
return (
<OpenAIProvider apiKey={process.env.OPENAI_API_KEY}>
<FetchHNPosts limit={postCount}>
{(stories) => (
<AnalyzeHNPosts stories={stories}>
{({ analyses }) => (
<GenerateReport analyses={analyses}>
{(report) => (
<EditReport content={report}>
{(editedReport) => (
<WriteTweet
context={editedReport}
prompt="Summarize the HN trends in a tweet"
>
{(tweet) => ({ report: editedReport, tweet })}
</WriteTweet>
)}
</EditReport>
)}
</GenerateReport>
)}
</AnalyzeHNPosts>
)}
</FetchHNPosts>
</OpenAIProvider>
);
}
);
But you don’t have to stop there.
User: I don't understand this, I'm not technical. Explain in plain English.
AI: Let me explain that example in simple, non-technical terms:
The code shows a workflow that analyzes trending topics on Hacker News. Think of it as an assembly line with different stations, each doing a specific job:
Fetch Posts: First, it grabs a bunch of recent posts from Hacker News (like collecting raw materials)
Analyze Posts: Then it looks through those posts to identify patterns and topics (like sorting and categorizing the materials)
Generate Report: Next, it creates a report based on the analysis (like writing up findings)
Edit Report: Then it polishes the report to make it more readable (like proofreading)
Write Tweet: Finally, it creates a short summary that could fit in a tweet (like making a headline version)
Each step depends on the one before it - you can't analyze posts until you've fetched them, can't generate a report until you've done the analysis, and so on.
The nested structure <Component1>{(result) => <Component2 />}</Component1> is just saying "take the output from Step 1 and use it as input for Step 2" - like passing a document down an office workflow where each person adds their part before handing it to the next person.
Does that help make more sense of the example? It's essentially creating a sequence of tasks that process information and pass results along to the next task.
Notice how the AI doesn't just generate code—it explains the approach, suggests a component structure that makes the data flow clear, and creates something that reads almost like a story.This declarative approach is fundamentally more empowering than dragging boxes around. Then the conversational nature of using LLMs for this means that you can iterate over understanding anything 10x faster.
From n8n to GenSX: A Natural Evolution
If you've been using tools like n8n, Zapier, or Make, you've already learned the fundamentals of workflow thinking. The next step isn't more complex no-code—it's simpler code, written by AI.
The mental model shift is surprisingly small:
The difference is that GenSX doesn't force you into a visual paradigm that breaks down with complexity. Instead, it leverages the most successful UI programming model of all time—React components—and applies it to backend workflows.
This means creating code that is almost completely readable even if you’re not a programmer, following the tree logic and most importantly — Cursor, Claude or Lovable can write GenSX code on demand — because it’s just React, a framework that’s been around for a decade, has been battle-tested and most AI models will default to building React apps even without configuring anything.
The End of No-Code's False Promise
No-code tools promised a world where everyone could build software without learning to code. But they couldn't deliver on this promise because they were solving the wrong problem.
The issue was never that coding itself was too hard—it was that learning to code was too intimidating and the feedback loop was too slow.
LLMs have fixed both problems:
They remove the intimidation by explaining things in plain English
They accelerate the feedback loop by generating working code instantly
And frameworks like GenSX have solved the third problem:
They provide a familiar, intuitive model for expressing complex workflows
The result is a world where more people than ever before can create software by expressing their ideas clearly, getting immediate feedback, and iteratively improving their understanding—all using patterns that scale from simple to complex without hitting a wall.
This is the real democratization of software development—not by hiding code behind visual abstractions, but by making code itself more approachable and human.
GenSX is open source
If you've been stuck in no-code hell, trying to connect increasingly complicated nodes in n8n to build what should be a simple application, it's time to try a different approach.
Open up Cursor, Claude, or ChatGPT and just describe what you want to build with GenSX. Don't worry about syntax or programming concepts. Just have a conversation about your goals.
You might be surprised how quickly you go from:
"I wish I could add this one specific feature but my no-code platform doesn't support it"
to
"Let me just add a few lines of code to make this work exactly how I want."
The future of no-code isn't better visual programming tools. It's a world where writing code is as easy as having a conversation—and that future is already here with component models like GenSX that feel familiar from day one but scale with your ambitions.
Check out GenSX on GitHub to get started today. It’s open source and you can start vibe coding with Lovable or Cursor right away.
Thank you for the insights. It is extremely intellectually honest of you, a no-code expert, to share with us an opinion about the limitations of no-code. I'm sticking to n8n for now because my workflows are very simple and I haven't reached the point of diminishing returns, but this is very useful information. I'm trusting the lumberjack so much more now.
Hey! I loved this piece :) Also, I was wondering if you have a link to any writing about this Deep Research clone by 'Jim Lee'? A quick Google, xAI search, and Deep Research run have turned up nothing 🧐