The process

  1. Call

    We talk through the problem, your users and your deadline. If I am not the right fit, I will say so on the call.

  2. Scope

    You get a short spec sheet you can share with co-founders or investors. Nothing is built until you agree to it.

  3. Build

    I build in small slices and share each one on a preview link, so you see progress and can change direction early.

  4. Ship

    The app goes live on accounts you own. You get the code, the setup notes, and a walkthrough of how it all fits together.

The tools, and what they're for

I build with Claude Code and Codex, AI coding tools that write and change code under my direction. They handle the repetitive parts: boilerplate, tests, migrations, wiring. That leaves my time for the parts that decide whether a product works: architecture, data, security, and reviewing what gets shipped.

For app rescues I also work inside code generated by Lovable, Bolt.new, Replit and Base44. I read what the builder produced, keep what's sound, and replace what isn't.

Every change goes through automated tests and my own review before it ships. AI speeds up the typing; the decisions stay with a person.

ShipFast build workflowSample project

Client brief

“We run three clinics and want patients to book online and pay a deposit.”

From the first call

Spec sheet

Scope
Booking, deposits, reminders
Architecture
Web app, database, payments
Timeline
Milestones in weeks
Price range
Agreed before the build
Risks
Calendar sync edge cases
claude · ~/clinic-bookingClaude Code · Anthropic Claude models

> Read SPEC.md and plan the build

● Reading SPEC.md

● Mapping the existing code

Plan

1Auth and staff roles

2Booking schema and migrations

3Deposit checkout

4Email reminders

Approve plan reviewed by Prayag

  • app/
  • auth/roles.ts+
  • bookings/schema.sql+
  • bookings/calendar.ts+
  • payments/deposit.ts+
  • emails/reminder.tsx+

bookings/calendar.ts

+export async function holdSlot(slot, patient) {

+ const taken = await db.bookings.find(slot)

+ if (taken) throw new Error('Slot already booked')

+ return db.bookings.create({ slot, patient,

+ status: 'held' })

+}

Claude Code writingAnthropicCodex reviewingOpenAI Suggestion: lock the slot inside a transaction

Test run

  • authStaff and patient roles stay separate
  • bookingsDouble booking is blocked
  • paymentsDeposits refund on cancellation
  • qualityAccessibility and speed checks pass

Human review

Prayag reads the diff, runs it, and signs off

MergedPreview linkProduction
clinic-booking.comLiveYour domain · your hosting · handover notes

A 30-minute call becomes a written scope.

Pricing

Fixed prices for defined builds, a monthly retainer for ongoing work, or hourly for small jobs. Either way, the terms are written down before work starts.

Fixed price

App rescue

Your Lovable, Bolt, Replit or Base44 app, made ready for real users.

From$1,000starting price, confirmed after the audit

  • A written audit of what blocks launch, in priority order
  • Auth, data, payments and security fixes
  • Deployment to hosting and a domain you control
  • You approve the quote before any fixes start
Monthly retainer

Ongoing development

Features, fixes and improvements once real users arrive.

10 hours a week
$1,200/month
20 hours a week
$2,400/month
  • A fixed monthly price, with hours agreed upfront
  • Priorities set together each week
  • The same review and testing on every change

Small job or not sure yet? Hourly at $30/hour, agreed before any hours are logged. RAG chatbots and internal tools are quoted after a 30-minute call.

Ask about your project

Get a scope and a fixed price

On a 30-minute call we'll go through what you need. Then you get a written scope with the price.

Book a 30-minute call