Matt Turley, Continuum. Updated November 5, 2026.
For founders whose AI-built app runs perfectly on their machine and fails, partly or entirely, once deployed.
Your laptop silently supplies things production does not. The usual differences are environment variables, a database with different tables or data, a case-sensitive file system, another Node version and network rules such as allowed origins. Run the production build locally with production settings; the failure usually reproduces within minutes.
Development mode is forgiving by design. It rebuilds on every change, reads your local .env file, runs against a database you have been editing by hand and hides some errors. A production build is stricter, minified and run on a different operating system with only the settings you configured.
AI coding tools test in development. They rarely run the production build, and they cannot see which environment variables, migrations and allowed origins exist on your host. So the code is plausible and the difference between environments is nobody's job.
The useful way to think about it: every "works locally" failure is a difference between two environments. Find the difference and you find the bug.
How to tell Features that depend on a key or URL fail in production only. The variable exists in your local .env and was never added to the host, or it was added for the wrong scope.
The fix List every variable the code reads, define each in the production scope, and make the app fail at startup with the variable's name when one is missing.
How to tell Production errors mention a missing table or column, or queries return nothing. Migrations were run locally but never against production, or the production connection string points at an empty database.
The fix Run migrations as part of deployment, keep a record of which have been applied, and never edit the production schema by hand without writing the migration.
How to tell A build or import fails on the host with "module not found" for a file that clearly exists. macOS and Windows treat Header.tsx and header.tsx as the same file; Linux does not.
The fix Make the import match the file name exactly, and rename files with git so the case change is recorded.
How to tell The build log shows a different Node version than you use, or a dependency resolves to a newer release in production because the lockfile is not committed or not used.
The fix Pin the Node version in the project settings or package.json, commit the lockfile and install from it.
How to tell Code writes uploads or caches to disk and fails with a permission error, or the files vanish between requests. Serverless functions can write only to a temporary directory.
The fix Store uploads in object storage and persistent data in the database, never on the function's disk.
How to tell Requests that worked from localhost fail with CORS errors, or the app still calls http://localhost:3001 for its API. A hard-coded local URL ships in the bundle.
The fix Read the API base URL from configuration, add the production origin to the allowed list, and search the codebase for hard-coded localhost addresses.
How to tell Errors such as "too many connections" or timeouts appear under real traffic. Each serverless invocation can open its own connection, and a direct database connection has a small limit.
The fix Use the provider's connection pooler URL for application traffic and keep the direct connection for migrations.
If one variable or one file name explains it, fix it and move on. A human adds value when the app was generated by several tools over several months, nobody remembers what depends on what, and you need someone to make deploys boring.
A Ship Check reads the whole codebase and tells you honestly whether the app is fine, fixable or a rewrite, and what will break first. A Ship Fix makes deploys boring and is the job to take on if the answer is fixable.
Ship Check, $299: A senior engineer reads your codebase and sends a written verdict (fine, fixable or rewrite), what will break first, a security and data read, and a costed plan, within 48 hours of repo access or it is free. It has a 7-day money-back and is credited against a Ship Fix. Or: See Ship Fix, $4,000 to $15,000.