Registry firstOps visibleNo invented data

Principles

The non-negotiables

These are the design rules behind the rewrite, not a wish list we can ignore later.

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.

No invented data

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.

Read models at the edge

Ingestion writes raw facts. The app reads from small, purpose-built query models so pages stay simple and business rules live in one place.

Operations are a product surface

Source freshness, failed runs, and audit trails are not hidden admin trivia. They are first-class screens because trust depends on them.

Keep the auth surface small

Public registry views stay read-only. Sensitive write paths live behind a thin admin surface with explicit session checks and auditable actions.

Architecture

The layers

A small architecture is easier to trust than a sprawling one. Each layer has one job and a few explicit rules.

Ingestion Layer

Acquire raw DBPR, Sunbiz, parcel, and upload data with provenance.

  • Never write UI-specific fields here
  • Always store source filename, checksum, and fetched time
  • Treat partial failures as observable, not silent

Domain Layer

Compute association health, reserve posture, and freshness from stored facts.

  • Business rules live in pure helpers
  • No React or request objects in this layer
  • If a rule is debatable, name it and keep it centralized

Read Models

Prepare compact page-ready datasets for dashboard, detail, and operations screens.

  • Each screen gets exactly the fields it needs
  • Fallback mode reuses the same shape as live mode
  • Queries are optimized for clarity before cleverness

Interface Layer

Render an honest public registry and a narrow admin surface.

  • Filters and search are client-side for responsiveness
  • Write actions are isolated behind route handlers
  • Visual emphasis follows risk, freshness, and provenance

Delivery

Execution sequence

The app is now structured so these phases can happen in order instead of as overlapping one-off vibes.

Phase 1

Stabilize the core registry model

  • Canonical association table and filing timeline queries
  • Explicit freshness, reserve, and compliance rule helpers
  • Public dashboard that renders the same way in live and demo mode

Phase 2

Harden ingest and review workflows

  • Per-source runbooks and deterministic ingestion jobs
  • Exception queue for unresolved entity matches
  • Admin import flows that create audit events for every write

Phase 3

Ship decision-grade operator tools

  • Review boards for stale, overdue, and underfunded associations
  • County-level coverage reporting and export pipelines
  • Role-aware views for public, manager, and regulator audiences