Open Due August 31, 2026 0 submitted

Berkeley new-construction pipeline

Every housing and mixed-use project filed, approved, or under construction in Berkeley, California, with unit counts, affordable unit counts, height, current status, and the case number behind each row.

What to deliver

  • 2 minimum · 6 preferred · 42 maximum files
  • How much of each field to fill is spelled out below
  • 220 MB total, at most
  • Every file gets a tamper-proof fingerprint on upload
  • 1+ “documentation” file
  • 1+ “evidence” file

Accepted formats

.MD.PDF.TXT.PNG.JPG.JPEG.CSV.XLSX

What each record needs

case_numbertextRequired

City case or permit number. The identifier the City of Berkeley uses for this project.

Produce it: Exactly as the city writes it, for example ZP2024-0123 or LMSAP2023-0007. One row per case. If a project has both a use permit and a building permit, use the entitlement case number and note the building permit in the notes column.

Output path: case_number

Coverage: 100 minimum populated · 125 preferred · 150 maximum · 100% minimum · 100% target

Flat-file columns: casepermitcase_number

Example: ZP2024-0123

Missing values: Not allowed.

Source: The city record this number comes from.

Buyer review: A case number that does not exist in the city's records fails the row.

project_addresstextRequired

Project address. Street address of the project site.

Produce it: Street number and street name plus 'Berkeley, CA'. Use the primary address the city lists. Do not include owner or applicant names.

Output path: project_address

Coverage: 100 minimum populated · 125 preferred · 150 maximum · 100% minimum · 100% target

Flat-file columns: addresssite_address

Example: 1900 Fourth Street, Berkeley, CA

Missing values: Not allowed.

Source: Cite where the value came from.

Buyer review: Address must match the city record for the case number.

project_typetextRequired

Project type. What kind of project this is.

Produce it: Exactly one of: new_multifamily, new_singlefamily, adu, mixed_use, commercial, institutional, addition_or_alteration, demolition.

Output path: project_type

Coverage: 100 minimum populated · 125 preferred · 150 maximum · 100% minimum · 100% target

Flat-file columns: typeproject_type

Example: new_multifamily

Missing values: Not allowed.

Buyer review: Type must match the project description in the city record.

units_proposedintegerRequired

Dwelling units proposed. Total number of dwelling units in the project as filed.

Produce it: Whole number from the city record. Enter 0 for a project with no residential units. Never estimate from building size.

Output path: units_proposed

Coverage: 100 minimum populated · 125 preferred · 150 maximum · 100% minimum · 100% target

Flat-file columns: unitsunits_proposed

Example: 48

Missing values: Not allowed.

Source: Cite where the value came from.

Buyer review: Re-read the staff report or permit record. A guessed unit count fails the submission.

affordable_unitsintegerOptional

Affordable units. Number of units restricted as below-market-rate.

Produce it: Whole number as stated in the city record. Enter 0 if the project includes none. Leave blank only where the record genuinely does not say.

Output path: affordable_units

Coverage: 60 minimum populated · 100 preferred · 150 maximum · 50% minimum · 80% target

Flat-file columns: bmr_unitsaffordable_units

Example: 6

Missing values: Allowed When the city record does not state an affordable unit count..

Source: Cite where the value came from.

Buyer review: Zero and blank mean different things and must not be swapped.

storiesintegerOptional

Stories proposed. Number of stories in the proposed building.

Produce it: Whole number from the record. Blank if not stated.

Output path: stories

Coverage: 60 minimum populated · 100 preferred · 150 maximum · 50% minimum · 80% target

Flat-file columns: storiesheight_stories

Example: 5

Missing values: Allowed When the record does not state a story count..

Source: Cite where the value came from.

Buyer review: Must match the record.

statustextRequired

Current status. Where the project stands as of the capture date.

Produce it: Exactly one of: filed, under_review, approved, permit_issued, under_construction, completed, withdrawn, denied, expired.

Output path: status

Coverage: 100 minimum populated · 125 preferred · 150 maximum · 100% minimum · 100% target

Flat-file columns: status

Example: approved

Missing values: Not allowed.

Source: Cite where the value came from.

Buyer review: Status must match the city record on the capture date.

filed_datedateRequired

Date filed. Date the application was submitted to the city.

Produce it: ISO 8601, YYYY-MM-DD, as recorded by the city.

Output path: filed_date

Coverage: 100 minimum populated · 125 preferred · 150 maximum · 100% minimum · 100% target

Flat-file columns: filedapplication_date

Example: 2024-03-14

Missing values: Not allowed.

Source: Cite where the value came from.

Buyer review: Must match the city record.

applicant_entitytextOptional

Applicant entity. The company, LLC, or organization that filed the application.

Produce it: Organization names only. If the applicant is a natural person, write 'individual_owner' instead of their name. Never enter a person's name.

Output path: applicant_entity

Coverage: 70 minimum populated · 110 preferred · 150 maximum · 60% minimum · 85% target

Flat-file columns: applicantdeveloper

Example: Fourth Street Partners LLC

Missing values: Allowed When the record names no entity..

Source: The city record naming the applicant.

Buyer review: Any row containing an individual's name fails the submission outright.

notestextOptional

Notes. Anything material the other columns do not carry.

