AI

AI services

AI Agents DevelopmentProduction AI agents — discovery to deployment.Custom AI DevelopmentProduction-grade AI software for real products.AI ConsultingFrom AI strategy to systems you run in production.AI Decision DayOne day with your leadership: every AI idea ranked, a 90-day plan.
Services

Development

Custom Software DevelopmentWeb platforms, TMS and SaaS on Node.js, React, Vue and Laravel.Mobile DevelopmentCross-platform apps on Flutter and React Native, native where it counts.UI/UX DesignResearch, wireframes, prototypes and interfaces people get.CMS DevelopmentWordPress and OpenCart sites and stores, launched in weeks.Dedicated TeamA vetted engineering team that scales with your product.

Expertise

CRM, HRM & ERP DevelopmentBusiness systems built or integrated, with AI agents inside.Legacy ModernisationOld systems moved to a modern stack step by step.IT InfrastructureCloud, servers, DevOps, monitoring and security.Managed IT ServicesOngoing IT support and on-demand coverage for your systems.

Startup launch

Startup DevelopmentFrom idea to a product that scales, with AI inside.Discovery PhaseRequirements, prototype and estimate before development starts.PoC & MVP DevelopmentProve the idea and test the market before the full build.

Industries

Logistics SystemsTMS, dispatch, fleet and warehouse software with AI agents.FinTechPayments, banking, trading and insurance software with AI.Education & EdTecheLearning platforms and education apps with AI tutors.Medical MarketingPatient acquisition for clinics: ads, sites and AI booking.SMM for Medical PracticesSocial media, content and ads that earn patient trust.
CasesBlogAI LabCompany
EN/UAContact us

We unlock business potential with custom software & AI

pmo@qberry.so

Offices

  • Kyiv, UA

    12 Khreshchatyk St.

  • Pervomaisk, UA

    Mykolaiv Region

  • Remote

    Working worldwide

Cases

  • Logistics & TMS
  • FoodTech
  • SaaS
  • Medical practices
  • Education
  • Other

Services

  • AI Agents Development
  • Custom AI Development
  • AI Consulting
  • AI Decision Day
  • Custom Software Development
  • Mobile Development
  • UI/UX Design
  • CMS Development
  • Dedicated Team

© Qberry 2026. All rights reserved

CareersCompanyBlogContact usTerms of UsePrivacy PolicyCookie PolicyEN/UA

Made in Ukraine with Love 💙💛

United KingdomReal estatePythonNext.js

RENT2RENT

Deal finder for rent-to-rent: the system collects Rightmove listings, says how high the rent can go and prepares the enquiry to the agent

Book a call now

Rent-to-rent is a business of arithmetic: the client rents a house in London on a fixed annual rent, splits it into studios and lets them short-term. The margin lives in two figures, the nightly rate and the occupancy, and in one question: how high can the rent go before the deal stops paying. Before the platform they answered it by hand, listing by listing, in a spreadsheet with a traffic light.

Now the system does the rounds. It collects Rightmove listings every few hours, calculates the return the way the client calculates it, names the ceiling rent and the target offer for every house, drafts the enquiry to the agent and keeps the deal on a board from discovery to signing. The AI prepares, the person decides.

How RENT2RENT works

Forty seconds of what the client sees: Rightmove listings collected every few hours, 99 % of them dropped with a reason, the ceiling rent and the target offer for every house, an enquiry the AI drafts and a person sends, and the board from listing to signed lease.

The client and the task

  • Strict selection rules. Four or more bedrooms, two or more bathrooms so the house can be split into studios, a rent that still leaves a margin after the platform fees. Out of a hundred and fifty listings per search, ten to twenty fit.
  • A spreadsheet with a traffic light. Green for a call, yellow for unclear, red for no. The figures went into a separate calculator, the nightly rate was checked across three services, agents were messaged one by one through the platform form.
  • Hot and stale are different jobs. Fresh listings are gone in days and the agent is flooded with calls. Listings that have hung on the market for three weeks or more are the real target: the owner is ready to haggle, and a calculated offer wins. Telling the two apart by hand does not scale.

What we built

  • A Rightmove parser on Playwright with saved searches, scheduled runs every few hours, a pool of UK proxies with rotation, quarantine and resume from the same page.
  • The return calculation in both scenarios, the whole house and the studios, with the ceiling rent, the target offer, a verdict per house and rejection filters that always name the reason.
  • Enquiries through the Rightmove form from the client's own accounts, with templates, landlord questionnaires and a human gate on every send; replies come back into the card, classified by the AI.
  • A board of eight columns, comments, history, Telegram notifications, export, users with roles and an audit log. The interface in English, Ukrainian and Russian.

Ceiling rent, not a list of houses

The calculation follows the client's method. Occupied nights are the occupancy times 365; the gross income is the nightly rate times the nights; VAT, the platform fee and operating costs come off, and what is left before rent is the key figure. Net profit is that figure minus the annual rent, ROI is net profit over the rent, because the house is rented, not bought.

  • The ceiling rent is the rent above which the deal goes negative: the hard limit for haggling. From it the system derives the target offer, the figure to open the conversation with at the ROI the client wants.
  • Two market variables. The nightly rate and the occupancy. For an area the system has not seen it asks the model and clamps the occupancy to a 50 to 85 per cent corridor, so an optimistic estimate cannot inflate the return.
  • Your figure beats the model's. As soon as the operator enters their own rate for an area, the system remembers it and never asks the model about that area again. The scoring settings show what will change before anything is recalculated.

