/judges and /court-houses show unfiltered lists. State, practice area, rating threshold, "has reviews" — these are the standard axes a user expects.
Scope
/judgesfilter pills + URL-driven state:- state (CA / NY / ...) — derived from
court_houses.statevia the belongsTo - practice_area — uses the existing
Judge.practice_areacolumn - rating threshold (>= 4 stars / >= 3 stars / ...) — derived aggregate
- has-reviews / no-reviews — derived boolean
- state (CA / NY / ...) — derived from
/court-housesfilter pills: state, has-reviews- API: extend
JudgeIndexAction/CourtHouseIndexActionto accept these query params and apply filters in the underlying query. - UI: same pill pattern
MyReviewsViewalready uses for status, URL via?state=CA&practice_area=appellate.
Acceptance
- Filter pills shrink the listing in-place without full page reload.
- Active filters persist in the URL for deep-linkable / shareable searches.
- Filter counts ("42 judges in CA") show on the pill labels.
Related
- Best done after the Meilisearch migration so the filters use the filterable-attributes feature instead of SQL
WHERE.