Prems

Inspiration

In 2025 I watched my parents try to find an apartment.

I thought it would come down to money, or paperwork, or knowing the right agent. It didn't. It came down to speed. You show up to a viewing and there are already 60 people in the hallway in front of you. The agent takes the first solid file that lands and everyone else goes home.

That's not a Paris exaggeration. LocService's tension index puts Paris at around 12 candidates for every listing published, the tightest market in the country. Fage found 15% of renters spend three to six months looking, close to 23% in Paris. And the people losing aren't lazy. They're at work. They're in class. They saw the listing four hours late because they had a life that day.

So the whole thing is a reflex test. Whoever refreshes fastest wins. That's a stupid way to decide who gets a home, and it's exactly the kind of problem a machine should take off our hands.

I'm 16. I sat on the idea for a while because of that. Who buys proptech from someone who can't legally register a company? And if nobody had built this yet, there was probably a reason.

I asked around anyway. Family, friends, anyone who'd moved recently. Every story pointed at the same thing without me steering it. When I floated €30 a week, more than one person said they'd pay more than that just to stop refreshing. So I built it.

Prems means "first" in French slang. That's the whole product in one word.

What it does

You give Prems your criteria once. It watches the listings, writes to the landlord or agency as you, handles the back and forth until a viewing is agreed, and puts the slot in your calendar.

You open the dashboard and see cards: listings matched, emails sent, viewings confirmed. Every conversation is there in a thread. You can take over and reply yourself whenever you want.

It's live in France, runs several users at once, and I don't touch it manually.

If you've ever stood in that hallway with 60 other people, you're already doing what Prems does. Just by hand, slowly, and usually too late.

How we built it

Gemini runs the business. I bring the customers. That's the honest split. The platform is not a product with some AI sprinkled on top, the AI is the operator. It reads the market, decides what matters, writes the emails, negotiates the slot, books it. My job is to put humans in front of it.

The pipeline is event driven on Google Cloud, so nothing polls and nothing sits idle burning money:

  • Cloud Run Jobs run one scraper per site, triggered by Cloud Scheduler at a different cadence per site depending on how fast its listings turn over. Each scraper is stateless: it pulls the IDs it's already seen from Firestore and only processes the delta.
  • Every new listing gets published to a Pub/Sub topic, picked up by a Cloud Function that deduplicates across sites (the same flat gets posted to three portals under three different photos), geocodes it, and computes a Vertex AI embedding of the description.
  • Matching happens in two passes. Hard numeric filter first in Firestore, zero AI, because it's cheap and kills most of the noise. Then semantic matching on what's left, comparing the listing embedding against the free text criteria the user wrote at signup.
  • On a confirmed match, the agent fires. It takes the contact address, everything it knows about the user, and writes the email in their name. When the reply comes in through the Gmail API, it keeps the conversation going until there's a viewing that fits the user's actual availability, then writes the appointment into their Google Calendar and into the Visites tab on the platform.

Target latency between "listing appears" and "email sent" is under a second, because I'm not competing with agencies, I'm competing with other humans hitting refresh.

The real technical limit, and how I got around it. Full browser automation isn't compatible with every agency site. Portals change their layout, some of them fight bots, and building a vision agent that survives all of them is a much bigger engineering problem than I could solve alone in the time I had. So I stopped trying to automate the click and went for the inbox instead. Sites like Bien'ici expose the owner's email directly. Once the match is made on the search criteria, the agent doesn't need to drive a browser at all, it just needs to write a very good email very fast. That covers a large chunk of the French market and it's dramatically more robust than fighting a DOM that changes every week. Covering the long tail of portals that hide contact details behind their own forms is the next real engineering problem, and I know it's coming.

The bug I'll remember forever. I ran the agent on myself to test it, with my real criteria. It went straight out and contacted agencies. Came back with actual appointments, actual dates, actual people expecting me. I had to email every single one and explain I wasn't moving, I was testing my own software on myself. Not my finest afternoon.

The part I tore out and rebuilt. Matching. Version one would have quietly fed the best listings to the same few users, whoever had the highest budget or signed up first, while other paying users got nothing at all. So: everyone starts with the same points. Every match you get, your score drops. New listing comes in, highest score goes first. Small thing. It's the difference between a product that's fair and one that just looks fair from the outside.

Human vs AI. Gemini owns everything repetitive and time sensitive, all day, for everyone at once. I own the judgment calls. Deciding matching should be fair instead of highest bidder. Deciding to abandon browser automation for email. Writing different copy for Paris than for other cities, because they don't talk about housing the same way. And going outside to find out what people actually need, which is the part no agent does for me.

Challenges we ran into

This is the part I'd rather not write. But it's the true one, so here it is, in order.

First move: sell to the people who lose this race professionally.

While I was still building, I went after businesses. My reasoning was that individuals are slow to trust and slow to pay, but there are people whose entire job is losing this race on someone else's behalf. One license covers dozens of users.

