Applications Won't Be Coded. They'll Be Declared.
JSON Schema defines data. Markdown defines logic. The AI agent is the runtime. This is the post-code application model.
Every useful abstraction in computing has done the same thing: kill a layer of complexity so humans can think at a higher level. Punchcards gave way to assembly. Assembly gave way to C. C gave way to Python. Each generation let builders express intent with less mechanical overhead. The trajectory is obvious if you stop and look at it. We are moving toward natural language as the programming interface, and we are closer than most people realize.
The next layer to be absorbed is code itself.
Not all code. Not systems programming, not kernel development, not the infrastructure that makes agents possible in the first place. But the application layer, the CRUD apps, the business logic, the workflow engines, the internal tools that consume 80% of enterprise development budgets. That code is dead. It just doesn’t know it yet.
The Claim
The post-code application has three components. JSON Schema defines the data model. Markdown defines the business logic. An AI agent is the runtime. There is no backend to deploy. No frontend to build. No database migration to run. No CI/CD pipeline for business logic changes. You change a skill document and the agent’s behavior changes the moment it reads it.
This is not a prediction. This is what Upjack does today. It is the first framework built entirely on this premise, and NimbleBrain uses it on every client engagement.
The implications are severe for anyone in the business of writing custom software. When the abstraction layer moves from code to documents, the economics of application development collapse. A team of four engineers spending three months on a custom tool becomes one person spending three days writing schemas and skills. The output is functionally identical. The maintenance burden is a fraction. The business owner can read (and modify) the application logic herself.
This is not low-code or no-code. Those paradigms constrain you to whatever the platform builder imagined. Declarative applications are unconstrained. Any logic you can express in natural language becomes a skill. Any data structure you can define in JSON Schema becomes an entity. The agent runtime handles everything between intent and execution.
The age of building applications by writing code for business logic is ending. The age of declaring applications by structuring knowledge is here.
The Evidence
What a Declarative Application Looks Like
An Upjack application is a directory of documents. No source code. No compiled artifacts. No build step. Here is what lives inside:
A manifest file (JSON). This declares the application’s name, version, description, and the entities and skills it contains. Think of it as a package.json for a business process, except instead of listing code dependencies, it lists the knowledge artifacts that define how the application works.
Entity schemas (JSON Schema). These define the data model. A lead entity has fields for name, company, score, stage, notes. A campaign entity has fields for target criteria, messaging templates, status. Standard JSON Schema with validation rules. No ORM. No database migration. The agent reads the schema and knows the shape of the data.
Skills (Markdown). These are the business logic. A skill called qualify-lead.md contains the rules for how a lead gets scored: what signals matter, what thresholds trigger progression, what edge cases require human review. A skill called draft-outreach.md contains the rules for composing personalized outreach: tone, length, which entity fields to reference, when to escalate. These are not prompts. They are persistent, versioned, testable documents that encode domain expertise.
MCP servers providing tool access. The agent needs to interact with external systems, a CRM, an email platform, a database. MCP (Model Context Protocol) servers provide standardized tool interfaces. The agent calls tools through MCP the same way a developer calls an API. NimbleBrain has built 21+ MCP servers across CRM, communication, data, and infrastructure domains.
Total lines of application code: zero. The agent IS the runtime. It reads the schemas to understand the data. It reads the skills to understand the logic. It calls MCP tools to interact with external systems. The application exists as structured knowledge, not as compiled instructions.
A Real Engagement
A client needed a lead qualification and outreach application. Their sales team was manually reviewing inbound leads, scoring them against undocumented criteria that lived in the VP of Sales’ head, and writing personalized outreach emails one at a time. The process consumed 15 hours per week across three people.
The traditional approach would have looked like this: two developers, three to four weeks, a React frontend, a Node.js backend, a PostgreSQL database, API integrations with their CRM and email platform, a deployment pipeline, and ongoing maintenance. Conservative estimate: $40,000-60,000 in development cost, plus $3,000-5,000 per month in maintenance and hosting.
The Upjack approach: one person, three days.
Day one: interviewed the VP of Sales, documented her qualification criteria as four entity schemas (lead, company, campaign, outreach sequence) and six skills (score lead, qualify lead, draft outreach, manage campaign, enrich company data, escalate to human). Every skill was written in plain English, reviewed by the VP herself, and edited until it matched her judgment.
Day two: connected an MCP server for their CRM (HubSpot) and another for their email platform. Configured the manifest. Ran the first batch of leads through the system.
Day three: refined two skills based on the VP’s feedback on the first batch output. The VP made one of those edits herself. She opened the markdown file, changed a scoring threshold, and saved. The agent’s behavior changed immediately.
The result: same functionality as the $50K custom application. The VP of Sales can read every piece of logic in the system. She can modify qualification criteria without filing a Jira ticket. Onboarding a new sales rep means pointing them at the skills directory and saying “read these.” The entire application fits in a folder you could email.
The Economic Collapse
The numbers tell the story.
Custom software for internal business tools costs $50,000-200,000 and takes 2-6 months to build. A declared application costs days and a fraction of the budget. But the cost gap is not even the important part. The important part is the maintenance gap.
Traditional applications ossify. Business logic gets buried in code that only the original developers understand. When the business changes (and it always changes) someone has to trace through conditionals and database queries to find where the old logic lives and update it. This is why enterprise software is always six months behind the business.
Declared applications stay current because the logic is readable. A VP modifying a skill document is no different from a VP editing a policy memo. The abstraction matches the domain. When your lead scoring criteria change because you enter a new market segment, you open qualify-lead.md, update the criteria, and save. There is no deployment. There is no release cycle. There is no “we’ll get to that in the next sprint.”
This is what Business-as-Code looks like in practice. The business logic is the code. The documents are the application.
The Counterarguments
Every thesis worth writing generates real objections. Here are the four we hear most.
”Declarative can’t handle edge cases.”
This is backwards. Edge cases are where traditional code breaks and skills shine.
Code handles edge cases through branching logic: if-else chains, switch statements, guard clauses. Every edge case adds complexity. After enough of them, the code becomes brittle and unreadable. Developers call this “spaghetti logic” and it is the normal end state of any sufficiently complex business application.
Skills handle edge cases through judgment. A skill can say: “If the lead is from a Fortune 500 company but the contact is a junior title, escalate to a senior rep for manual review. Use your judgment on whether the company’s AI maturity suggests they’re early-stage or just haven’t updated their team page.” Try encoding that in a Python function. Skills encode the same kind of judgment-heavy, context-dependent decision-making that experienced operators use every day. That is literally their purpose.
The Skills-as-Documents model doesn’t avoid complexity. It encodes complexity in the medium best suited for it: natural language with structured context.
”This is just prompt engineering with a fancy name.”
No. And this distinction matters.
A prompt is an ephemeral instruction. You type it, the model responds, the prompt is gone. There is no version history. There is no testing. There is no reuse across contexts. Prompt engineering is the art of crafting one-shot instructions that happen to work.
A schema is a structured data definition with validation rules, type constraints, and relationships. It is the same JSON Schema used across the software industry for API contracts and data modeling. It is not a prompt. It is architecture.
A skill is a persistent, versioned, testable document that encodes domain expertise. It lives in version control. It has a change history. It can be reviewed by domain experts who have never written a line of code. It is loaded into the agent’s context at runtime as structured knowledge, not fired off as a one-time instruction.
This is the difference between Context Engineering and prompt engineering. Prompts are fragile. Context is structural. Upjack applications are context, not prompts.
”AI is too unreliable for production applications.”
The unreliability people fear comes from deploying AI without context. A bare language model with no domain knowledge, no entity definitions, no decision rules. Yes, that is unreliable. It hallucinates. It guesses. It confuses one client with another. This is the experience most people have had with AI, and they extrapolate it to all AI applications.
With proper Context Engineering, reliability is a solved problem for business operations. When the agent has schemas defining the exact data structures, skills defining the exact decision logic, and MCP tools providing access to the actual systems of record. It operates within a well-defined corridor. The agent is not guessing. It is executing documented procedures against structured data with tool access to real systems.
NimbleBrain has deployed dozens of Upjack applications across client engagements. Lead qualification, onboarding workflows, compliance monitoring, content production, internal operations. 89% end-user adoption rate across engagements. These are not demos. They are production systems running real business processes with real consequences.
Reliability is not an inherent property of the technology. It is a function of how much context you give it. Give it none and it fails. Give it structured, complete context and it works. Upjack’s entire architecture is designed to give it complete context by default.
”What about performance? What about scale?”
Fair question. Honest answer: declarative applications are not for everything.
If you need to process a million transactions per second, write Rust. If you need sub-millisecond response times for a trading system, write C++. If you need to render 60 frames per second in a game engine, declarative apps are not your tool.
But that is not what most enterprise software does. Most enterprise software takes data from one system, applies business rules, and puts results into another system. It manages workflows. It enforces policies. It routes decisions. It generates reports. This is judgment work, not computation work, and judgment work is exactly what AI agents excel at.
Know your boundaries. Declarative applications replace the 80% of enterprise software that is business logic and workflow. They do not replace the 20% that is infrastructure, real-time processing, or compute-intensive systems. The 80% is where the budget goes. That is the market that is collapsing.
The Conclusion
The history of computing is a series of abstraction jumps, and each one made the previous layer invisible to the builder. Assembly programmers worried that high-level languages would be too slow. They were right, briefly. Then hardware caught up and nobody wrote assembly for business logic again. The same pattern is playing out now. Code is not disappearing. It is moving down the stack, into the infrastructure that makes declarative applications possible.
The builder of 2027 will not write a Python backend for a lead qualification tool. She will define a lead schema, write a qualification skill, connect an MCP server to the CRM, and deploy. The agent reads the schema, follows the skill, calls the tools, and the application works. If the qualification criteria change next quarter, she opens the skill document, edits it, and saves. No sprint planning. No code review. No deployment.
Stop writing CRUD apps. Stop building backends for business logic that changes every quarter. Stop paying $150K for custom software that is out of date by the time it ships.
Declare your schemas. Write your skills. Let the agent be the runtime.
The future of application development is Business-as-Code, and the frameworks to build on it (starting with Upjack) already exist. We are not predicting this shift. We shipped it.
Frequently Asked Questions
What does 'declarative application' mean?
A declarative application defines WHAT the application does (schemas for data, skills for logic) rather than HOW it does it (code). The AI agent handles the how: reading the schema to understand the data model, following the skill to execute the logic, and calling MCP tools to interact with external systems. The builder focuses on structuring knowledge, not writing implementation code.
Does this mean programmers are unnecessary?
No. Someone needs to design the schemas, write the skills, and build the agent infrastructure. But the skill set shifts from writing code to structuring knowledge.
What is Upjack?
Upjack is NimbleBrain's open-source framework for declarative AI applications. Apps are defined as JSON schemas plus markdown skills, with an AI agent as the runtime. See upjack.dev.
Can declarative apps handle complex business logic?
Yes. Skills-as-Documents can encode arbitrarily complex decision logic, including edge cases, escalation paths, and context-dependent judgment calls. The AI agent reads the skill and applies judgment, something traditional code can't do. In practice, skills handle nuance better than branching code because natural language can express conditions that would require dozens of if-else chains to approximate.
Is this just no-code with extra steps?
No. No-code tools constrain you to their builder's imagination, you can only do what the platform anticipated. Declarative apps are unconstrained, any logic expressible in natural language can be a skill. The difference is fundamental: no-code platforms limit complexity to keep things visual, while declarative apps handle arbitrary complexity because the AI agent interprets natural language instructions directly.