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
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
Methodology write-up
One file, plain prose is fine.
1 minimum · 1 preferred · 2 maximum files · .md, .pdf, .txt · 10 MB eachPermit 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 eachRights and sourcing
- Must be free to use commercially
- Whoever delivers it confirms they have the right to share it
CC0-1.0CC-BY-4.0ODC-BY-1.0Additional 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.