Contributors and Contact Information:

Chris Buonocore

Problem Statement addressed:

PropGraph: Find undervalued and comparable properties using graph-based relationships powered on TigerGraph.

Going after the TigerGraph Graph For All Million Dollar Challenge.





With real estate at a recent all time demand high, the need for determining valuations effectively is important as ever. Often comparables for real estate valuation are derived at the discretion of the real estate agent, or simply based off the zestimate or redfin estimate for a property.

These methods can also be extremely opaque - with little to no visibility into the exact parameters that influence the price.

When an agent picks comparables, often this goes one layer deep - ex: the property is compared to three adjacent properties.

PropGraph provides a graph based solution that allows querying a given property and finding deeper relationships against recently sold properties. With PropGraph, you can take many 1-layer graphs (ex: one agent doing a comparable on a property) and go N layers deep instead by mapping across all comparables shared by multiple agents. With this strategy you can compare a property in Boston to a property that recently sold in the UK for example via transitive graph.

Key graph elements:

  • Descriptive words (renovated, new kitchen, new bathroom, flooring, etc.)

Standard quantitative fields:

  • Bedrooms
  • Bathrooms
  • Square footage

  • Relationships between different property keywords.

  • Find corresponding properties based on graph relationships matching multiple criteria simultaneously.

  • Helps reduce bias in real estate pricing.

  • Ingests and graphs data through several mainstream real estate websites, including Redfin, Zillow, and Trulia.

  • Creates a valuation and visualization model in real time and serves it to the front end application.


Example dataset in ./data/sample.csv. More could be exported in basic searches from Redfin (

Technology Stack:

  • ReactJS (frontend)
  • Python (backend)

Uses pyTigerGraph for interacting with the tigergraph cloud DB cluster.


State any dependencies and their versions that needed to be installed to test this project. This may include programming languages, frameworks, libraries, etc.


Clone this repo and follow the steps below for the backend and frontend configuration locally.


./propgraph: Client-side code. ./server: Jupyter notebook to configure the graph DB and backend server code. ./data: Example property data. ./img: Example screenshots of the application.


  1. Set up a tigergraph cloud instance at, and set the credentials to access that instance via the following environment variables.
    TIGER_TOKEN={YOU_TIGERGRAPH_TOKEN} # optional, fetched at runtime if unset.
  1. To bootstrap base/empty graph for PropGraph, run a jupyter notebook from the ./server directory and open graphsetup.ipynb. Install dependencies in first cell and run all cells below.
  2. chmod 755
  3. Run ./

The server should now be running on port 8000.

Bootstrap the Database

You'll want jupyter to run the DB-setup commands. From the ./server folder: jupyter-notebook (or lab).

Run the commands to the end; if successful, the graph should be a created and a few sample queries should execute.


From the ./propgraph folder:

yarn start

The PropGraph frontend should now be running on port 3000.

You'll want to load up the DB with some properties from the 'Upload' page of the app to begin using PropGraph with your Tigergraph database.

Known Issues and Future Improvements

  • Include in-app visualization for comparable graph (currently capture-able in the notebook for further/future analysis)


Tigergraph has a unique value prop to do 'Nth' comparable level queries against properties to yield deeper insight than what could easily be done with a traditional database.


See full description on github:

Built With

Share this project: