Agriva, real estate · 2026

86 live listings, most of them wrong somewhere, and admins fixing by hand

Built by Vyzma. Led by Ansuj.

Situation

Agriva's live catalogue had bad titles, areas that disagreed with the broker's own text, phone numbers overlaid on photos and missing map data.

What we built

A rules-plus-AI inspector that checks every listing, logs every issue, proposes fixes an admin keeps or reverts, and asks brokers for what only they can fix.

What changed

The whole catalogue was audited and cleaned with an audit trail on every change, and new listings cannot publish with a critical issue.

The problem

By October 2026 the platform had 86 live listings. Many had emoji titles, pasted WhatsApp text, prices that did not match the per-acre figure, or a drawn boundary that did not match the stated area.

Overlaid phone numbers and logos on photos reflected badly on the platform and leaked broker contacts around the lead flow.

Admins were fixing listings one at a time with no record of what changed, so nobody could tell what had been edited or revert a bad edit.

What we built

  • An inspector with pure check modules for text, numbers, location and media, run on every save and on demand.
  • Safe automatic fixes, each stored as a quality change with the exact before and after, so an admin can keep or revert every one on the listing's audit screen.
  • Critical issues hold a listing from publishing until an admin resolves them. No silent auto-edits.
  • Overlay detection that finds phone numbers, logos and watermarks on photos and plans a crop, plus a server-side photo editor that keeps originals.
  • Broker fix requests in plain language, sent over WhatsApp from one guarded sender, with reminders and a per-listing activity log.
  • A broker workspace where a broker edits their own listing; the edit goes live immediately only if it leaves no open critical issue, otherwise it is held for review while the old version stays live.

How it works

  • Checks are pure functions over the listing record; the inspector reconciles their output with the stored issue log so an issue has one lifetime, not one row per run.
  • A fix is a proposed change. Applying it writes before and after; reverting checks the field has not changed since, and refuses if it has.
  • An on-demand AI judge reviews the buyer-facing description, and a fact-only rewrite is proposed for an admin to accept, never applied by itself.

What changed

86

live listings audited

Source: Agriva listing audit note, 2026-10-11

68

title and description rewrites applied

Source: Agriva listing audit note, 2026-10-11

40

photo fixes: 14 overlay crops, 26 rotation and dedupe

Source: Agriva listing audit note, 2026-10-11

16

lost drone flyovers and nearby-places sections restored

Source: Agriva listing audit note, 2026-10-11

71

backlog fixes on production (61 text, 10 location), logged and revertable

Source: Agriva release note, 2026-10-12, estatia-backend PR #97

0

emoji titles, pasted chat text or phone numbers left in descriptions

Source: Agriva listing audit note, 2026-10-11

  • Every automatic change has a stored before and after and a revert path.
  • Listings with a critical issue cannot go live until an admin clears them.

Stack

FastAPIPostgresOpenAIWhatsApp Business APINext.jsS3

If this looks like your situation

Tell us where it hurts. We will say whether it is worth automating, and what we would build first.