Skip to content
Husain Bootwala
06Active R&D

NextDealIQ

An AI workflow platform for real-estate agents, from lead to client report

The NextDealIQ property dashboard for 1418 Larkspur Ave, a sample listing. An investment summary based on the "Long-term rental, 20% down" analysis rates it a marginal investment, with $176 monthly cash flow, a 7.29% cap rate, 3.52% cash-on-cash, a 1.16 debt service coverage ratio, a failed 1% rule and $59.9k cash invested. Below, tabs switch between the property's rental, BRRRR and flip analyses. The rental tab is open, listing the analysis in a sidebar marked primary beside its overview cards.
Screen capture · The property page: the primary rental's returns up top, with the property's other analyses on tabs below
Channel
06
Period
2023 —
Domain
Software
Role
Co-founder and engineer, 2-person team: the whole product, from the original app to the AI assistant, plus the pivot plan and public site

Stack

  • Next.js
  • TypeScript
  • Convex
  • Convex Auth
  • React PDF
  • Gemini API
  • Radix UI
  • Tailwind CSS
  • Vitest
  1. Five separate tools, a CRM, a spreadsheet, a report, an inbox and a calendar, each wired only to the agent in the middleCRMSheetReportInboxCalendarYou
    BeforeFive tools that never talk. The agent copies between them.
  2. A lead, a property, its analyses and the client report joined as one linked recordLeadClientPropertyAddressAnalysis4 typesReportPDFOne record
    AfterOne linked record, lead to report.
Analysis types per property
4
Financial formulas
35+
Client pipeline stages
9
Assistant autonomy tiers
3

How it works

  1. One property record branching into four separate analyses: rental, BRRRR, flip and CMAPropertyRentalCash flowBRRRRRefiFlipProfitCMAComps
    FixOne property, four analyses, none overwriting another.
  2. Cap rate, cash-on-cash and DSCR rows in an analysis, each wired straight across to the same row in a client reportAnalysisReportCap rateCap rateCoCCoCDSCRDSCRSame figures
    FixThe report reads the analysis's own figures. Nothing is retyped.
  3. Assistant actions in three lanes: reads and reversible edits run straight through, while deletes and sharing stop at a gate for the agent to approve or rejectReadRunsEditRunsDeleteShareWaiting for youApproveReject
    ResultReads and edits run. Deleting or sharing waits for approval.
Read the engineering detail4 min read

The problem

An agent working a deal moves the same figures through a CRM, an analysis spreadsheet, a report document, an inbox and a calendar. None of them knows the others exist, so the agent is the integration layer: copy the numbers out of the spreadsheet, paste them into a document, fix the formatting, export the PDF, and do it again on the next deal. The public site prices that stack at $310 to $800 a month across five subscriptions.

Investor-facing agents have it worst. The same house evaluated as a long-term rental, a BRRRR and a flip needs three separate models: the cash flows differ, the exit assumptions differ, and “return” does not mean the same thing across them. In a spreadsheet that is three files with copy-pasted assumptions, and when a rate changes some of them get updated and some don’t.

What it does

The property is the top-level record. Analyses attach to it, each typed as rental, BRRRR, flip or CMA and each carrying its own complete assumption set, so the same house can be underwritten several ways at once without one strategy’s inputs moving another’s. A property belongs to an agent and can be linked to a client, and clients move through a nine-stage pipeline from new lead to closed.

Client reports are built from the analyses rather than exported from them: the PDF payload is produced by re-running the calculations against the stored analysis, so the document and the analysis cannot disagree. Reports go out as a PDF or a share link.

An assistant sits on top. Every tool it can call has a fixed tier: reads run silently, reversible writes run and are reported, and anything destructive or visible outside the agent’s account (deleting, creating a share link, closing a client) is held as a pending action until the agent approves or rejects it. The tier lives in a server-side registry, not in the prompt, so text in a client note cannot promote a risky action into an automatic one.

How it got here

It began in 2023 as an underwriting tool for investors. In March 2026 it pivoted to the agents who serve them, keeping the calculation engine and adding the CRM, reports and assistant around it. In August 2026 the backend moved from Prisma, PostgreSQL and NextAuth to Convex and Convex Auth.

