Agriva, real estate · 2026

Buyers could not search farmland the way they talk about it

Built by Vyzma. Led by Ansuj.

Agriva home page; the search box accepts plain-English queries

Situation

Buyers of farmland and plots think in sentences like "10 acres near Mysore road under 2 crore with water", and a filter grid cannot take that.

What we built

A chat bar as the main search interface, backed by structured search, semantic matching and live map data.

What changed

Chat is now the primary way buyers search on agriva.ai, and every answer is grounded in listing data rather than guessed.

The problem

Premium land in India trades on broker networks and word of mouth. Listings are inconsistent, and buyers describe what they want in plain language with mixed units, place names and budgets.

A conventional filter grid forced buyers to translate their intent into dropdowns, and most gave up or called a broker with a vague ask.

What we built

  • A chat bar on the homepage that is the search box. GPT-4o-mini parses each query into structured filters (type, size, budget, district, must-haves).
  • Typesense serves the structured and fuzzy search over listings; pgvector embeddings catch semantic matches that keywords miss.
  • A streaming chat endpoint answers follow-up questions about a listing, with nearby places pulled live from OpenStreetMap so the answer names real schools, hospitals and roads.
  • A system prompt that tells the model to use only the data it has been given and to say so when it has none.

How it works

  • Query comes in as text. One model call turns it into a JSON filter object with a confidence per field.
  • Filters hit Typesense; the free-text remainder is embedded and matched against listing embeddings in Postgres.
  • Results are merged and ranked. The chat layer only ever sees the ranked listings and the map data, never the open web.

What changed

  • Chat is the main search interface on agriva.ai.
  • Every answer is grounded in listing data and live map data, with no free-form guessing.

Stack

FastAPIPostgrespgvectorTypesenseOpenAINext.js

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.