p. 88
← ALL JOURNAL ENTRIES

Journal / AI & Product Building / AN-001

How I Build Working Software With AI: From Idea to Vercel Deployment

From the first workflow decision to code review and deployment, here's how I separate convincing AI prototypes from working software.

By Ani Nandi   /   20 October 2026   /   Founder notesAI-assisted development
An architectural three-stage artwork showing a hand-drawn wireframe, layered engineering system and finished software interface
FROM AN IDEA TO A WORKING PRODUCTIllustration / Ani Nandi

A polished prototype is not the same thing as working software. That distinction shapes how I think about building with AI. An AI tool can write a convincing interface quickly, but it cannot take responsibility for the business problem, the data, the security model, or what happens when a customer does something unexpected.

My approach is to treat AI as an implementation partner, not the product owner. The important decisions are still human: what problem deserves a solution, which steps must work, what data the system can access, how success is measured, and when a release is genuinely ready.

Start with a workflow, not a feature list

Before thinking about screens, I describe a real user and the job they are trying to finish. I want to know what triggers the task, what information is available, what decision must be made, and what the output should be. If I cannot explain those four things clearly, I am not ready to build the software.

Take a service-business quoting workflow. A customer describes a job; a business has its own pricing rules; someone needs a useful estimate and a follow-up record. That is a clearer starting point than 'build a complete CRM with AI, analytics, bookings, invoicing, social media and 40 dashboards.'

I write a minimum acceptance test in plain language: given a valid input and known pricing rules, the system should calculate the correct result, capture the enquiry and show the next step. Edge cases are part of that test - incomplete fields, invalid values, duplicate submissions and a failed network request.

Separate rules from AI judgement

Not every piece of software should let a language model decide the answer. In fact, one of the most useful design choices is knowing where AI should not be involved.

At NIR.Systems, QuoteFlow is described as using deterministic pricing rules rather than asking a model to invent a quote. That matters: an estimate should follow the business's configured numbers and logic. AI might eventually help explain an estimate or classify an incoming enquiry, but it should not silently change the price.

FieldReport provides another useful contrast. A field job report needs structured evidence: job details, photos, signatures and a record a business can use later. An attractive generative interface without a reliable saving, editing and export process would fail the real workflow.

These examples explain why I care more about completing one useful job than showing off dozens of features. NIR.Systems' focused software products provide the commercial context; the QuoteFlow and FieldReport FAQ explains the publicly stated mechanics. These product pages describe capabilities, not independent proof of my development or QA results.

Define what the first version must do

I prefer a short, testable scope. For a first version, I would specify five things: the main user journey; the minimum data model; the permission boundaries; the error states; and the observable output. I also specify what the app will deliberately not do yet.

A useful specification should enable a person to say 'this passed' or 'this failed' without debating whether the screen looks finished. For example: 'A signed-in user can save a report with three photos, reopen it on mobile, and export the record. An unrelated account cannot access it.' That is much stronger than 'build a modern AI-powered report dashboard.'

Use AI to accelerate implementation - then inspect the result

With a clear workflow defined, an AI coding tool can be useful for generating components, form validation, state handling, tests and repetitive plumbing. But I do not equate plausible code with correct code. The implementation still has to match the specification.

My review questions are practical. Does the app save real data, or does it only display a fake success message? Are error states understandable? Does the backend enforce permissions instead of merely hiding buttons? Are API keys kept out of the browser? Does the same user journey work on a phone? Can I explain what will cost money when usage grows?

For AI features, I add another layer. What sources is the model allowed to use? How are unsupported answers handled? Is a human review required for consequential decisions? What does the user see if the model is unavailable? A demo that works once is not sufficient evidence of reliability.

Why AI-assisted software development still needs a system

Google's 2025 DORA research describes AI as an amplifier of existing engineering practices: it can magnify both organizational strengths and weaknesses. That supports a process-focused approach, but does not prove that any individual application is secure or that my own projects achieved a specific speed improvement. The value of AI-assisted software development has to be judged by working outcomes rather than screenshots or lines of generated code. Research: https://dora.dev/research/2025/dora-report/.

A useful acceptance record ties each intended user action to a testable result. For a quoting product, it could document a valid pricing input, the expected result under configured rules, an invalid-input response and whether the enquiry is captured. For a field-report product, it could document required attachments, authorized access and report export. These are examples of tests to perform, not assertions that specific tests have already passed.