Parsing that does not get banned

  • A search config is a saved Rightmove search: area, radius, bedrooms, rent ceiling. Each config runs on its own schedule, with a quick mode for the first pages and a full walk of the result set.
  • The proxy pool works in batches. An address takes a batch of pages and rests, no two addresses from one subnet work at the same time, pauses between pages are 6 to 10 seconds.
  • Errors are never masked. A 429 means the platform asked to slow down: the pages are skipped and retried next time. A 403 means the proxy was spotted: it goes into quarantine and the crawl resumes through another address. Better to see the data is incomplete than to score the return on half the base.

Enquiries under human control

  • From the client's own accounts, each with a proxy address of its own, fixed for good and separate from the parser pool, so the platform never sees a signed-in user and a crawl of hundreds of pages from one address.
  • Two safety switches, a toggle in the interface and a variable on the server, and both must be on. Sends are spread across accounts with a daily limit and an 8 to 14 minute pause between them.
  • Templates as an A/B test with a weight per template; the dashboard shows which template actually books a meeting. Landlord questionnaires are answered from a profile, the free-form questions are drafted by the AI and shown before sending.
  • Replies come back into the card, classified as interest, clarifying, soft refusal or hard refusal; a phone number in the text turns into a WhatsApp button. The answer is drafted by the AI and sent by the operator.
  • AI photos furnish the original, never invent a room, because the picture goes into a test advert and the viewing must match it. Generation starts only after the agent shows interest, every photo is approved by a person, and the monthly AI budget warns at 80 per cent.

Results in numbers

The figures are from the live system two months after the second iteration went into production.

  • 1,460+ listings collected by the parser from the client's searches, about 530 of them in the latest week.
  • 99 % rejected automatically by the filters, each with a reason; the operator reviews a dozen houses, every one with a ceiling rent and a target offer.
  • 68 areas with a market estimate, every one of them open to the operator's own figure.
  • A run takes 1 to 7 minutes, every few hours, with no proxy lost to a ban so far.
  • Zero sends without a person: the dry-run mode and the server switch are both logged.

Under the hood

  • Next.js + TypeScript admin panel on Vercel, in three languages, with a light and a dark theme.
  • FastAPI on Python with PostgreSQL, Redis and Celery workers, in Docker on a VPS: the parser needs resident workers, a real browser and proxies with fixed outgoing addresses, which serverless does not give.
  • Playwright crawl worker behind the proxy pool; a model through an API for market estimates, questionnaire answers, reply classification and photo staging, with a spend counter per task and a monthly limit.
  • GitHub Actions deploys on every push; passwords and account cookies are encrypted at rest.

What comes next

  • Live sending after calibration on the real enquiry form, with the human gate kept.
  • WhatsApp through the Cloud API, so the conversation with the agent stays in the card.
  • More platforms: Zoopla and SpareRoom in the UK, Idealista for the Spanish market; inbound enquiries from tenants and a tenant base.
Country
United Kingdom
Industry
Real estate
Status
MVP in 6 weeks, second iteration in production since 2026

In this case

  1. 1.How RENT2RENT works
  2. 2.The client and the task
  3. 3.What we built
  4. 4.Ceiling rent, not a list of houses
  5. 5.Parsing that does not get banned
  6. 6.Enquiries under human control
  7. 7.Results in numbers
  8. 8.Under the hood
  9. 9.What comes next

With our technical process

Our clients' ideas rock

E-COMMERCE LEADS preview

E-COMMERCE LEADS

Automationn8nCRM IntegrationE-commerce

A unified system for processing leads from all channels — validation, CRM deal creation, distribution among managers, and instant client response.

View details
CONSULTING LEADS preview

CONSULTING LEADS

AutomationAIn8nLead Qualification

Automated initial client interaction powered by n8n and AI — filtering non-target inquiries and passing only qualified leads to managers.

View details
AUTOFLOW preview

AUTOFLOW

AutomationAI AssistantBookingAuto Service

An AI assistant answers on every channel, collects the car, problem and urgency, checks the live schedule and turns each request into a ready-to-confirm booking.

View details
CAR IMPORT preview

CAR IMPORT

AutomationAI AssistantAuction MatchingCar Import

An AI assistant answers car enquiries on every channel, collects budget, make, year, engine and market, matches live US & Korean auction cars and hands the manager a qualified buyer.

View details
AI Shopping Assistant preview

AI Shopping Assistant

E-commerceOpenAIPython

AI assistant for an online store: shoppers describe what they need in their own words, the assistant asks follow-up questions and shows products with live prices and stock from the store's API. Built into the existing store in 2 months.

View details
ClinicPilot preview

ClinicPilot

Medical practicesClaudeLaravel

AI administrator for private clinics: booking, reminders, pre-visit questions and follow-ups in Telegram, WhatsApp and on the website, with one admin panel for the team.

View details
Homeland preview

Homeland

Logistics & TMSreactlaravel

A dispatcher hub and driver mobile app that turn check calls into live data: driver statuses, automatic location sharing, rich chat with document scanning, and two-way TMS sync — multi-carrier by design.

View details
View all cases

Ready to bring your project to life?

Let's talk about your project

By sending this form I confirm that I have read and accept the Privacy Policy

qberry@qberry.so: ~

$ qberry --how-we-work

→ scope_and_estimate/

# clear scope and estimate before we start

→ weekly_demo/

# you see working progress every week

→ one_pm_on_your_side/

# one contact who owns your project

$ launch && support ▶

no black box —you see every step