You’re browsing publicly. Statutes and search stay open. A free account adds bookmarks, document upload, side-by-side compare, and forum posting.
Sign up freeIndustry data
Exactly how each figure on the industry data page is calculated: the source table, the SQL logic, inclusion thresholds, and refresh cadence. No AI interpretation is applied at any step in this pipeline. Every number is a direct aggregate of public-record data.
Four of the five metrics on /insights (association counts, SIRS exposure, FHA approval, property values) read from a single Postgres materialized view, association_report_card_metrics. That view joins the organizations table to per-association public-record facts: parcel-derived property metrics, elevator certificates, pool inspections, SIRS filings, HUD FHA project status, building permits, FEMA county risk, and IRS Form 990 filings. The fifth metric, insurance licensee stats, reads from a separate table, insurance_licensees, populated directly from state department-of-insurance bulk downloads.
The five insights_* objects the page queries (defined in migration 20260626140000_insights_aggregate_views.sql) are plain SQL views, not materialized views: they push a GROUP BY into Postgres and recompute on every read. That means the aggregation logic itself runs live against whatever is currently in the underlying tables. The population those views aggregate over is only as fresh as the last refresh of association_report_card_metrics (see the note under each metric below) or the last write to insurance_licensees.
Every metric excludes user-created stub organizations: the base population is restricted to org_type = 'association' with a non-null directory_source that is not 'user_created'. If a state or subtype cohort doesn't appear on the page, it either has zero rows meeting that filter or falls below a metric's minimum group-size threshold (documented per metric below).
insights_association_countscount(*) from association_report_card_metrics, grouped by state and subtype. Rows with a null state or subtype are excluded before grouping.org_type = 'association' that has a non-null directory_source other than 'user_created': every directory-linked association Common Elements has matched to a state registration or public record, not associations a user manually added to the platform.apps/web/vercel.json), matched into the organizations table.association_report_card_metrics. That materialized view is refreshed by the service-role-only function public.refresh_association_report_card(); the codebase does not register a fixed recurring schedule for calling it, so treat the count as updated as new data is ingested and the view is refreshed, not on a fixed clock.insights_sirs_exposureround(100.0 * count(*) FILTER (WHERE has_sirs IS TRUE) / count(*), 1). has_sirs is a boolean computed in association_report_card_metrics as true if at least one row for that organization exists in fl_sirs_projects, and false otherwise. It records whether an association has a Structural Integrity Reserve Study on file at all. It does not distinguish a study that found the structure compliant from one that flagged deficiencies, and it does not confirm the study is current.HAVING count(*) >= 10).fl_sirs_projects.insights_property_valuespercentile_cont(0.5) WITHIN GROUP (ORDER BY just_value_per_unit), i.e. the true statistical median (linear interpolation between the two middle values), not an average. avg_jvpu (the mean) is also computed but not shown on the industry data page.association_property_metrics, from every parcel matched to that association in association_parcels: sum(just_value) / sum(num_res_units)across the association's parcels, where "just value" is the county property appraiser's statutory market-value estimate (not sale price, not assessed/taxable value). If a parcel roll doesn't report residential unit counts, the calculation falls back to averaging just value across condo-unit parcels only. The median shown on the industry data page is the median of this per-association figure across every association in the cohort, not a median of individual parcel values.<25, 25-49, 50-99, 100-199, 200-499, 500+, or unknownif unit count isn't on file.just_value_per_unit are excluded before grouping.association_parcels and matched to associations by address/situs.insights_fha_approvalhas_fha_data counts associations with any HUD FHA project status on file (fha_status IS NOT NULL). pct_fha_approved is round(100.0 * count(*) FILTER (WHERE fha_status = 'Approved') / has_fha_data, 1). The percentage is a share of associations WITH HUD data, not a share of the full cohort. fha_status in the underlying materialized view is the most recent status by status_date when an association has more than one HUD FHA project record.hud_fha_condo_projects and matched to associations.insights_insurance_licenseescount(*) from insurance_licensees, grouped by state and entity_kind (individual, business, or unknown). active_count is the same count filtered to license_status = 'Active'.license_state = 'FL' (the schema supports other states, but only Florida has been ingested as of this writing). Treat this metric as Florida-only until other states appear in the data.licenseesearch.fldfs.com/BulkDownload, public record, no login required)./api/cron/ingest-fl-dfs-licensees, registered in apps/web/vercel.json). Unlike the other four metrics, this table is queried directly. There is no materialized-view refresh step in between, so a successful weekly cron run is reflected on the next page load.The summary stat card reading "< 1%" on the industry data page is a fixed descriptive statement about the Florida condo cohort in insights_fha_approval, not a live-computed value like the other summary cards. To see the live per-state, per-subtype figure this describes, use the FHA table on the compliance tab, which reads pct_fha_approved directly from the view on every load.
What this measures, precisely: the share of condo projects that currently hold an activeapproval status on HUD's FHA-approved condominium list. It is a measure of approved stock, not an application approval rate. HUD's public data does not distinguish projects whose approval expired from projects that never applied, so no denial or application-rate statistic can be derived from it.
Every figure on the industry data page is a direct aggregate (count, percentage, or median) over public-record data. No AI summarization, estimation, or interpretation is applied to any of the five metrics. The numbers are exactly what the SQL documented above returns. No per-association rows or personally identifiable information are exposed through these views; all five are grants to anon because they return only grouped, thresholded aggregates.
If a number on this page looks wrong or you need a definition not covered here, the source of truth is the SQL itself: the view definitions in supabase/migrations/20260626140000_insights_aggregate_views.sql and the materialized view in supabase/migrations/20260608011000_association_report_card.sql.