Joe-B · Field Notes
← All Posts
AI & Automation

Your AI Project Is Deployed. That Doesn’t Mean It’s Ready.

By Joe B —
An automation and AI enthusiast.

AI-assisted development has compressed the distance between an idea and deployed software, especially for solo builders. It has not eliminated the work required to make software dependable. I use a simple YES, NO, MAYBE, ROADMAP audit to separate what I have actually verified from what merely exists, then focus on failure handling, observability, reproducibility, dependencies, recovery, and end-to-end testing before I call a project ready.

KEY TAKEAWAYS:

Deployment proves that software can run, not that it can be trusted.

AI lets one person accumulate both capability and technical debt at team-sized speed.

YES, NO, MAYBE, and ROADMAP force uncertainty into the open instead of hiding it behind a working demo.

A feature is not complete until its failure paths, recovery, dependencies, and observability are understood.

Solo builders need verification discipline precisely because AI removes so much friction from building.


AI has changed what a single person can build. A solo developer can move from an idea to a working interface, API, automation, database, agent, or deployed service in a fraction of the time it used to take. That is real leverage. It also creates a new problem: the software can grow faster than your confidence in it.

I have found that the dangerous moment is not when something fails. It is when something works once and I mentally promote it from “experiment” to “finished.” A successful deployment is evidence that a path through the system worked. It is not evidence that every important path works, that failures are recoverable, or that I will understand what happened when something breaks three weeks from now.


Deployment Is a Milestone, Not a Verdict

“It deployed” answers a narrow question: can this version of the system run in this environment right now? That matters, but it leaves a long list of unanswered questions.

A demo can avoid most of those questions. A dependable system cannot.


AI Changed the Scale of Solo Development

The old constraint for a solo developer was usually how much code one person could reasonably write. AI-assisted development changes that constraint. I can delegate boilerplate, explore unfamiliar libraries, generate integrations, create tests, refactor code, build interfaces, write infrastructure configuration, and iterate across several components much faster.

That means the bottleneck moves. Writing code becomes cheaper. Understanding, verifying, and maintaining the resulting system becomes more important.

There is an uncomfortable consequence: one person can now accumulate technical debt at a speed that previously required a team.

The problem is not necessarily bad AI-generated code. The bigger problem is volume. When ten things can be built in the time that previously produced one, there are ten things whose assumptions, dependencies, edge cases, logs, recovery behavior, and documentation may need to be understood.


My YES, NO, MAYBE, ROADMAP Audit

I needed a classification that was harder to rationalize than “basically working.” The simplest useful version is four buckets: YES, NO, MAYBE, and ROADMAP.


YES

I have verified it. The capability exists, I know where it runs, and I have tested the actual path I expect to use. “The agent says it implemented it” is not YES. Seeing a file in the repository is not YES. A successful isolated test is not automatically YES for an end-to-end workflow.


NO

It does not exist or does not work. This is often the easiest category because it removes ambiguity. A known missing capability is easier to plan around than an assumed capability.


MAYBE

Something exists, but I have not verified enough to trust it. MAYBE is intentionally uncomfortable. It catches the things I vaguely remember building, components that worked during an earlier iteration, integrations whose credentials or dependencies may have changed, and features that have only been tested in isolation.


ROADMAP

I want it, but I am not pretending I have it. This prevents future architecture from contaminating my understanding of the current system.

The value of the audit is not the labels themselves. The value is forcing every capability to earn certainty.


Test the Workflow, Not the File

AI coding makes it particularly easy to mistake implementation artifacts for working capabilities. A route exists. A function exists. A database table exists. A worker exists. None of those facts prove that the user-visible workflow succeeds.

I try to test from the outside inward. Start where the real action starts. Use the actual interface or trigger. Let the request travel through the real services. Confirm the final state or output. Then deliberately break something important and see whether the failure is visible and recoverable.

This catches a class of problems that code review alone does not: stale environment variables, missing permissions, mismatched schemas, dead queues, incorrect service addresses, unavailable models, filesystem assumptions, timing problems, and dependencies that only existed on the machine where the feature was originally built.


Observability Is Part of the Feature

For a solo builder, observability can feel like infrastructure work that should happen later. I increasingly treat it as part of finishing the feature.

I do not need enterprise-scale monitoring for every personal project. I do need enough information to answer basic questions without reconstructing the system from scratch: Did the request arrive? Which component handled it? What decision did it make? What external dependency did it call? Where did it fail? Can I safely retry it?

If the only debugging strategy is opening several terminals and trying to remember what I built, the system is borrowing reliability from my short-term memory.


Recovery Matters More Than the Happy Path

The happy path gets disproportionate attention because it is satisfying. Press the button, watch the automation run, see the result. Reliability lives in everything that happens when that sequence is interrupted.

I want to know what happens if a process restarts halfway through a job, a model request times out, a dependency disappears, a machine reboots, a queue receives the same job twice, a partial output is written, or a credential expires.

Not every personal project needs sophisticated fault tolerance. It does need known behavior. Sometimes the correct recovery strategy is simply “delete the partial result and run it again.” That is perfectly reasonable if it is intentional, documented, and safe.


Reproducibility Is a Test of Whether I Understand It

One of the strongest tests for a solo project is whether I could rebuild or move it without relying on undocumented memory.

That does not mean every experiment needs a deployment platform and a hundred-page operations manual. It means the important dependencies should be explicit: what runs where, what configuration it needs, what persistent data matters, where secrets come from, what has to start first, and what would be lost if a machine disappeared.

If rebuilding the project requires remembering a sequence of manual fixes I performed months ago, the deployment is carrying hidden state. Eventually that state becomes a problem.


Use AI to Audit AI-Built Systems

The same tools that accelerate construction can help with verification. I can have an agent inventory services, trace dependencies, inspect configuration, identify missing tests, compare documentation against the repository, search for inconsistent environment variables, review logs, and generate a checklist of claims that still require human verification.

The important distinction is that an AI-generated audit is evidence gathering, not proof. An agent can tell me that a health endpoint exists. I still need to decide whether that endpoint measures anything meaningful. It can find a retry function. I still need to verify that retrying the operation is safe.

AI is useful for shrinking the search space. The final promotion from MAYBE to YES should be based on evidence.


The Definition of Done Has Changed

For me, “done” no longer means that the code exists, the interface looks finished, or the deployment succeeded. Those are checkpoints.

Done means I know what the system does, I have verified the important path, I understand the major dependencies, failures leave evidence, recovery behavior is known, and I am not depending on my memory of how the project happened to work during development.

AI gives solo builders an unusual amount of leverage. The answer is not to slow that leverage down. It is to pair faster construction with a more deliberate verification loop.

Build quickly. Deploy quickly. Then stop treating deployment as the finish line.


FAQ

What is the difference between deployed and production-ready software?

Deployed software is running somewhere. Production-ready software has been verified under the conditions that matter for its intended use, including failure handling, observability, dependencies, recovery, and repeatability. The amount of rigor required depends on what the software is responsible for.

Does every solo project need production-grade infrastructure?

No. A personal utility and a critical service should not have the same operational burden. The goal is proportional reliability: understand what failure costs, then build enough verification and recovery around the project to match that risk.

How do I know when an AI-built feature is actually done?

Test the real workflow end to end, verify the important output or state change, test at least the likely failure paths, confirm you can diagnose a failure, and document the dependencies required to reproduce it. Until then, I would classify it as MAYBE rather than YES.

Is vibe coding inherently unreliable?

No. The risk comes from confusing faster implementation with completed verification. AI-assisted development can produce useful, dependable systems, but the speed of construction makes disciplined testing and auditing more important, not less.