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.

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
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.