Shaaf Kashan

TerraGrid

Final-year project: AI and blockchain property platform

XGBoost won a four-model benchmark (mean RMSE 0.609) and the blockchain sits behind its own gateway, so the MVP runs end to end on the Sepolia testnet.

The principle: Wall off the part you cannot reverse, here the ledger, behind a service boundary.

Graded A+.

In brief

  • Challenge: Making a React frontend, an ML valuation model and a blockchain ledger behave like one product instead of three integrations side by side.
  • Outcome: Shipped a working MVP on the Sepolia testnet: end-to-end token ownership, ML valuations, and a React dashboard over the top.

Context

Investors buying property at a distance have no reliable way to value it or to prove who owns it. The hard part wasn't any single piece; it was making three things that don't naturally fit — a React frontend, an ML valuation model, and a blockchain ledger — behave like one product instead of three integrations stuck side by side.

Constraints

  • The property data was patchy and inconsistent, so the model had to cope with missing values instead of falling over on a bad row.
  • On-chain transactions can't be undone, so the ownership-transfer flow had to be right before a single token was minted.
  • I hadn't shipped blockchain before, so the design had to wall the smart-contract complexity off from everything else.

Decisions

  • Benchmarked four model families for the valuation engine — linear regression, random forest, XGBoost, and a neural network — each hyperparameter-tuned and scored on RMSE/MAE, because property pricing is non-linear and benefits from feature interaction. XGBoost won consistently (best mean RMSE 0.609), served as a decoupled Python/Flask microservice so the models can be retrained independently of the core platform.
  • Isolated the blockchain layer behind a service boundary so the React frontend and Spring Boot API never called Solidity directly — all chain interactions pass through a dedicated gateway.
  • Used Spring Boot for the backend because its dependency injection and security framework handle the authentication, role-based access, and audit logging that a financial-adjacent platform requires.

Trade-offs

  • The service boundary around blockchain adds latency to ownership transfers, but guarantees the frontend and API remain testable and deployable independently.
  • Comparing four model families added modelling effort over committing to one upfront, but benchmarking them head-to-head on non-linear property data is what surfaced XGBoost (RMSE 0.609) as the strongest valuation model.

Outcome

Shipped a working MVP on the Sepolia testnet: end-to-end token ownership, ML valuations, and a React dashboard over the top.

Evidence

  • Full ownership transfer lifecycle demonstrated on Sepolia testnet.
  • Compared four ML models on real UK property data; XGBoost delivered the best accuracy (mean RMSE 0.609) and powers the valuation engine.
  • JUnit unit tests, Postman integration tests, and a Hardhat smart-contract suite — all passing.
  • Graded A+.

Stack

  • React
  • Spring Boot
  • Python
  • Flask
  • XGBoost
  • Solidity
  • MySQL

Architecture

  • Client: React SPA (React) — Dashboard & reactive UI
  • Application: Spring Boot API (Spring Boot) — Auth, business logic, audit logging
  • Intelligence: Valuation Engine (Python · XGBoost) — Flask ML microservice — non-linear property valuation; Chain Gateway (Solidity) — Isolated boundary for token ownership on Sepolia
  • Data: MySQL (MySQL) — Persistent relational storage

Links