Skip to content

Case study

Rentai Glass — real-estate listing verification by photo

Upload a photo or paste a listing link — we find duplicates and near-matches to reduce fraud risk.

Web
AI
Cloud
Integrations
PropTech & Anti-fraud
Rentai Glass — real-estate listing verification by photo cover

Overview

Project overview

Rentai Glass is a web service and REST API that checks real-estate listings by photo. It generates a neural visual fingerprint (DINOv2 ONNX embeddings), runs fast vector search (PostgreSQL + pgvector), and streams a transparent report with similarity, listing metadata, logs, and optional safety scoring. Partners get OpenAPI docs, a developer portal (keys, limits, billing, analytics), and a Telegram bot for quick checks.

ROLE

End-to-end engineering: CV/ML pipeline, vector search, REST API + Developer Portal, Telegram bot

TIMELINE

2024-2026

MVP
scale
enterprise rollout

FOCUS

  • Search “same listing” by photo (upload + link scan)
  • DINOv2 ONNX embeddings with CPU/GPU providers
  • pgvector similarity search (cosine) + indexing pipeline
  • Real-time report UX via SSE + PDF export
  • Developer platform: keys, limits, billing, analytics + Telegram bot

Story

Problem → Solution → Outcome

PROBLEM

Fraud and duplication in real-estate listings often hide behind reused photos. Users, agencies, and marketplaces need a fast way to answer “have we seen this photo before?” across multiple sources — without building an in-house CV team.

SOLUTION

Rentai Glass turns a photo (or listing URL) into a DINOv2 embedding via ONNX Runtime, searches a pgvector index, and streams a report via SSE with similarity, metadata, logs, PDF export, and optional safety scoring. For partners, it ships as a REST API with OpenAPI docs and a portal for keys, limits, billing, and analytics — plus a Telegram bot.

OUTCOME

Faster checks before calls/meetings, fewer fraud incidents, quicker moderation, and partner integrations via a production-ready API.

Highlights

What we built

Key systems shipped end-to-end — designed for reliability, conversion, and scale.

Search by photo (end-to-end pipeline)

From upload or link → image preprocessing → DINOv2 embeddings → pgvector search, with a clean similarity score.

  • Photo upload or listing URL (olx.ua, lun.ua, dom.ria.com, x-estate.com)
  • DINOv2 ONNX embeddings (768‑dim vector)
  • Cosine similarity in Postgres (pgvector + ivfflat)

Real-time report UX

A transparent report that streams progress, keeps logs, and produces a final artifact you can share.

  • SSE stream: start/log/result/safety/finish
  • Report JSON + PDF export
  • Google reverse image search link for manual checks

Safety score (optional)

An optional ONNX model aggregates signals across matches and returns a 1–10 safety score with explanations.

  • Signals from metadata: address, area, rooms, floor, year, phones
  • Graceful fallback if the model is missing
  • Explainable reasons and audit trail for moderation

Developer platform & integrations

REST API + OpenAPI docs, portal for keys/limits/billing/analytics, and a Telegram bot for quick checks.

  • API keys, rate limits, usage analytics
  • Token billing + Monobank payments/webhooks
  • Web UI + Telegram bot + email reports

Challenges

Technical challenges

The hard parts — and the solutions that made the system stable.

Results

Impact

Measured outcomes and operational wins.

  • Photo-based checks with clear similarity scores, listing metadata, and transparent logs.

  • Duplicate and stolen-photo detection across indexed marketplaces — plus monitoring of re-posts.

  • Omnichannel access: Web UI, REST API, and a Telegram bot for quick checks.

  • Partner-ready developer platform: OpenAPI docs, keys, limits, billing, and usage analytics.

  • Optional safety scoring with explainable signals for moderation and anti-fraud workflows.

Stack

Tech stack used

Tools and patterns used on this build.

ML / embeddings

  • sharp (224×224 → raw RGB)
  • DINOv2 (ViT‑B/14) ONNX (768d)
  • onnxruntime-node (cpu/cuda/dml)

Vector search

  • PostgreSQL + pgvector
  • Cosine distance + ivfflat index
  • Thresholded similarity (1 − distance)

Backend & realtime

  • Node.js + TypeScript
  • Express 5 + EJS (SSR)
  • SSE (EventSource)
  • Worker Threads

Indexing & parsers

  • Separate indexing pipeline (parsers → embeddings → DB)
  • Puppeteer + cheerio/axios
  • OLX / LUN / DOM.RIA / X‑Estate sources

Developer platform

  • OpenAPI + RapiDoc
  • API keys + limits + analytics
  • Token billing + Monobank webhooks

Product surface

  • Web UI + reports
  • Telegram bot
  • Email delivery + PDF reports

Metrics

Impact metrics

Embedding vector

768DINOv2 dimensions

Supported sources

4olx.ua • lun.ua • dom.ria.com • x-estate.com

Delivery surfaces

3web • API • Telegram

Next

Next case study

Keep browsing the system.

ShakeMaster Ecosystem — Active Status & Licensing Platform

Dual-component ecosystem: a Windows client plus a high-performance server platform for subscriptions, licensing, payments (fiat/crypto), and zero-touch updates.

Next case