So I wrote to:

  • Property finders. Their whole business is being first. Second place doesn't get paid.
  • Independent landlords. Buried in unqualified messages with no software to sort them.
  • Student housing offices. Hundreds of arrivals every September, all needing the same thing in the same week.
  • Relocation managers. Hired specifically to house someone moving countries, against a deadline that isn't theirs.
  • Incubators. Founders relocating for a program, needing a home in weeks.
  • Expat housing buyers. Landing from abroad with no network, no time, and no way to tell which listings are even real.

Over 200 emails. Every one of them a business that genuinely needs this.

Almost every reply was an out of office. It was August. The entire sector I'd targeted was on holiday.

Second move: go find them in person.

Fine. Do things that don't scale. Stand in the hallway with the 60 people. They're a captive audience, they're in pain at that exact moment, and I could sign customers and fix the MVP against real feedback in the same conversation.

One problem. I had exactly one day in Paris. I was flying back from Morocco and leaving for Greece. One day.

I used it. I applied to listings like a normal renter, went out to viewings, tried to get in front of agencies.

Nothing. Early August, agencies are shut. The few viewings still running were spaced one person every 20 minutes, so there was no queue to talk to. The crowd my entire plan depended on doesn't exist until late August. I walked around all day and came home with zero.

Third move: go where they talk before the hallway.

Back home, thinking it through. If I can't reach them at the viewing, where are they before the viewing? Facebook groups. Housing groups, city groups, rental groups. People post there the day they start looking, which is the moment before the pain, which is the best moment to sell.

I got into the groups and started posting.

Facebook auto removed the posts. Then the account got banned. 26 messages in, gone, before a single person replied. Which is fair, honestly. From the outside I looked exactly like a spammer: new account, no history, posting about a product.

Made a fresh one. Too new to post anything.

So I moved to Discord, to university servers where people actually organize their housing search. Different wall. The moderators want a member, not a pitch, and rightly so. You earn the right to post there by being in the community for weeks. I had days. I never got to build that community, and posts from an account with no history go straight into the void.

Deadline day. Still pushing into channels, still trying to find one person who'd say yes. Nothing landed in time. Every platform I picked needs trust I hadn't had time to earn.

Where that leaves me: zero customers, $0 revenue.

I'm not going to dress it up. But the reason matters:

I built and marketed a housing product during the two weeks of the year when nobody in France is looking for housing. Viewings are dead in early August and explode from late August onward, when everyone tries to move at once before the school year and work start. My market was on vacation. I started this push a week before the deadline, which is nothing for a market this seasonal.

So here's what I'm asking. My live revenue is here: trustmrr.com/startup/prems

Whenever you're reading this, click it before you write me off at $0. That number moves the moment the market comes back, and the market comes back in about ten days. I'd rather hand you a number that updates in front of you than a projection slide.

What we learned

I need a cofounder. Technical and commercial, alone, at 2am, is not a strategy. It's endurance.

An agent that works in a demo and an agent that survives real agency sites are different animals. Going fully general is usually the wrong instinct. Build for the specific case in front of you, then adapt. The moment I stopped trying to build the universal browser agent and went after the email path instead, the product got better and shipped faster.

Go to market is timing, almost entirely. Reach people when they need you, in a place where they're actually reachable, and there's no clever shortcut around either half. I found the right audience, the right moment of pain, the right channels, and hit all of them six weeks early. Being right at the wrong time looks identical to being wrong.

I also assumed users would be easy to reach. They weren't. Trust on any platform, Facebook or Discord or a moderator's DMs, is earned slowly and you cannot sprint it.

The most useful thing I did all month was ask an AI "I need to move, what do I do?" just to see what path a real person gets pushed down, so I could figure out where to be standing when they arrive. That's the whole game. Not what I want to sell. Where they already are.

If I started over I wouldn't change the build. I'd hold the launch until late August and walk into viewings, campuses, and agencies the week they reopen.

What's next

The market I've been shouting into opens in a few days. That's when I go back out.

First 100 paying users on a €100 lifetime founding offer, roughly €10k, mostly won in person at viewings. Same plan as this month, run at the right time of year instead of the wrong one.

I'm 16, I built this alone, and I ran it into the one dead window of the year. That's on me. The product works. The market shows up on schedule.


Sources: LocService, Les chiffres-clés du logement en France 2026 · Fage study, Feb 2026 · Meilleurtaux, June 2026

Built With

  • ai-agents
  • artifact-registry
  • bigquery
  • cloud-functions
  • cloud-logging
  • cloud-run
  • cloud-scheduler
  • cloud-tasks
  • docker
  • embeddings
  • event-driven
  • firestore
  • gemini
  • gmail-api
  • google-calendar-api
  • google-cloud
  • playwright
  • proptech
  • pub-sub
  • python
  • secret-manager
  • semantic-search
  • stripe
  • vertex-ai
  • web-scraping
Share this project:

Updates