Why We Started Almadar
I have built the same application at least a dozen times. Different companies, different industries, different logos on the login screen, but underneath, the same patterns over and over again. User management. CRUD forms. Data tables. Dashboards. State handling. The same architecture decisions, the same boilerplate, the same bugs in the same places.
At some point, I stopped and asked myself: why are we still doing this?
The Boilerplate Trap
Early in my career, I thought the repetition was just part of the job. You learn a framework, you build an app, you move on to the next project and build essentially the same app again with different field names. Every new project started with weeks of setup: authentication, routing, database models, API endpoints, form validation, error handling. The interesting work, the actual business logic that made each project unique, was maybe 20% of the total effort. The other 80% was plumbing.
I spent years convincing myself this was normal. Everyone does it this way. Frameworks help. Libraries help. But they only help at the edges. The core problem remained: every application I built was roughly 80% identical to the last one, and I was rewriting that 80% from scratch every single time.
The waste was staggering when I actually stopped to calculate it. Not just my time, but the time of entire teams. Designers redesigning the same patterns. QA testers retesting the same flows. Project managers re-estimating the same tasks. We had turned software development into an expensive, manual assembly line where skilled engineers spent most of their time doing work that a machine could do, if only someone gave the machine the right instructions.
The Scale Problem
The real wake-up call came when I worked on large enterprise systems in Saudi Arabia, including the national e-invoicing platform. These were not side projects or startup MVPs. These were systems that hundreds of thousands of businesses would depend on, systems where a bug in the wrong place could disrupt an entire economy.
At that scale, the fragility of traditional development becomes impossible to ignore. When you have dozens of developers working across hundreds of files, every change becomes a risk. Someone renames a field in the backend but forgets the frontend. Someone adds a new state to a workflow but does not update the validation logic. Someone fixes a bug in one place and introduces two new bugs somewhere else. The codebase grows, the team grows, the coordination overhead grows, and the whole thing becomes slower and more expensive with every passing month.
I watched organizations throw more people at these problems. More developers, more testers, more managers. And it helped, temporarily, the way adding more lanes to a highway temporarily reduces traffic. But the fundamental architecture was the problem, not the headcount.
What struck me most was the contrast between the importance of these systems and the primitive way we were building them. We were constructing critical national infrastructure using the same methods we used to build a to-do app, just with more people and more meetings. There had to be a better way.
The Realization
The idea did not arrive in a single flash. It was more like a slow accumulation of observations that eventually reached a tipping point.
I had been watching the rise of large language models and thinking about what AI could actually do for software development. Not autocomplete for code, that felt like putting a faster engine on a horse cart. The real opportunity was something deeper: what if AI could generate entire applications, not line by line, but all at once, from a high-level description?
The problem with that idea is that natural language is ambiguous. Tell an AI "build me a task manager" and you will get something, but it will not be what you wanted. The gap between what you say and what you mean is enormous. You need something in between, a structured language that is precise enough for a machine to execute but expressive enough for a human to reason about.
That is when the pieces clicked. What if we created a schema language, a way to describe the complete behavior of an application in a single, declarative document? Not just the data model, but the states, the transitions, the UI patterns, the business rules. Everything an application does, captured in one place.
If you had that language, then a compiler could turn it into a working application. And if you had that compiler, then an AI could generate the schema from a conversation with a human. The human describes what they want, the AI produces the schema, the compiler produces the application. No boilerplate. No repetition. No 80% waste.
