Skip to content
About

We built Lewis because the list was already there.

Every agent we sat with had four hundred names they had already paid for, a notes column full of the specific reason each of those people was once a lead, and not one free evening to text four hundred people one at a time. That is the entire reason this exists.

The best lead in real estate is somebody who already told you exactly what they wanted, and then went quiet.

They are sitting in a CSV on your laptop right now. Nobody has an evening to go back through four hundred of them. Lewis does, one text at a time, and stops the moment something needs a licence.

The problem is not finding leads

Every agent has a database and almost nobody has worked it. The value in that list is real and it decays quietly: somebody who paused in 2024 is going to start again, and whoever texts them in the right eight weeks gets the transaction. Nobody can know which eight weeks, so the only strategy that works is to still be there, which is exactly the thing a person with a live pipeline cannot do and software can.

What stops it happening is not effort or discipline. It is that the job of working a dormant list is two hundred small things, none of them hard, all of them at the wrong time of day: the opener that has to quote the right note, the follow-up nobody sends, the question you forgot to ask, the reply that lands at nine on a Sunday.

What we got wrong first, and what it taught us

The first version was more capable and much worse.

It would answer a question about a property, because it could produce a fluent sentence about one. It would read a bare “yes” as approval for whichever draft seemed likeliest. It once told an agent a message had been sent because the phrase they used to approve it was one the code could not read, which on a screen is indistinguishable from a real send.

That last one is the whole education, and it is the sentence the rest of this product is built around: the dangerous failures here are not the ones that look like failures. They are the ones that look like success.

How it got here

Four decisions, in this order.

Each one is a thing the first version did that the current one refuses to.

  1. First

    The rules left the prompt

    A rule written into an instruction is checked by nothing. Every guardrail is code now, and it runs on the model’s OUTPUT rather than its input, which is what makes it true on the turn nobody is watching. Guardrails.

  2. Then

    The worst categories became refusals, not warnings

    A warning in a queue is a thing people get through. Fair-housing language and any property fact Lewis cannot source are blocked outright rather than held, because an agent skimming approvals at 7am waves things through and one of those costs a licence.

  3. Then

    Nothing gets guessed on an approval

    More than one draft waiting plus a bare “yes” returns a numbered list rather than a decision. And only the engine may say a message went out: a claim of a send is checked against whether a thread actually exists behind it. Approvals.

  4. Now

    One brain, two ways in

    The demo in your browser and the thread on your phone are the same program rather than two implementations kept roughly in step. A change to what Lewis says is live on both with no second edit. The engine.

Who built it

Two people.

Small enough that the person who wrote the rule that blocked your message is the person who answers when you say it fired wrongly.

JD

Judson Dunne

Engineering

Computer science at Lafayette College, and built Locava, a location-based app, before this one. He writes Lewis: the engine, the rails that run on every send, and the forty-one pages of this site.

VP

Veer Patel

Product

Northeastern, and real-estate software since. He works with the agents: what gets asked, what gets refused, and which of the two hundred small things between a cold name and a signed contract actually move a deal.

A Boston brownstone on the corner of Beacon St, drawn in isometric

Boston. The listings half of the product knows Boston neighbourhoods and Boston landmarks from a closed list rather than a geocoder, because a geocoder always returns something, and what it returns for an ambiguous name is a confident answer about the wrong building.

Scope

What Lewis is, in one paragraph

Lewis works the dormant leads in a real-estate agent’s CRM over text. It reads the export you already have, ranks who is worth a message this morning, writes the message, waits for your yes, and hands back the ones who answered a real question with a real number.

That is the whole product. Most of the engineering in it is about the four things it will not do, which is why they get a list of their own rather than a paragraph.

What we optimise for

Three things, in this order.

First

Do not embarrass the agent

Nothing goes out under a licence unread, and the categories that could cost somebody that licence are refused rather than queued.

Second

Say only what is true

No property facts, no derived travel times, no inferred budgets. Where Lewis cannot know something, the sentence says so out loud.

Third

Then be useful

Within those two, work the list harder and more consistently than any person with a live pipeline realistically will.

How to judge one of these

Ask it to show you a message it refused to send, and the rule that refused it.

That question separates products in this category better than any feature list does, and it is the one we would want asked of us. If the answer is a shrug, or a paragraph about how carefully the model was instructed, the rules are in a prompt.

Read next

Your book is already full of people who meant it.

Point Lewis at the export and he works it over text, every draft still waiting on your yes.