diff --git a/src/routes/cases.index.tsx b/src/routes/cases.index.tsx
index 31740a6..b3b194f 100644
--- a/src/routes/cases.index.tsx
+++ b/src/routes/cases.index.tsx
@@ -482,7 +482,14 @@ function CasesList() {
-
{c.case_number}
+
+ {c.case_number}
+ {c.practice_area === "Community Ass'n Law - Collections" && (
+
+ Collections
+
+ )}
+
{c.client?.name ?? "—"} |
diff --git a/supabase/migrations/20260420002740_d9250127-482e-4590-956b-cff8fdbaaba6.sql b/supabase/migrations/20260420002740_d9250127-482e-4590-956b-cff8fdbaaba6.sql
new file mode 100644
index 0000000..16ebaaa
--- /dev/null
+++ b/supabase/migrations/20260420002740_d9250127-482e-4590-956b-cff8fdbaaba6.sql
@@ -0,0 +1,30 @@
+-- Function: ensure a case with the Collections practice area has at least one collection row.
+CREATE OR REPLACE FUNCTION public.tg_ensure_collection_for_collections_case()
+RETURNS trigger
+LANGUAGE plpgsql
+SECURITY DEFINER
+SET search_path = public
+AS $$
+BEGIN
+ IF NEW.practice_area = 'Community Ass''n Law - Collections' THEN
+ IF NOT EXISTS (SELECT 1 FROM public.collections WHERE case_id = NEW.id) THEN
+ INSERT INTO public.collections (case_id, status, opened_at, created_by)
+ VALUES (NEW.id, 'late_notice', COALESCE(NEW.opened_at, CURRENT_DATE), NEW.created_by);
+ END IF;
+ END IF;
+ RETURN NEW;
+END;
+$$;
+
+DROP TRIGGER IF EXISTS trg_ensure_collection_for_collections_case ON public.cases;
+CREATE TRIGGER trg_ensure_collection_for_collections_case
+AFTER INSERT OR UPDATE OF practice_area ON public.cases
+FOR EACH ROW
+EXECUTE FUNCTION public.tg_ensure_collection_for_collections_case();
+
+-- One-time backfill for existing cases.
+INSERT INTO public.collections (case_id, status, opened_at, created_by)
+SELECT c.id, 'late_notice', COALESCE(c.opened_at, CURRENT_DATE), c.created_by
+FROM public.cases c
+WHERE c.practice_area = 'Community Ass''n Law - Collections'
+ AND NOT EXISTS (SELECT 1 FROM public.collections col WHERE col.case_id = c.id);
\ No newline at end of file
|