{
 "slug": "coverage",
 "computed_from": "masspermits.com build",
 "corpus_fetched_at": "2026-09-27T15:00:47.981576+00:00",
 "corpus_rows": 80002,
 "corpus_sources": 77,
 "corpus_first": "2025-07-01",
 "corpus_last": "2026-09-27",
 "method": {
  "heat_pump": "heat\\s*pump|mini[\\s-]?split|minisplit|ductless|\\bashp\\b",
  "fossil": "\\bfurnace(s)?\\b|\\bboiler(s)?\\b|forced hot air|\\bgas heat\\b|oil burner",
  "adu": "\\baccessory dwelling|\\badu\\b|in[- ]law (apartment|suite)|accessory apartment",
  "min_desc_chars": 8,
  "min_heating_rows": 20,
  "min_gas_distinctness": 0.5,
  "min_weekday_rows": 100,
  "min_calendar_fridays": 6
 },
 "guards": {},
 "stats": {
  "n_sources": 77,
  "n_rows": 80002,
  "fetched_at": "2026-09-27T15:00:47.981576+00:00",
  "no_valuation": 52,
  "with_coords": 8,
  "no_freetext": 21,
  "capped_sources": 3,
  "row_cap": 2400,
  "monthly": [
   "Amherst, MA",
   "Barnstable, MA",
   "Barre, MA",
   "Bourne, MA",
   "Chatham, MA",
   "Duxbury, MA",
   "Lexington, MA",
   "Lowell, MA",
   "Needham, MA",
   "North Attleborough, MA",
   "Orleans, MA",
   "Plymouth, MA",
   "Provincetown, MA",
   "Reading, MA",
   "Sudbury, MA",
   "Truro, MA",
   "Wakefield, MA",
   "Waltham, MA",
   "Wareham, MA"
  ],
  "errors": [],
  "table": [
   {
    "source": "Worcester, MA",
    "rows": 6514,
    "first": "2026-03-31",
    "last": "2026-09-19",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Boston, MA",
    "rows": 5613,
    "first": "2026-07-29",
    "last": "2026-09-25",
    "valued_pct": 99.3,
    "freetext_pct": 100.0,
    "coords": true,
    "capped": false
   },
   {
    "source": "Lowell, MA",
    "rows": 3332,
    "first": "2026-01-02",
    "last": "2026-06-30",
    "valued_pct": 94.3,
    "freetext_pct": 99.5,
    "coords": false,
    "capped": false
   },
   {
    "source": "Cambridge, MA",
    "rows": 2910,
    "first": "2026-06-01",
    "last": "2026-09-26",
    "valued_pct": 69.6,
    "freetext_pct": 99.8,
    "coords": true,
    "capped": false
   },
   {
    "source": "Somerville, MA",
    "rows": 2531,
    "first": "2026-04-01",
    "last": "2026-09-24",
    "valued_pct": 76.1,
    "freetext_pct": 100.0,
    "coords": true,
    "capped": false
   },
   {
    "source": "Plymouth, MA",
    "rows": 2468,
    "first": "2026-06-01",
    "last": "2026-08-31",
    "valued_pct": 57.2,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Pittsfield, MA",
    "rows": 2456,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 0.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Attleboro, MA",
    "rows": 2400,
    "first": "2026-04-09",
    "last": "2026-09-27",
    "valued_pct": 0.0,
    "freetext_pct": 0.0,
    "coords": false,
    "capped": true
   },
   {
    "source": "Falmouth, MA",
    "rows": 2400,
    "first": "2026-06-12",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": true
   },
   {
    "source": "Mashpee, MA",
    "rows": 2400,
    "first": "2026-03-31",
    "last": "2026-09-27",
    "valued_pct": 0.0,
    "freetext_pct": 0.0,
    "coords": false,
    "capped": true
   },
   {
    "source": "Taunton, MA",
    "rows": 2158,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 92.9,
    "freetext_pct": 98.2,
    "coords": false,
    "capped": false
   },
   {
    "source": "Braintree, MA",
    "rows": 2043,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 96.2,
    "coords": false,
    "capped": false
   },
   {
    "source": "Chicopee, MA",
    "rows": 1797,
    "first": "2026-03-31",
    "last": "2026-09-26",
    "valued_pct": 0.0,
    "freetext_pct": 0.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Hingham, MA",
    "rows": 1786,
    "first": "2026-03-31",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Bourne, MA",
    "rows": 1776,
    "first": "2025-12-01",
    "last": "2026-08-25",
    "valued_pct": 97.6,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Stoughton, MA",
    "rows": 1752,
    "first": "2026-03-31",
    "last": "2026-09-27",
    "valued_pct": 0.0,
    "freetext_pct": 2.6,
    "coords": false,
    "capped": false
   },
   {
    "source": "Sandwich, MA",
    "rows": 1719,
    "first": "2026-03-31",
    "last": "2026-09-27",
    "valued_pct": 0.0,
    "freetext_pct": 0.6,
    "coords": false,
    "capped": false
   },
   {
    "source": "Norwood, MA",
    "rows": 1630,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Concord, MA",
    "rows": 1534,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 99.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Randolph, MA",
    "rows": 1467,
    "first": "2026-03-31",
    "last": "2026-09-26",
    "valued_pct": 0.0,
    "freetext_pct": 94.8,
    "coords": false,
    "capped": false
   },
   {
    "source": "Milton, MA",
    "rows": 1464,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 98.4,
    "coords": false,
    "capped": false
   },
   {
    "source": "Easton, MA",
    "rows": 1454,
    "first": "2026-03-31",
    "last": "2026-09-27",
    "valued_pct": 0.0,
    "freetext_pct": 0.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Wareham, MA",
    "rows": 1414,
    "first": "2026-02-01",
    "last": "2026-08-27",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Foxborough, MA",
    "rows": 1324,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 97.7,
    "freetext_pct": 1.7,
    "coords": false,
    "capped": false
   },
   {
    "source": "Needham, MA",
    "rows": 1300,
    "first": "2025-07-01",
    "last": "2026-06-30",
    "valued_pct": 99.5,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Bellingham, MA",
    "rows": 1251,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 98.6,
    "coords": false,
    "capped": false
   },
   {
    "source": "Lexington, MA",
    "rows": 1225,
    "first": "2026-06-01",
    "last": "2026-08-31",
    "valued_pct": 75.0,
    "freetext_pct": 92.2,
    "coords": false,
    "capped": false
   },
   {
    "source": "Mansfield, MA",
    "rows": 1203,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 97.8,
    "coords": false,
    "capped": false
   },
   {
    "source": "Ipswich, MA",
    "rows": 1040,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 9.3,
    "coords": false,
    "capped": false
   },
   {
    "source": "North Reading, MA",
    "rows": 1026,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 0.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Fairhaven, MA",
    "rows": 1017,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 1.2,
    "coords": false,
    "capped": false
   },
   {
    "source": "Easthampton, MA",
    "rows": 982,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 95.1,
    "coords": false,
    "capped": false
   },
   {
    "source": "Ludlow, MA",
    "rows": 967,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 0.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Waltham, MA",
    "rows": 944,
    "first": "2026-02-02",
    "last": "2026-07-31",
    "valued_pct": 94.1,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Barnstable, MA",
    "rows": 916,
    "first": "2026-06-01",
    "last": "2026-08-31",
    "valued_pct": 93.4,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Rockland, MA",
    "rows": 856,
    "first": "2026-03-31",
    "last": "2026-09-26",
    "valued_pct": 0.0,
    "freetext_pct": 98.8,
    "coords": false,
    "capped": false
   },
   {
    "source": "Cohasset, MA",
    "rows": 741,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 0.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Rehoboth, MA",
    "rows": 734,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 0.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Great Barrington, MA",
    "rows": 618,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 0.5,
    "coords": false,
    "capped": false
   },
   {
    "source": "Duxbury, MA",
    "rows": 575,
    "first": "2025-12-01",
    "last": "2026-08-31",
    "valued_pct": 100.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Lenox, MA",
    "rows": 547,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 0.2,
    "coords": false,
    "capped": false
   },
   {
    "source": "North Attleborough, MA",
    "rows": 514,
    "first": "2025-12-01",
    "last": "2026-08-31",
    "valued_pct": 97.1,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Wakefield, MA",
    "rows": 513,
    "first": "2026-03-02",
    "last": "2026-08-31",
    "valued_pct": 98.6,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Hanson, MA",
    "rows": 505,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Carlisle, MA",
    "rows": 503,
    "first": "2026-03-31",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 92.8,
    "coords": false,
    "capped": false
   },
   {
    "source": "West Bridgewater, MA",
    "rows": 496,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 97.2,
    "coords": false,
    "capped": false
   },
   {
    "source": "Orleans, MA",
    "rows": 473,
    "first": "2025-12-01",
    "last": "2026-08-31",
    "valued_pct": 70.8,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Hopedale, MA",
    "rows": 453,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 0.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Lee, MA",
    "rows": 428,
    "first": "2026-03-31",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 0.7,
    "coords": false,
    "capped": false
   },
   {
    "source": "Stockbridge, MA",
    "rows": 395,
    "first": "2026-03-31",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 0.5,
    "coords": false,
    "capped": false
   },
   {
    "source": "Amherst, MA",
    "rows": 331,
    "first": "2026-06-01",
    "last": "2026-08-31",
    "valued_pct": 85.2,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Nahant, MA",
    "rows": 327,
    "first": "2026-04-01",
    "last": "2026-09-25",
    "valued_pct": 42.8,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Boylston, MA",
    "rows": 325,
    "first": "2026-03-31",
    "last": "2026-09-24",
    "valued_pct": 20.6,
    "freetext_pct": 89.5,
    "coords": false,
    "capped": false
   },
   {
    "source": "Reading, MA",
    "rows": 313,
    "first": "2026-06-01",
    "last": "2026-08-31",
    "valued_pct": 99.7,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Sudbury, MA",
    "rows": 296,
    "first": "2026-06-01",
    "last": "2026-08-31",
    "valued_pct": 99.7,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Avon, MA",
    "rows": 279,
    "first": "2026-03-31",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 0.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Chatham, MA",
    "rows": 277,
    "first": "2026-06-01",
    "last": "2026-08-31",
    "valued_pct": 99.6,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Provincetown, MA",
    "rows": 226,
    "first": "2026-03-01",
    "last": "2026-08-01",
    "valued_pct": 99.6,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Truro, MA",
    "rows": 223,
    "first": "2026-03-02",
    "last": "2026-08-30",
    "valued_pct": 99.1,
    "freetext_pct": 99.6,
    "coords": false,
    "capped": false
   },
   {
    "source": "Barre, MA",
    "rows": 176,
    "first": "2026-01-08",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Otis, MA",
    "rows": 172,
    "first": "2026-04-03",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "New Marlborough, MA",
    "rows": 154,
    "first": "2026-03-31",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 0.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Colrain, MA",
    "rows": 56,
    "first": "2026-04-02",
    "last": "2026-09-23",
    "valued_pct": 46.4,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Wenham, MA",
    "rows": 34,
    "first": "2026-09-03",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Merrimac, MA",
    "rows": 31,
    "first": "2026-09-08",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Westhampton, MA",
    "rows": 31,
    "first": "2026-08-27",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 96.8,
    "coords": true,
    "capped": false
   },
   {
    "source": "West Newbury, MA",
    "rows": 26,
    "first": "2026-09-10",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Southampton, MA",
    "rows": 24,
    "first": "2026-09-17",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": true,
    "capped": false
   },
   {
    "source": "Hadley, MA",
    "rows": 22,
    "first": "2026-09-22",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": true,
    "capped": false
   },
   {
    "source": "Hamilton, MA",
    "rows": 21,
    "first": "2026-09-16",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Newbury, MA",
    "rows": 21,
    "first": "2026-09-16",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Groveland, MA",
    "rows": 20,
    "first": "2026-09-14",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Georgetown, MA",
    "rows": 17,
    "first": "2026-09-21",
    "last": "2026-09-24",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Granby, MA",
    "rows": 15,
    "first": "2026-09-15",
    "last": "2026-09-22",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": true,
    "capped": false
   },
   {
    "source": "Townsend, MA",
    "rows": 11,
    "first": "2026-09-21",
    "last": "2026-09-25",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   },
   {
    "source": "Sunderland, MA",
    "rows": 8,
    "first": "2026-09-16",
    "last": "2026-09-23",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": true,
    "capped": false
   },
   {
    "source": "Stow, MA",
    "rows": 2,
    "first": "2026-09-22",
    "last": "2026-09-22",
    "valued_pct": 0.0,
    "freetext_pct": 100.0,
    "coords": false,
    "capped": false
   }
  ]
 }
}