June 9, 2025
8 min read

Enterprise — do not ignore Vibe Coding

Design-First Vibe Coding: The missing link to build Enterprise Applications with Vibe Coding (e.g. Replit)

Welive in a very different world today; you can build fully functional applications with Vibe Coding. But there is a lot of skepticism in the industry that these applications are not up to the mark, have security holes, and the application architecture is not scalable.

Automate over 80% of the system design lifecycle with AI

Video Play Icon

Play Video

We agree and will use a case study to illustrate some of the reasons behind it and some possible mitigation strategies.

IBM puts the definition of “Vibe Coding” as a fresh take in coding where users express their intention using plain speech and the AI transforms that thinking into executable code.

While vibe coding offers significant potential, it presents various technical and practical challenges. The following are some of the primary Limitations of Vibe Coding:

Code Quality Due to Hallucinations:

Although vibe coding is useful for prototyping and quick testing, the generated code often requires further optimization and refinement to meet quality standards, and hallucinations play a major role.

Complex code:

Vibe coding is well-suited for handling basic frameworks, but when faced with unique or complex requirements often found in real-world applications, it can become difficult to implement effectively.

Difficult to Debug:

AI-generated code can be challenging to debug due to its dynamic nature and the lack of a clearly defined architectural structure.

Maintenance and Updates:

Applications built using AI-generated code may become difficult to maintain and update, especially if the codebase lacks proper organization. This can make it hard for developers to understand the logic and implement necessary improvements.

Security:

Perhaps the most significant limitation is that security issues arise because AI-generated code often bypasses rigorous code reviews and security assessments. As a result, vulnerabilities may remain undetected and open to exploitation.

Interface with Enterprise Application:

Most of the enterprise systems are integrated with existing systems and have complex interfaces, and with AI-generated code, it is very difficult to define and integrate with these applications.

In summary, there seems general understanding in the industry that while vibe coding accelerates development, these challenges must be addressed to ensure robust, secure, and maintainable applications.

The traditional way to design an enterprise system/software is to elicit requirements from users and engineer these by implementing organizational constraints and eliminating wants from needs, integrating the business rules the enterprise has to run its business.

The next phase is to model the application components based on the user requirements, generally called system requirements or automation requirements, in the form of system use-cases whcih are generally defined in unified modeling language (UML). The system use-cases basically set the automation requirements for the enterprise.

System use-cases are then specified to delineate the user-and-system interactions in detail, the happy path or main scenarios required to run the business, possible exceptions, and alternate scenarios to handle errors or system/data limitations the organization might have. These use-case specifications dictate the UIs a system must have.

Important use-case specifications are generally translated into interaction diagrams, whcih are detailed instruction and messages between actors and system components, generally following UML. Interaction diagrams areimplementation of the system components independent of programming language; giving designers of the system control of the flow instead of the coder (in this case, the Vibe Coding platform/agent).

The next important step in the system design is the data model, setting the business entity definitions and relationships among business concepts. In the data model abstractions (conceptual/logical/physical), the experienced information modeller sets and defines cardinality among the business entities, which is very important to carry out the business. This is a very important step in the life cycle of the system design.

Based on the data models, businesses can decide the APIs they need. In traditional software development, developers build systems, and the APIs are exposed once the system is in place; this is called the bottom-up approach. This approach has limitations as the API design is an afterthought; on the other hand, in the API economy, the business can and should decide the APIs (and their monetization schemes) before any implementation is carried out. This is a top-down approach and is becoming very popular in the industry.

Let’s follow the traditional system design practice prior to Vibe Coding, with the help of a system design tool, autosad.ai

Let's design the system from a set of requirements. For privacy reasons, we have truncated some of the requirements

