Back to projects

Systems / Privacy prototype

GeoGuard

A location-privacy experiment that clusters visit history, identifies frequently visited places, perturbs sensitive coordinates, and overrides browser geolocation methods.

PythonDBSCANNumPyJavaScriptGeolocation
View repository
GEOGUARD
LOCATION → GEOSPATIAL CONTEXT

01 / COMPONENTS & DATA FLOW

Inside the system.

  1. 01Location history
  2. 02DBSCAN + POI detection
  3. 03Coordinate perturbation
  4. 04Geolocation override

History-based sensitivity

GeoGuardPrivacy reads JSON location history, standardizes coordinates, and uses DBSCAN to identify clusters. Visit counts determine which clusters qualify as points of interest.

Distance and perturbation

The implementation uses Haversine calculations for cluster radii and checks whether a coordinate is near a sensitive place before selecting a privacy level.

Browser integration

The extension wraps getCurrentPosition, watchPosition, and clearWatch and uses page messages to request privacy-preserving location responses.

02 / IMPLEMENTATION DECISIONS

Why it works this way.

Sensitivity comes from repeated visits

The model treats frequently visited clusters differently from sparse or noisy points. Default clustering uses eps 0.1 and min_samples 3 after standardization.

Privacy requires more than moving a point

Coordinate perturbation is the implemented mechanism. Its protection depends on the history, policy, browser integration, and the information a receiving application already has.

03 / SCOPE & TRADEOFFS

The implementation boundary.

A geolocation privacy prototype. Perturbation and DBSCAN clustering do not establish a formal differential-privacy guarantee or an extension-wide security boundary.

04 / READ THE IMPLEMENTATION

Follow it into the code.