Develop · Build
How it came together.
- 01
A QLoRA pass on real jurisdictional data
QLoRA over a base instruct model was the right tier: full fine-tune was overkill, prompt engineering under-trained. Instruction pairs were sourced from Dubai Land Department, UK Land Registry, France DVF, Singapore URA, and the World Bank; each pair was reviewed by an analyst so the model learned the team's judgment, not just the registries' wording.
AI & Machine Learning Local serving changes the economics. The corpus is public record; the model runs on one workstation, so asking it a hundred questions costs the same as asking it one. - 02
Local deployment via Ollama
Per-query cost on a hosted frontier API would have killed the on-demand workflow before it shipped. Local Ollama deployment on a single workstation cuts the cost to electricity, runs at conversational latency, and keeps transactional data inside the org's network, non-negotiable for a brokerage handling proprietary listings.
Backend Engineering - 03
A guarded agent loop, reason then act
The agent loop treats each research run as a guarded step: reason over the request, propose an action, then commit it above a confidence threshold or escalate to a human below one. Every accepted and escalated action is logged, feeding the next training pass.
AI & Machine Learning - 04
FastAPI in front so other tools can call the agents
Wrapped Barnes Dubai LLM behind a FastAPI service so Data Centre, the Dev Portal, and ad-hoc Python scripts all call the same agents through one API, rather than each building its own chat surface.
Backend Engineering
Develop · Forks
Decisions on the record.
The few calls worth defending. Each one is a fork; the other branch would have been a different project.
Decision · 01
QLoRA fine-tune for a terminology-heavy vertical
Dubai luxury real-estate is terminology-heavy, mixed-language, and full of low-frequency entities (off-plan towers, niche communities, broker shorthand) where base + RAG tends to hallucinate. The QLoRA pass lifted named-entity recall and got the model speaking the vertical's actual dialect.
Decision · 02
Splitting one chat box into three modes
The first version was one conversational surface conflating three jobs: market analysis (Barnes Dubai LLM), tool-orchestrated workflows (Victor), and marketing-asset generation (Design). Splitting them into a mode picker made the right model + prompt + tool-bundle visible up front instead of relying on the LLM to guess intent. Users now pick the task; the model does it.
Decision · 03
Routing vision to Cloudflare Workers AI
A broker shoots a listing on a mid-range laptop with no GPU behind it. What dominates the prompt-eval pass is vision-token tokenisation, not the text the model writes back, so handing the image to a server GPU beats grinding it through the client CPU. Cloudflare Workers AI runs llava on GPU with a 10-15s warm round-trip, and the free tier's 10k requests a day sits well past what a broker desk generates. Only the photo bytes leave the broker's device.
