Every County OS module, the agency it serves, its data, and its capabilities. Each module is the same engine pattern: county-scoped tables (RLS on), a staff page gated to supervisor+, KPIs + analytics, a Manage section with full CRUD, and a branded printable report.
| Module | Route | Agency | Core tables | Highlights |
|---|---|---|---|---|
| Procurement | /procurement |
Procurement / OCP | vendors, solicitations, bids, contracts | Vendor registry, supplier diversity, certified-spend %, AI bid scoring + auto-shortlist |
| Permitting | /dpie |
DPIE | permit_applications, permit_inspections | Pipeline, time-to-decision, inspection schedule, approval rate |
| Economic Development | /econdev |
EconDev | businesses, opportunities | Minority-owned business directory, grant/contract opportunity board |
| Public Works | /dpwt |
DPWT | fleet_vehicles, field_operations | Fleet readiness, field ops, maintenance status |
| Human Resources | /hr |
OHRM | job_postings | Open roles, applicants, time-to-fill |
| Parks & Recreation | /parks |
M-NCPPC | park_assets, park_programs | Asset condition, inspection due, program roster |
| Public Safety / Courts | /safety |
OHS / Courts | safety_cases, scam_alerts | Cases by type/status, court dates, resident scam alerts |
| Public Schools | /schools |
PGCPS-linked | schools | Enrollment, attendance, on-track %, digital access |
| Redevelopment | /redevelopment |
RDA | redevelopment_sites | Site prioritization, vacancies, economic potential by district |
| Predictive Data Feeds | /feeds |
Cross-agency | data_feeds, feed_readings | Trend + forecast + threshold ETA, CSV upload, live ingest API |
| County Assistant | /assistant |
Cross-agency | county_ai_config, county_kb | Named AI ("Ada"), knowledge base, onboarding questionnaire |
Health and Human Services is answered by PolyHealth (the sibling TaTech health platform), linked rather than duplicated.
The core entity of each module (and feeds, and the KB) is fully create/edit/delete-able from the UI via the shared schema-driven RecordEditor. Field definitions live once in web/src/lib/county-os/schemas.ts; adding a table there makes it manageable everywhere. Every enum is a real dropdown, money/date/number/tags have proper inputs, labels are EN/ES.
lib/<mod>/data.ts read model (KPIs + lists, service-role, county-scoped).app/[locale]/<mod>/page.tsx (requireStaff supervisor, StaffBar, ReportBar, Stat/BarList/Panel/Table from components/county-os/module-ui.tsx).lib/county-os/schemas.ts and drop in <RecordEditor>./dashboard + EN/ES strings.