Skip to main content

Why a field can be empty

What Boardwalk guarantees about the values it returns and what it will not guess.

Boardwalk reads meeting minutes and agendas, and those documents are not uniform. One city's planning commission minutes state the acreage, the unit count and the zoning designation; the next city's record the motion and nothing else. So any extracted attribute can be absent on any given record.

We could fill those gaps. We do not, and this is the reason: the failure mode of a guess is not a slightly wrong number, it is "1,500 acres" for a 1,500 square-foot building, sitting in your CRM, in front of a client. An empty field is something you can handle. A confident wrong one is not.

What it looks like

A record we could not fully establish

bash
curl 'https://api.boardwalkai.com/api/v1/projects/search?states=UT&cities=Provo&limit=1' \
  -H 'Authorization: Bearer bwk_live_YOUR_KEY'

Response · HTTP 200

json
{
  "data": [
    {
      "id": 191774,
      "recordType": "project",
      "projectName": "Foothill Commons",
      "projectHeadline": "Concept plan continued to a future meeting",
      "boardwalkLink": "https://boardwalkai.com/map/#project=191774",
      "mergedFrom": [
        191774
      ],
      "lastUpdated": "2026-06-24T14:08:03Z",
      "meetingDate": "2026-06-23",
      "delivery": {
        "alreadyExported": false,
        "updatedSinceExport": null,
        "lastExportedAt": null,
        "billed": true
      },
      "address": null,
      "city": "Provo",
      "county": "Utah",
      "state": "UT",
      "postalCode": "84606",
      "latitude": 40.2338,
      "longitude": -111.6585,
      "locationPrecision": "city_centroid",
      "locationPrecisionLabel": "City Centroid",
      "isApproximate": true,
      "parcelApn": [],
      "propertyType": "residential",
      "propertyTypeLabel": "Residential",
      "propertySubtype": "multifamily",
      "propertySubtypeLabel": "Multifamily",
      "assetClass": null,
      "assetClassLabel": null,
      "landUses": [
        {
          "type": "residential",
          "typeLabel": "Residential",
          "subtype": "multifamily",
          "subtypeLabel": "Multifamily",
          "assetClass": null,
          "assetClassLabel": null,
          "matchedOn": []
        }
      ],
      "status": "continued",
      "statusLabel": "Continued",
      "statusDetail": "The item was continued; no decision was recorded.",
      "requestType": "concept_plan",
      "requestTypeLabel": "Concept Plan",
      "decisionBody": "Planning Commission",
      "caseNumbers": [],
      "acreage": null,
      "squareFootage": null,
      "unitCount": [],
      "totalUnitCount": null,
      "bedroomCount": null,
      "buildingStories": null,
      "floorCount": null,
      "buildingHeightFeet": null,
      "parkingSpaces": null,
      "existingZoning": null,
      "proposedZoning": null,
      "isRezone": null,
      "constructionType": null,
      "constructionTypeLabel": null,
      "ownerType": null,
      "ownerTypeLabel": null,
      "constructionDescription": null,
      "developerCompany": null,
      "developerCompanyRole": null,
      "developerCompanyRoleLabel": null,
      "contacts": [],
      "contactEnrichment": {
        "status": "not_requested",
        "statusLabel": "Not Requested",
        "attemptedAt": null,
        "contactsFound": 0,
        "source": "registry"
      },
      "companyEnrichment": [],
      "publicOfficials": [],
      "contactSummary": {
        "externalCount": 0,
        "governmentCount": 0,
        "unclassifiedCount": 0,
        "withEmail": 0,
        "withPhone": 0,
        "withLinkedin": 0,
        "enrichedCount": 0,
        "lowConfidenceWithheld": 0,
        "withheldCount": 0,
        "withheldReason": null
      },
      "keyFacts": [],
      "evidence": "The chair continued the item to a date uncertain.",
      "voteSummary": null
    }
  ],
  "meta": {
    "schemaVersion": "2026-08-13",
    "representation": "standard",
    "total": 1,
    "pageCount": 1,
    "hasMore": true,
    "limit": 1,
    "offset": 0,
    "creditsUsed": 1,
    "creditsRemaining": 294,
    "trialTruncation": null,
    "searchMethod": "redisearch",
    "appliedFilters": {
      "states": [
        1
      ],
      "cities": [
        31955
      ]
    },
    "appliedDefaults": [
      "dateRange=last_1_year"
    ],
    "resolvedFrom": {
      "states": [
        {
          "input": "UT",
          "id": 1
        }
      ],
      "cities": [
        {
          "input": "Provo",
          "id": 31955
        }
      ]
    },
    "warnings": [
      {
        "code": "default_date_window_applied",
        "message": "No date filter was given, so the last 12 months of meetings were searched — the same window the product shows. Pass dateRange=all to search everything.",
        "params": [
          "meetingDateFrom"
        ]
      }
    ],
    "matchCount": null,
    "matchCountIsExact": false,
    "matchCountBasis": "not_computed",
    "duplicatesCollapsed": 0,
    "collapseApplied": true,
    "delivery": {
      "mode": "all",
      "notPreviouslyExported": 1,
      "previouslyExported": 0,
      "updatedSinceExport": 0,
      "billed": 1,
      "notRebilled": 0,
      "ledgerApplied": true
    }
  }
}

Record bodies on this page were produced by running Boardwalk's production response mapper over a documented sample project, so the field set, the labels and the empty fields are exactly what the API emits. The project itself is a sample, not a real filing.

assetClass: null and acreage: null on a record that has a property type, a subtype, a city, a decision body and a status. Nothing failed. The minutes said what they said.

What you will notice

You will seeBecause
Some records look emptier than the same project does on the Boardwalk mapThe API holds every served value to the current standard. Older values are not shown.
A filtered search omits records you can find in an unfiltered searchThe record did not carry current evidence for the requested constraint after merge collapse. Missing evidence is a non-match.

How filters stay aligned

Three things follow:

  • A missing value is a non-match, not a wildcard.
  • Different filter parameters remain ANDed after collapse, including state, county and city.
  • The response is the audit surface. Status and measurements used to prove the filter are serialized from the same snapshot.

Some quantities are intentionally not filterable yet. Unknown filter names return 400 without charge rather than relying on a legacy index value that the response cannot let you inspect.

What this is not

  • It is not a coverage statement. Whether we cover your market at all is a different question.
  • It is not a completeness percentage. We do not publish a fill rate per attribute, because we have not measured one we would stand behind.

Ready to make a call?

A free Boardwalk trial includes API access and a sandbox key. Counting, taxonomy, location lookups and the analytics plane cost nothing, so you can evaluate the data before you spend a credit.