Produce it: Short plain text. Related permit numbers, state law pathway used, or why a status is ambiguous. Blank is fine. No personal data.

Output path: notes

Coverage: 0 minimum populated · 60 preferred · 150 maximum · 0% minimum · 50% target

Flat-file columns: notes

Example: Filed under SB 423 streamlining; related building permit B2025-0455.

Missing values: Allowed When there is nothing material to add..

Buyer review: Notes must not contain personal data.

source_urlurlRequired

Source URL. Public link to the record this row was read from.

Produce it: A working public URL on berkeleyca.gov, an official permit portal, the state legislature site, or another official host. No paywalled or login-gated links.

Output path: source_url

Coverage: 100 minimum populated · 125 preferred · 150 maximum · 100% minimum · 100% target

Flat-file columns: urllinksource

Example: https://berkeleyca.gov/construction-development/land-use-development/zoning-adjustments-board

Missing values: Not allowed.

Source: This column is the source link.

Buyer review: Sampled links must resolve publicly and must contain the claimed information.

captured_atdateRequired

Date captured. The date this row was read from its source.

Produce it: ISO 8601, YYYY-MM-DD. Must be within 60 days of submission.

Output path: captured_at

Coverage: 100 minimum populated · 125 preferred · 150 maximum · 100% minimum · 100% target

Flat-file columns: datecaptured_at

Example: 2026-08-12

Missing values: Not allowed.

Buyer review: Reject rows captured more than 60 days before submission.

View the full field spec
{
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "case_number",
      "project_address",
      "project_type",
      "units_proposed",
      "status",
      "filed_date",
      "source_url",
      "captured_at"
    ],
    "properties": {
      "notes": {
        "type": "string",
        "title": "Notes",
        "examples": [
          "Filed under SB 423 streamlining; related building permit B2025-0455."
        ],
        "maxLength": 500,
        "description": "Anything material the other columns do not carry."
      },
      "status": {
        "type": "string",
        "title": "Current status",
        "examples": [
          "approved"
        ],
        "description": "Where the project stands as of the capture date."
      },
      "stories": {
        "type": "integer",
        "title": "Stories proposed",
        "maximum": 60,
        "minimum": 0,
        "examples": [
          "5"
        ],
        "description": "Number of stories in the proposed building."
      },
      "filed_date": {
        "type": "string",
        "title": "Date filed",
        "format": "date",
        "examples": [
          "2024-03-14"
        ],
        "description": "Date the application was submitted to the city."
      },
      "source_url": {
        "type": "string",
        "title": "Source URL",
        "format": "uri",
        "examples": [
          "https://berkeleyca.gov/construction-development/land-use-development/zoning-adjustments-board"
        ],
        "maxLength": 500,
        "description": "Public link to the record this row was read from."
      },
      "captured_at": {
        "type": "string",
        "title": "Date captured",
        "format": "date",
        "examples": [
          "2026-08-12"
        ],
        "description": "The date this row was read from its source."
      },
      "case_number": {
        "type": "string",
        "title": "City case or permit number",
        "examples": [
          "ZP2024-0123"
        ],
        "maxLength": 50,
        "minLength": 3,
        "description": "The identifier the City of Berkeley uses for this project."
      },
      "project_type": {
        "type": "string",
        "title": "Project type",
        "examples": [
          "new_multifamily"
        ],
        "description": "What kind of project this is."
      },
      "units_proposed": {
        "type": "integer",
        "title": "Dwelling units proposed",
        "maximum": 2000,
        "minimum": 0,
        "examples": [
          "48"
        ],
        "description": "Total number of dwelling units in the project as filed."
      },
      "project_address": {
        "type": "string",
        "title": "Project address",
        "examples": [
          "1900 Fourth Street, Berkeley, CA"
        ],
        "maxLength": 200,
        "minLength": 8,
        "description": "Street address of the project site."
      },
      "affordable_units": {
        "type": "integer",
        "title": "Affordable units",
        "maximum": 2000,
        "minimum": 0,
        "examples": [
          "6"
        ],
        "description": "Number of units restricted as below-market-rate."
      },
      "applicant_entity": {
        "type": "string",
        "title": "Applicant entity",
        "examples": [
          "Fourth Street Partners LLC"
        ],
        "maxLength": 200,
        "description": "The company, LLC, or organization that filed the application."
      }
    },
    "additionalProperties": false
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "minItems": 100
}

Record relationships

No cross-field rules are required.

Files and relationships

documentation

Methodology write-up

One file, plain prose is fine.

1 minimum · 1 preferred · 2 maximum files · .md, .pdf, .txt · 10 MB each
evidence

Permit and staff-report evidence

Must collectively cover at least 15 percent of submitted rows.

1 minimum · 5 preferred · 40 maximum files · .pdf, .png, .jpg, .jpeg, .csv, .xlsx · 25 MB each

Rights and sourcing

  • Must be free to use commercially
  • Whoever delivers it confirms they have the right to share it
AcceptedCC0-1.0CC-BY-4.0ODC-BY-1.0

Additional instructions

There is no single place to see what is actually being built in Berkeley. Permit portals, hearing agendas, and staff reports each hold a piece. We want one table that shows the pipeline: what was filed, how big it is, and where it stands.