Inspiration

Moving to another country means two languages, five property portals and a dozen questions no portal answers: is this price fair, what are the schools like, what does my budget buy in one city versus the next, how do I reach the agent without handing my phone number to a form. Cubi Estate already indexes 2.3M+ active listings across 20 European countries and exposes them through a public, read-only MCP connector. We wanted one conversation over all of it, in the buyer's own language, on open models. Our demo opens on a smaller version of the same question: a weekend house in the mountains, by a lake, in whichever country fits.

What it does

Cubi Agent is a web chat at https://www.cubi.estate/agent (no account needed, free until the end of judging).

  • Pick pictures, not words. A five-step wizard (a feeling, a country or all of Europe, a kind of home, rent or buy and a budget, what matters) ends in one plain sentence and a brief that says what filters, what only ranks, and what is still open.
  • Then narrow it in your own language. Six languages natively (EN, PT, ES, FR, DE, NL); any other is pivoted through English and back. "Vamos limitar a pesquisa à Lombardia" keeps the search to rent; "What if I buy instead?" switches it, and the agent keeps that choice across the following turns. Nemotron turns the words into a structured filter, code checks it, and each place is searched separately.
  • Check the price. Is this home priced in line with comparable homes in its city? The interquartile range of asking prices and how many homes it rests on; with too few, it says there is no range, never a verdict.
  • Find homes like it, there or abroad. Cubi's similarity model (a 50-dimension embedding of each listing's catalogued features, nearest neighbours, then a ranker on stated features, size and place) matches on features and surroundings, never on price; the agent lays the asking prices side by side, in Málaga or in Lisbon, feature by feature, with "not stated" shown as such, never as "no".
  • Open a home. Tap a card: Nemotron's brief in your language, what to check before deciding, Cubi's environment and walking-time data, homes like this one, a map from OpenStreetMap with what's nearby, and every question you can ask about that home as a button in the chat.
  • Ask about the place. Schools and transport in two cities, each point linked to its web source; what's new in a town from Cubi's price log, Tavily housing news and recent posts on X.
  • Compare places with real data. What €400k buys in Lisbon vs Porto, as the share of Cubi's priced listings within the budget, drawn as bars; raise the budget and the bars move from the old marks.
  • Reach the agent only through Cubi's consented flow: questions via Cubi, Cubi Connect or an email request; no phone number or email on screen.

How we built it

One open model does the language work: nvidia/nemotron-3-super-120b-a12b on Nebius Token Factory (OpenAI-compatible API) runs the tool loop, extracts the search filter under a strict JSON schema and writes the short answers; Nemotron 3 Nano writes the listing briefs. Thinking is switched off for these calls. The system prompts are the SKILL.md files of the Cubi Estate plugin for Claude, vendored as a pinned submodule, so the same skills drive Claude through the plugin and Nemotron here.

Code decides what the model should not: language detection, sale vs rent, feature names, which home "the second one" means, and whether a request needs the structured filter or Cubi's free-text search. Listing cards are parsed from the connector's replies, so the model cannot invent one. Deterministic guards run on every answer: every URL must appear verbatim in tool output, phone numbers and emails are scrubbed, "good deal / overpriced" verdicts are removed and a "not a valuation" line added, any claim of having contacted someone is dropped, and Tavily citations are linked in code.

The agent is a small FastAPI app (Python, no frontend build step, no external scripts) in a container built by GitHub Actions and hosted on a Nebius AI Cloud serverless endpoint in Paris. Tools: Cubi Estate's MCP connector (search, filter, listing, price comparison, price history, inventory shares, similar homes, contact options), Tavily for area questions, OpenStreetMap for the map.

Results

  • Filter extraction, held-out set (36 unseen requests, 6 per language, rules frozen before the run): Nemotron 3 Super got 148/148 fields and 36/36 requests right, p50 1.05 s.
  • Agent vs Cubi's own free-text search (31 held-out requests): about the same precision (90% vs 94% of listings meeting every visible constraint), 4× faster (p50 1.35 s vs 5.97 s) on a tenth of the connector quota (33 vs 310 units).
  • Answer audit: 0 of 31 first turns needed a guard fix once cards came from code. Before that, one live German turn had invented three listings with plausible ids.
  • 400+ offline tests; an uptime check every 30 minutes through judging.

Challenges we ran into

  • Nemotron's reasoning leaked into strict json_schema output until thinking was switched off; Nano then spent its whole budget thinking and returned nothing.
  • Internal citation markup reached the answers in place of links, so sources are now numbered, the markup is read as a citation, and links are made in code.
  • Short European queries defeat model language detection, so code does it.
  • A country-wide search across all of Europe can exceed the connector's time limit; the agent now says so in advance and falls back to searching the largest markets side by side.
  • Cubi's connector had no in-market similarity tool, so a read-only one was added upstream for the listing pane.

What we learned

What open models do well, what to keep in code, and how to make an agent honest: render data from tools, not from the model, and guard every answer deterministically. Thirteen concrete findings on Token Factory, Nemotron and Nebius AI Cloud, each with the workaround and what would have helped, are in the repository's docs/FEEDBACK.md.

What's next

The production build for cubi.estate: the wizard in seven languages with a persisted brief, photo-to-home search (a vision spike with Nemotron 3.5 Super VL passed every gate), and the X posts feed once its legal review is done.

Note for judges

The agent, the web app, the evals and the skill pack are open source (Apache-2.0). The live listing service behind it, Cubi Estate's connector, is a separately maintained production service and keeps improving during judging; the demo is pinned to the submitted agent build.

Built With

Share this project:

Updates

Submission history