Public schema
Every field cityminutes ships, in one schema.
The 4-field wedge plus case metadata, applicant entity resolution, parcel join keys, lineage, and source link-back. Versioned, change-tracked, and stable across every delivery channel — dashboard, API, warehouse drop, CSV.
Conditions of Approval — fields
| Feature | Type | Description |
|---|---|---|
| condition_id | string | Stable per-condition identifier scoped to the case. |
| category | enum | infrastructure | affordable | fee | setback | dedication | tree | mitigation | phasing | other |
| dollar_value | number? | Extracted dollar amount where present (e.g. fees in lieu, traffic impact fees). |
| deadline | date? | Compliance date or trigger event where stated. |
| dependency | string? | Conditional dependency on another action (e.g. "before CO on Phase 1"). |
| raw_text | string | Verbatim condition language from the source document. |
| source_pdf_page | integer | Page reference inside the canonical source PDF. |
| last_updated | timestamp | When the record was last refreshed by the pipeline. |
Community Objections — fields
| Feature | Type | Description |
|---|---|---|
| objection_count | integer | Public comments registered in opposition. |
| support_count | integer | Public comments registered in support. |
| neutral_count | integer | Comments recorded as neutral or informational. |
| top_themes | string[] | Ranked array of themes (traffic, water, noise, density, etc.). |
| named_groups | string[] | Named opposition or support organizations on the record. |
| written_comments_urls | url[] | Links to formal letters submitted into the record. |
| baseline_comparison | number | This hearing's objection count vs jurisdictional rolling baseline. |
Hearing Outcomes — fields
| Feature | Type | Description |
|---|---|---|
| outcome | enum | approved | approved_with_conditions | denied | denied_without_prejudice | continued | withdrawn | tabled | remanded |
| vote_yes | integer | Affirmative vote count. |
| vote_no | integer | Negative vote count. |
| vote_abstain | integer | Abstentions or recusals. |
| dissenters | string[] | Named members on the dissenting side. |
| procedural_notes | string? | Continued-to date, on-consent flag, without-prejudice qualifier, etc. |
| next_hearing_date | date? | Scheduled next-hearing date when continued. |
| effective_date | date? | Date the approval/denial becomes effective. |
Staff Recommendations — fields
| Feature | Type | Description |
|---|---|---|
| staff_action | enum | recommend_approval | recommend_approval_with_conditions | recommend_denial | no_recommendation |
| staff_conditions | condition[] | Same shape as Conditions of Approval; staff-recommended. |
| max_far | number? | Maximum FAR staff will support. |
| max_density | number? | Maximum units/acre staff will support. |
| max_height | number? | Maximum building height (ft) staff will support. |
| min_setbacks | object? | Required minimum setbacks by side (front/rear/side). |
| general_plan_consistency | enum | consistent | inconsistent | partial | not_addressed |
| identified_concerns | string[] | Specific technical concerns flagged in the staff report. |
| full_staff_report_url | url | Direct link to the canonical staff report PDF. |
Case metadata — fields
| Feature | Type | Description |
|---|---|---|
| case_number | string | City clerk canonical case identifier. |
| jurisdiction_id | string | cityminutes canonical jurisdiction ID. |
| parcel_id | string | Regrid parcel ID where available, county APN otherwise. |
| applicant | string | Filing entity, entity-resolved across jurisdictions. |
| parent_entity | string? | Resolved parent company where extractable. |
| architect_of_record | string? | Pulled from staff report where named. |
| civil_engineer | string? | Civil engineering firm of record. |
| land_use_attorney | string? | Land-use counsel where named in the record. |
| use_type | enum | residential | multifamily | commercial | industrial | data_center | mixed_use | other |
| acreage | number | Parcel acreage in the application. |
| unit_count | integer? | Proposed residential unit count where applicable. |
| far | number? | Proposed floor-area ratio. |
| hearing_body | string | Planning commission, zoning board, council, design review, etc. |
| hearing_date | date | Scheduled hearing date. |
| last_updated | timestamp | Pipeline refresh timestamp on this record. |
Lineage and quality
| Feature | Type | Description |
|---|---|---|
| source_url | url | Canonical city clerk PDF or HTML source. |
| source_fetched_at | timestamp | When cityminutes last successfully fetched the source. |
| extractor_version | string | Versioned extractor build that produced the record. |
| qa_status | enum | auto | human_reviewed | corrected |
| correction_history | object[] | Versioned diff trail for any post-publish corrections. |
Stable, versioned, change-tracked
Wire it into Snowflake, BigQuery, or your CRM.
Daily parquet drops, native warehouse shares, REST API with 14-day sandbox, and Salesforce/HubSpot/Slack/Zapier integrations on the same schema.