It is a 2-person team, and the product is my build: the original property and analysis app (the property and analysis creation flows, the analysis dashboards and sidebar, the rental calculator), the pivot’s business plan, roadmap and feature specs, the CRM, client reports and the AI assistant, the move to Convex, production hardening and the move to Vercel (request logging, bot tracking and API rate limiting, a diagnostics endpoint), and the public marketing site.

Where it is

The software works end to end: model a property, run its analyses, build a client report, work the pipeline. nextdealiq.com is live with a founding-member price and a waitlist, collecting interest while onboarding is finished and the numbers earn enough confidence to put in front of someone about to spend money.

That distinction carries weight here. A dashboard that is wrong by a rounding convention still looks plausible, and the person reading it is deciding whether to buy a house. Finished engineering and a ready product are two different states, and this one is in the first.

How it was built, in full

The pivot was written as documents before code: a business plan, a phased Gantt timeline, feature specifications and workflow diagrams. Each AI-assisted build phase then had a written scope and a completion record to check against. The public site was built with agent passes for the breadth (sections, charts, scroll reveals), and every claim on it was reviewed against the plan.

Integration points are written down: what the API expects from the session, what the dashboard expects from the data. Reading the code to work it out is slower and goes stale. Test coverage concentrates on the calculation layer, where a silent error is both expensive and invisible.

What stays human: every underwriting formula is checked against a worked example before it ships, because an AI-written cap-rate calculation that is off by a rounding convention still looks plausible on screen, and someone may buy a house on the strength of it. Auth and data isolation between agents are reviewed by hand rather than trusted to generated code. And launch waits on confidence that the numbers hold up in front of a client; working software and a ready product are two separate questions.

What I’d revisit

The financial models are correct, and they are hard-coded. A user who wants to underwrite with an assumption we did not anticipate has to wait for us to add it. Turning the strategy models into data instead of code is a bigger rewrite than it sounds, which is why it has not happened yet.

Media

Video · Change one assumption, and the analysis and the client report move together
The NextDealIQ public site hero on a warm off-white ground: the wordmark and nav, a label reading "In development · Waitlist open", and a headline reading "The average transaction takes forty hours. Thirty of them are paperwork." Below it a paragraph naming what the platform takes over and a two-field waitlist form. To the right, a donut chart divides one transaction into 30 hours of administration and paperwork against 10 hours actually with the client.
Screen capture · The public site, at waitlist stage
The NextDealIQ assistant. The agent has asked it to send a client, Priya Raman, a link to the Larkspur rental report. Two tool lines follow: a report lookup, then reports_create_share_link marked as queued for the agent's approval and not yet run. The assistant explains that a share link makes the report readable by anyone with the URL, so it is waiting. An amber card below reads "Approve this action?", names the share-link call and the report it targets, says "The assistant stopped here. Nothing has happened yet.", and offers Approve and Reject buttons.
Screen capture · The approval card: asked to share a report, the assistant stops and asks first
An entity diagram. A Property, belonging to an agent and optionally to a client, owns many Analyses. Each Analyses carries a type (rental, BRRRR, flip or CMA) and joins one-to-one to that strategy's own record: Rental, BRRRR, Flip or CMA. Convex has no unique constraint, so the one-to-one is enforced in code on every write. A note explains that each strategy keeps its own complete assumption set, so changing a rental assumption cannot silently move the flip.
Diagram · Data model: one property, many typed analyses
A section of the NextDealIQ site headed "The arithmetic — What you are paying for it now". A donut chart reports "$310–800 per month" in its hole, its five segments sized by the midpoint of each tool's price range. Beside it a table lists those tools and their monthly ranges: CRM $200 to $500, report generation $50 to $100, email and SMS $30 to $100, deal analysis $15 to $50, scheduling $15 to $50, totalling $310 to $800. A highlighted row underneath gives NextDealIQ at $149 per month for all five, and a difference row reads "$161 – $651 less". A line notes that pointing at a table row highlights its segment on the ring, and the reverse.
Screen capture · Five subscriptions on one ring, against one plan

How this was built

The spec sheet above lists the stack. This section covers how the work was run, which a screenshot cannot show you.

Where AI did the work

  • The pivot was written as plan, timeline and specs first; each AI-built phase was checked against them.

The discipline around it

  • Tests concentrate on the calculation layer, where an error is silent and expensive.

What stayed human

  • Every formula is checked against a worked example. A plausible wrong cap rate still steers a purchase.
  • The approval tier is fixed per tool on the server. The model never picks it.