Logo

TEST TO APP
IN MINUTES

Maor Shlomo
Founder, Base44
Back to podcasts

Can AI Really Build Enterprise-Grade Software?

with Maor Shlomo

Transcript

Chapters

Introduction
[00:00:57]
Operation and choice of stack
[00:02:54]
Target audience
[00:10:30]
Learnings from non-devs
[00:12:28]
Behind the scenes at Base44
[00:18:41]
What devs don’t notice about AI
[00:22:52]
LLM guardrails
[00:25:06]
Specs and tests
[00:28:48]
Creating documentation
[00:34:22]
Team members
[00:36:35]
The future of devs
[00:41:10]
Everyone building agents
[00:44:31]
Long-term differentiation
[00:46:23]
Top advice for today’s developers
[00:52:05]
Outro
[00:54:29]

In this episode

In this episode, host Guy Podjarny talks with Maor Shlomo, founder of Base44, about transforming AI-driven "vibe coding" demos into full-stack, production-ready applications. They explore how Base44's opinionated, integrated platform simplifies app creation by absorbing technical complexities, allowing both non-technical users and developers to build and iterate quickly. Key takeaways include designing for the model's strengths, reducing cognitive load on AI, and balancing strict initial guardrails with increased flexibility as models improve.

AI is pushing “vibe coding” from toy demos into production software. In this episode, host Guy Podjarny talks with Maor Shlomo, founder of Base44, about what it takes to turn text-to-app into real, full-stack applications—complete with auth, databases, email, analytics, logs, and LLM integrations. The conversation explores designing stacks for the model (not the human), opinionated runtime choices, how to support non-technical builders, and pragmatic guidance for developers shipping AI-native products today.

From “vibe coding” demos to full‑stack, batteries‑included apps

Base44 positions itself as an AI app builder that’s intentionally opinionated and “batteries included.” Unlike early vibe-coding tools that excelled at landing pages or simple front-ends, Base44 aims to generate functional, production-ready web apps. That means user management, a database, email sending, LLM connections, analytics, and logs are integrated from the start—so the builder doesn’t have to stitch together third-party services or manage API keys and migrations.

The core idea is workflow and outcome, not just code snippets. Instead of asking non-technical users to configure OpenAI keys, pick a database, or set up observability, Base44 handles those layers behind the scenes. The goal is to let users “program in English,” while the platform absorbs the complexity of deployment, security, and operations.

Maor emphasizes that this opinionated model isn’t just UX sugar. It actively expands what non-developers can ship and how quickly developers can move. By constraining choices in key places and providing integrated primitives, the platform narrows failure modes and accelerates iteration toward a live, usable product.

Designing for the model: an LLM‑native stack and SDK

A central insight from Maor: design your SDK and infrastructure around what LLMs already do well. Rather than forcing a model to obey complex, brittle instructions (e.g., “Important!!! Don’t use package X”), Base44 studied how models behave and then aligned the platform with those priors. If a model consistently prefers one library over a functionally similar alternative, Base44 adopts the preferred one. If models are more fluent in certain patterns, the SDK and endpoints reflect those patterns.

Concretely, Base44 chose Python for backend generation because LLMs are particularly proficient there. On the frontend, they controversially lean into plain JavaScript over TypeScript in many places because current models more reliably produce correct JS. This is less a philosophical stance than a practical one: decreasing the model’s cognitive load yields better, more consistent outputs.

The approach extends beyond language choice to the platform’s “backend as a service” surface area. Traditional BaaS products like Firebase or Supabase were designed pre-LLM and have their own syntaxes and behaviors. Base44 rethinks this layer so endpoints, data access, and service APIs fit the model’s “native language.” The result: fewer misunderstandings, less need for intricate prompts, and more stable generations.

Opinionated stack meets managed operations

Guy presses on the interplay between choosing a stack and managing operations. Maor’s answer: it’s both. For models to build reliably, some choices are fixed—e.g., the app’s database isn’t up for grabs. That stability prevents the model from wandering into untested territory. At the same time, Base44 continually adapts the allowed surface as models improve. Early on, they might pre-insert imports or restrict dependencies; later, they relax guardrails as trust grows.

