factcircuit
FactCircuit: an auditable claim-and-evidence verification loop with immutable provenance, staged checks, bounded retrieval, and reproducible evaluation.
Estimate a Melbourne sale price with an 80% range. XGBoost trained on 27,000 real sales, tested on future ones, running entirely in your browser.
DataPython · JavaScriptGitHub @rishabhrayyOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Estimate what a Melbourne property would sell for, with an honest 80% price range, from the details a buyer actually knows: suburb, type, bedrooms, bathrooms, car spaces and, optionally, land size, building size and year built.
Try the live demo - it runs entirely in your browser, no server involved.
Tested the honest way: trained on sales up to October 2017, then evaluated only on 5,449 later sales (Nov 2017 to Mar 2018) that the model never saw. Shuffled train/test splits flatter house-price models, because they let the model peek at the future market.Read the full README ↗Estimate what a Melbourne property would sell for, with an honest 80% price range, from the details a buyer actually knows: suburb, type, bedrooms, bathrooms, car spaces and, optionally, land size, building size and year built.
Try the live demo - it runs entirely in your browser, no server involved. Besides the estimate and its range, it shows:
Tested the honest way: trained on sales up to October 2017, then evaluated only on 5,449 later sales (Nov 2017 to Mar 2018) that the model never saw. Shuffled train/test splits flatter house-price models, because they let the model peek at the future market.
| Median error | Within 10% of the sale price | Within 20% | Average error | |
|---|---|---|---|---|
| Baseline: suburb + property-type median | 15.4% | 35.4% | 61.1% | $230k |
| XGBoost model | 10.3% | 49.0% | 78.1% | $151k |
reports/metrics.json.src/data/load.pysrc/features/build.pysrc/model/train.pyweb/model.js). Feature building is mirrored in web/features.js.python -m pytest -q
CI runs these with ruff on Python 3.11 to 3.13, with Node installed so the browser parity checks run too. Eight tests cover the promises above: no missing values reach the model, unseen suburbs fall back instead of failing, small suburbs are shrunk, the split is by time, the model beats the median baseline, the price range is within 5 points of its stated coverage, and the browser reproduces Python's features and predictions exactly (compared with Node).
pip install -r requirements.txt
python -m src.model.train # downloads the data with kagglehub, trains, evaluates, exports to web/
python -m pytest -q
python -m http.server 4400 --directory web # then open http://localhost:4400
Code: MIT. Data: Melbourne Housing Market by Tony Pino, scraped from Domain.com.au, licensed CC BY-NC-SA 4.0. The raw data is downloaded at training time and not included in this repository. The derived model and suburb statistics in web/ are shared under the same licence, for non-commercial use.
This is a portfolio project built on public data. It is not a valuation and should not be used as one.