Functional Requirements:

  1. Implement user and identity management with role-based access control, SSO support, secure access via Identity-Aware Proxy, and HIPAA-compliant consent workflows.
  2. The Analytics & Insights Module shall provide dashboards for risk modeling and user engagement analytics
  3. The system shall dynamically onboard patients and build personalized care plans based on their health goals and history, utilizing Firestore for data management
  4. Implement a data storage and compliance layer using Firestore, Cloud SQL, and Cloud Storage to ensure Assured Workloads and HIPAA compliance
  5. The Corporate Portal shall provide dashboards for ….
  6. The system shall manage digital consents with features …
  7. The system shall provide a dynamic AI-supported health risk …
  8. The system shall provide individual users with personalized health …
  9. The system shall provide AI-driven care …
  10. The system shall enable corporate users to track …
  11. The system shall provide a virtual assistant …

Based on these requirements above, we generated the following system design models using (autosad.ai)

1. Use case model

Use-Case Model

2. Use-Case Specifications

We specified all use cases in detail, mostly with the click of a button, with a few manual additions with input from users.

Use Case Specifications

3. Interaction diagrams

We selected some mission-critical use case specifications and generated detailed interaction diagrams automatically.

Interaction Diagram

4. High-Level System Design

Based on the system components and the requirements (functional and non-functional requirements *note we have not shown the non-functional requirements here), Autosad.ai generated how the system will be deployed and what components it will have, using C4 modeling.

Conceptual System Architecture

5. API Endpoints System Should Have

Next, the system (autosad.ai) recommended a set of API endpoints to deliver the business requirements. Below is a sample for one use case.

Top Down Api Design
API Specifications

6. Database Design

It is very important that a business designs its data model and decides the relationships among the entities that represent business logic. The system Aautosad.ai generated a base data model, and we modified it to correct a few relationships.

Data Model

7. Deployment

The business requirements were to deploy the system in AWS. Autosad.aigenerated the following deployment model based on the requirements.

Deployment Model

Putting it all together, Autosad.ai generated a system architecture and design document, which was fed to Replit with the command “generate me a system based on the attached”.

Sample SAD Document

Replit took its suite time to generate a functional system. The resulting system has all the functionality the business required, and the data model is represented as per the design document. The functionality of the system represented the steps defined in the interaction diagrams, and the functional list was as it was in the use-case model.

Final System generated by Replit — no prompting required

We noticed that the resulting system has all the functionality required by the business, and we do not have to issue hundreds of prompts. We did not notice any hallucination as Replit only built what was in the design doc. The data model also had a one-to-one relationship with that of the design doc.

We believe following a design-first approach also help reduce or may eliminate the security risks, as the AI will generate only the code that is being asked. And under the hood (Claude) builds multiple agents which then collaborate in parallel to build a homogeneous system, whereas if we prompt over and over again, some parts of the system are disconnected and do not function as intended. Below are answers to most of the concerns.

Code Quality Due to Hallucinations:

By leveraging Autosad.ai to generate system designs before coding, we establish clear requirements and architectural guidelines up front. This minimizes hallucinations by providing structured blueprints for code generation, ensuring the resulting code aligns with the design and reduces the need for significant post-generation optimization.

Complex Code:

The system design-first approach enables thorough analysis and breakdown of complex functionalities before implementation. Autosad.ai’s designs articulate how to handle intricate features, making it more straightforward to convert requirements into robust code, thus overcoming the limitations of vibe coding with complexity.

Difficult to Debug:

Starting from a well-defined system design creates an architectural map that clarifies module interactions and data flow. This organization makes the resulting codebase much easier to debug, as developers can trace logical issues using the documented system architecture as a guide.

Maintenance and Updates:

With organized system design documentation produced prior to coding, maintenance and future updates are streamlined. Developers benefit from clear module definitions, interfaces, and dependencies, which improves understanding and reduces friction when implementing changes or onboarding new team members.

Security:

A system design-first approach incorporates security considerations from the outset. Autosad.ai enables early identification of potential vulnerabilities, making it possible to integrate security best practices and checks into the architecture. This reduces the risk of undetected security issues and ensures that subsequent code passes rigorous security and architectural reviews.

Share this post