Operationally, Base44 deploys and runs the generated apps, wrapping everything with observability and system services. This lets builders focus on product logic and UI rather than DevOps. Over time, as the developer community’s trust increases, the specific stack details matter less. Fewer users ask “What exact database is this?” and more simply validate “Does this meet my needs and scale?”

This philosophy mirrors a broader principle for AI-native platforms: don’t hand the model sharp knives. If something is hard for an LLM (like bespoke DB migrations or juggling third-party auth wiring), push it behind a well-designed platform abstraction. You can always open the hood for power users, but default to narrowing the LLM’s operating space to a safe, productive subset.

Who it’s for and how they build: visual iteration over code

Base44 started with non-technical users—think restaurant managers or marketers—who want working software without learning to code. Surprisingly, developers have also adopted it for speed. The interaction model is visual-first: you see the app running, notice what’s off, and iterate by describing changes. When errors occur, users encounter them in the UI, through surfaced logs or messages, rather than digging through a repo.

This differs from dev tools like Cursor or Cloud Code, where the user supervises the code and uses the model to mutate it. In Base44, code is available but not front-and-center; the system favors visual experimentation and higher-level changes. That said, there’s no silver bullet: some classes of software are still better built in Cursor/Cloud Code with a human reading and editing code. Maor is candid that Base44’s own backend wasn’t built in Base44—it was built with tools like Cursor/Cloud Code—while Base44’s frontend dogfoods Base44.

The boundary is shifting rapidly. As models improve and platform primitives grow, more “serious” software becomes feasible via visual, English-first creation. The pragmatic advice for teams: pick the right tool per task. Use visual builders to accelerate CRUD-heavy internal tools or SaaS MVPs with standard patterns; drop to code-centric workflows when you need fine-grained control or complex algorithms.

Practical guidance for AI‑native developers

Two methodologies stand out. First, reduce the model’s cognitive load. Design your APIs, SDKs, and project scaffolds so the happy path matches what LLMs learned in pretraining. Provide stable primitives, pre-seeded imports, and consistent folder structures. If you find yourself writing ever-longer “do not do X” prompts, step back and change the environment instead of the instruction.

Second, evolve guardrails over time. Early on, constrain dependencies and patterns; later, loosen them as models and your evaluation harness improve. Guy notes that at Tessel they temporarily solved dependency drift by supplying imports up front, then removed that constraint as models got better. Base44 follows a similar doctrine: start strict, then progressively grant flexibility, guided by telemetry and success rates.

Finally, design for human feedback loops. Non-technical users need visual affordances, clear explanations, and surfaced logs or analytics to understand what’s happening. Developers need escape hatches, deterministic tests, and observability. A strong AI-native platform supports both: UX for non-developers and code-side affordances for developers—while keeping ops, auth, data, and LLM wiring out of the way by default.

Key Takeaways

- Design for the model’s strengths: Pick languages, libraries, and API shapes that LLMs already use well (e.g., Python for backend, plain JS when models stumble on TS).

- Reduce the LLM’s workload: Hide migrations, keys, vendor wiring, and ops behind a stable platform. Provide primitives instead of complex, multi-step instructions.

- Constrain, then relax: Start with tight guardrails (fixed dependencies, seeded imports), monitor outcomes, and gradually expand flexibility as models and telemetry improve.

- Visual-first iteration for non-devs: Surface the running app, logs, and clear messages so users can steer without reading code. Keep code accessible but not required.

- Know when to switch tools: Use platforms like Base44 for batteries-included CRUD apps and MVPs; reach for Cursor/Cloud Code when you need code-level control or complex logic.

- Treat stack choice as a UX decision: Opinionated, managed choices increase reliability and speed. Over time, as trust builds, the exact stack matters less than the outcome.

Chapters

Introduction
[00:00:57]
Operation and choice of stack
[00:02:54]
Target audience
[00:10:30]
Learnings from non-devs
[00:12:28]
Behind the scenes at Base44
[00:18:41]
What devs don’t notice about AI
[00:22:52]
LLM guardrails
[00:25:06]
Specs and tests
[00:28:48]
Creating documentation
[00:34:22]
Team members
[00:36:35]
The future of devs
[00:41:10]
Everyone building agents
[00:44:31]
Long-term differentiation
[00:46:23]
Top advice for today’s developers
[00:52:05]
Outro
[00:54:29]