Enterprise Software →

The Enterprise Software Specification Is Broken. AI Is Making That Visible.

AI coding tools fill specification gaps with defaults from their training data. In enterprise software, those defaults are rarely correct. The specification problem that always existed is now impossible to ignore.

At HBSGI, a healthcare company building an EDI claims processing platform, the specification I worked from for the ANSI 837/835/997 claims submission system exceeded 800 pages. That was not bureaucracy. Every page described a behavior, a constraint, or an edge case that would produce a wrong output — an incorrect claim, a rejected submission, a compliance failure — if a developer filled it in by assumption.

Eight hundred pages was what a correct specification looked like for that problem. The specification was long because the problem had real edge cases, and those edge cases had real consequences.

Most enterprise software specifications are not 800 pages. Most would fit in 20. The problem is not that requirements documents need to be longer. It is that enterprise software systems are complex enough that the gaps in a vague specification get filled somehow — and in AI-assisted development, they get filled by the AI’s training data rather than by the development team’s judgment.

sequenceDiagram
participant B as Business Stakeholder
participant S as Specification
participant A as AI Coding Tool
Note over B,S: Requirements gathering
B->>S: Documents known requirements
B-->>S: Leaves edge cases undefined
Note over S,A: Development begins
A->>S: Reads specification
A-->>A: Encounters undefined behavior
A->>A: Fills gap with training default
Note over A: Code ships with hidden assumption
B->>A: Discovers unexpected behavior
A-->>B: Behavior was unspecified
B->>S: Retroactive clarification
Note over B,S: Rework cycle begins

The Gap-Filling Problem

Human developers, faced with a specification gap, typically ask. They surface the ambiguity to a product manager, a business analyst, or a stakeholder and get clarification before writing code. The gap becomes visible before it becomes embedded.

AI tools do not ask. They generate. A specification that says “the system should process customer orders efficiently” produces code that processes orders according to whatever pattern the AI’s training data suggests is appropriate for the context. Whether that pattern matches your specific data volumes, your existing infrastructure, or your organization’s integration constraints is not determined by the specification — it is determined by what the AI has seen before.

This creates a category of decision that is harder to audit than either an explicit design choice or a documented human judgment: the implicit AI default. The code works. It may perform well. The assumption embedded in it may be wrong in ways that only appear at scale, under edge cases, or at the integration points where the assumption meets a system with different expectations.

What the HBSGI Specification Demonstrates

The 800-page HIPAA EDI specification I worked from at HBSGI was not just long — it was precise about what mattered. The precision existed because the consequences of imprecision were concrete and traceable. A payment field formatted incorrectly would cause a rejection. A rejection had a defined remediation path. The remediation path had defined timing. The timing had financial consequences that the client could calculate.

The specification had to be that precise because the cost of assumption was that specific.

Enterprise software problems often have real edge cases with real consequences. The specification does not need to be 800 pages to capture them. But it does need to be more specific than “the system should handle X” — because the AI will handle X, and how it does so is not a detail that can be evaluated post-hoc without significant rework.

The Two Categories of Specification Gap

Specification gaps in enterprise software fall into two categories that AI handles differently.

Under-specified behavior. What the system should do in circumstances the requirements document didn’t address — edge cases, error conditions, boundary values. AI tools fill these gaps with defaults that reflect common solutions to similar problems. Catching these requires testing against the real edge cases, which requires knowing what the real edge cases are, which requires understanding the business domain well enough to anticipate them.

Under-specified constraints. What the system must NOT do — for performance, security, compliance, or integration reasons — that was never written down because the development team was assumed to know it. AI tools don’t know that your security team requires specific session token handling unless it’s specified. They don’t know about rate limits on a third-party API unless those constraints are documented. They don’t know which regulatory requirements apply to this specific data type unless the requirements call them out explicitly.

Both categories produce code that passes a surface review and fails a contextual one. The first category is typically caught in testing if the test coverage is adequate. The second category is often not caught until deployment — or until a security review, a compliance audit, or an integration failure surfaces it.

The Work Before the Prompt

The effective intervention is not a longer requirements document. It is specificity in the right places.

The categories most likely to produce AI-generated gaps in enterprise software:

Integration contracts. What does the system send to each external service, what does it receive, and what are the edge cases for each interaction? If the integration contract is not specified, the AI generates one based on typical usage patterns — which may differ from your specific external system’s behavior in production.

Security and compliance rules. What data is being handled, and what are the explicit constraints on storage, transmission, and access? If these are not specified, the AI generates code that appears compliant while potentially not meeting the specific requirements that apply to your domain and jurisdiction.

Architecture constraints. Which patterns does this system use, and which are explicitly off-limits? If the architecture is not specified, the AI generates what works in isolation — which may not fit the existing system’s structure or the team’s established conventions.

The work is the same work that good enterprise software development has always required: precise problem definition before implementation begins. The urgency is new. When AI fills in what’s missing, it does so at code-generation speed, and the result is embedded in the codebase before the gap becomes visible.

Frequently Asked Questions

Why do vague specifications cause bigger problems in AI-assisted development?

Human developers, faced with a specification gap, typically surface the ambiguity — they ask a product manager, a business analyst, or a stakeholder, and the gap becomes visible before code is written. AI tools do not ask. They generate. A specification gap that would have prompted a clarification conversation instead produces code that reflects the AI's training data interpretation of the most common solution to that class of problem. The result is functional code that satisfies the specification as written, without surfacing the gap the specification contained. The gap is then embedded in the codebase before anyone reviews it.

What does a good specification look like for AI-assisted enterprise software?

Specific behavioral requirements — what the system does, not how it does it — with defined edge cases. Explicit integration contracts describing what the system sends to and receives from each external service, including error cases. Security and compliance requirements written as explicit constraints rather than assumed from domain knowledge. Architecture decisions documented as decisions, not left implicit. And explicit prohibitions — what the system must NOT do — for performance, security, compliance, or integration reasons that might not be obvious from the positive requirements alone. The test: would a capable AI tool generating code toward this specification produce output that matches your intent, or would it fill significant gaps with assumptions?

How do you address the specification problem if development is already underway?

A targeted specification audit. Identify patterns in the existing codebase that don't match your standards — authentication approaches that differ from your convention, error handling that's inconsistent, integration patterns that conflict with the rest of the system. Trace each pattern to the requirement it was implementing, identify what the specification said (or didn't say), and make the decision explicitly going forward. Document that decision in the project's context file so the AI uses it in subsequent sessions. The earlier the audit, the less code needs to be revisited. In a codebase six months into AI-assisted development without this work, the audit effort is significant — but the alternative is continuing to accumulate inconsistency.

Shawn Livermore — Fractional CTO & Chief AI Officer
About the Author

Shawn Livermore

Fractional CTO and Chief AI Officer with nearly 3 decades of enterprise architecture experience. Clients include Kelley Blue Book, LERETA ($18B property tax processor), First American Financial, Carvana, WellPoint/Anthem, and PacifiCare. 92 client reviews, 5-star average.

View full background →

Need a fractional CTO or CAIO?

Technology leadership without the full-time headcount. Engagements start with a conversation.

Man writing a flowchart diagram on a whiteboard with a blue marker.