One canonical association record
Every source reconciles into one stable association identity keyed by DBPR project number first, with exceptions routed to review instead of guessed in the UI.
Blueprint
The rewrite is opinionated on purpose: honest data, canonical records, explicit operations, and a much smaller surface area for accidental complexity.
Principles
These are the design rules behind the rewrite, not a wish list we can ignore later.
Every source reconciles into one stable association identity keyed by DBPR project number first, with exceptions routed to review instead of guessed in the UI.
If we do not have a manager email, we show that we do not have it. Fallback mode is explicit and bounded; the app never fabricates trust-signaling fields.
Ingestion writes raw facts. The app reads from small, purpose-built query models so pages stay simple and business rules live in one place.
Source freshness, failed runs, and audit trails are not hidden admin trivia. They are first-class screens because trust depends on them.
Public registry views stay read-only. Sensitive write paths live behind a thin admin surface with explicit session checks and auditable actions.
Architecture
A small architecture is easier to trust than a sprawling one. Each layer has one job and a few explicit rules.
Ingestion Layer
Domain Layer
Read Models
Interface Layer
Delivery
The app is now structured so these phases can happen in order instead of as overlapping one-off vibes.
Phase 1
Phase 2
Phase 3