Move from a visual prototype to a product someone can trust

A high-fidelity prototype can be excellent for testing the idea, the navigation and the look of the experience. The transition to a real product begins when those screens are connected to identity, data, permissions and operations.

I use a release checklist that covers authentication, storage, server-side validation, auditability, accessibility, performance and recovery. I also look for misleading simulated information. If a user enters their website into a supposed SEO analysis tool, the output should not imply that the site was crawled if it was not. Either perform a real analysis or label the experience clearly as a demonstration.

Keep code changes reviewable with GitHub

Version control is part of the product process because it gives each change a history and an opportunity to review what happened. My preferred rule is to make a change small enough to inspect, connect it to a specific requirement, and test it before merging. A long AI-generated change is difficult to validate if nobody can explain why each part exists.

GitHub's pull-request workflow supports isolated changes, review and automated checks. It is not a guarantee of secure software by itself, but it creates a useful point where developers can inspect code, run tests and catch problems before they affect the production branch. Reference: https://docs.github.com/en/pull-requests/get-started/about-pull-requests.

Use Vercel previews before production

A working deployment is more useful than screenshots in a chat. For a Git-connected site, Vercel can produce preview deployments for branch changes, while the production environment serves the public website. That separation is valuable: a release should be tested using a preview URL, not treated as finished the moment a build succeeds.

One example is the aninandi.com portfolio itself. Its current public Journal uses static article pages with canonical URLs, metadata, a shared stylesheet and a sitemap. Its Vercel production deployment is connected to a GitHub repository. These checks establish the site's publishing setup; they do not prove the completeness of testing for any individual application.

In a preview, I would check the main customer journey from start to finish, try intentional mistakes, inspect mobile layouts, confirm forms actually submit, and verify that any sensitive settings use the correct environment. Vercel documents the distinction between preview and production environments at https://vercel.com/docs/deployments/environments.

A concrete release check from my portfolio

The implementation of aninandi.com provides a useful, verifiable example of why deployment details matter. Its GitHub repository contains a static Journal archive, a dedicated Journal stylesheet reference, robots.txt and sitemap.xml; the Journal archive has its own canonical URL. Its production deployment is served through Vercel. Those observations verify infrastructure and page structure—not that every future article, form or feature has passed quality assurance.

When publishing a Journal article here, the job is not finished after writing its HTML. The article needs a working route, appropriate author and canonical metadata, inclusion in the archive and sitemap, verified links, and a direct check of the public page. That is the difference between seeing a green build and confirming a usable release. For customer applications, further checks depend on the product: authenticated access, authorization, persistent data and recovery may all be necessary.

My release gate: what must be true before I call it ready

Here is the acceptance gate I would use for a small AI-assisted business application:

  1. The product solves one clearly stated user problem and the core task succeeds end to end.
  2. Core data is real, persistent and recoverable; simulated values are identified as such.
  3. Authorization is enforced on the server, not just in the interface.
  4. The product handles missing, invalid and unexpected input without misleading the user.
  5. External services, AI usage limits and recurring operating costs are understood.
  6. Mobile behavior, accessibility basics and performance have been checked.
  7. A deployment preview has been reviewed and there is a practical rollback or recovery plan.
  8. Claims in the website copy are limited to capabilities that can actually be demonstrated.

Why I still see product design as a founder responsibility

AI-assisted development makes it cheaper to try ideas. That is an advantage, but it also makes it easier to produce software that looks finished when the hardest questions are still unanswered.

The founder's job is not simply to request more features. It is to decide which problem matters, which behaviors are trustworthy, which promises can be supported, and what the first customer will experience after the demo.

That is the standard I want to apply across ecommerce systems, niche AI tools and marketplaces: build something understandable, testable and honest about its limits before trying to make it bigger.

Sources & further reading

  1. NIR.Systems — QuoteFlow and FieldReport product mechanics. Rule-based quote logic and structured reporting.
  2. Google DORA — 2025 State of AI-assisted Software Development. Research on AI's role in software delivery.
  3. GitHub Docs — About pull requests. Review and change workflows.
  4. Vercel Docs — Deployment environments. Preview and production distinctions.

Published 20 October 2026. Examples describe public product documentation or the site's independently verified infrastructure. Illustrative acceptance tests are not claims of completed tests or independently measured performance.

← RETURN TO JOURNALWritten by Ani Nandi