Ucotron Cortex
Architecture

Domain model

From the organization to the signed report, and what governs each hop.

The map, by permission area

The product at a glance: four permission areas around a single axis — an event produces detections over your portfolio's AOIs, a detection can open an adjustment inside a claim, and the adjustment ends in a signed report verifiable offline. Each area carries the canonical-catalog permissions that govern its endpoints.

Mapa del dominio por área de permiso Cuatro áreas de permiso — cartera, alerting, siniestros y reportes — alrededor del eje central del producto: un evento climático produce detecciones sobre los AOIs de la cartera, una detección puede abrir un peritaje dentro de un siniestro, y el peritaje termina en un reporte firmado verificable offline. El detalle exhaustivo está en el diagrama entidad-relación de abajo. Cartera portfolio:read · portfolio:write PORTFOLIO AOI POLICY CLIENT lo que se monitorea Alerting alerts:read · watch:write WATCH ALERT WEBHOOK cómo te enterás EVENTO DETECCIÓN PERITAJE REPORTE FIRMADO el evento dispara alertas y webhooks la detección cae sobre un AOI de la cartera el peritaje vive dentro de un siniestro y termina en un reporte firmado Siniestros claims:read · claims:write CLAIM PERITAJE el peritaje junta la evidencia satelital del daño Reportes reports:read · reports:sign REPORT MANIFIESTO Ed25519 la firma se verifica offline, sin llamar a la API

The exhaustive reference

The full detail, entity by entity and with its cardinalities:

Diagrama: Modelo de dominioDiagrama entidad-relación exhaustivo del dominio: carteras, AOIs, pólizas, eventos, detecciones, siniestros, peritajes, reportes y alertas, con sus cardinalidades.

tiene

tiene

se ve como

agrupa

contrata

cubre

produce

sobre

sobre

se perita en

mide

se reporta en

firmado con

vigilado por

emite

notifica por

ORGANIZATION

PORTFOLIO

CLIENT

ORG_BRANDING

AOI

POLICY

EVENT

DETECTION

CLAIM

PERITAJE

REPORT

SIGNATURE

WATCH_SUBSCRIPTION

ALERT

WEBHOOK_DELIVERY

Diagrama: Modelo de dominioDiagrama entidad-relación exhaustivo del dominio: carteras, AOIs, pólizas, eventos, detecciones, siniestros, peritajes, reportes y alertas, con sus cardinalidades.

tiene

tiene

se ve como

agrupa

contrata

cubre

produce

sobre

sobre

se perita en

mide

se reporta en

firmado con

vigilado por

emite

notifica por

ORGANIZATION

PORTFOLIO

CLIENT

ORG_BRANDING

AOI

POLICY

EVENT

DETECTION

CLAIM

PERITAJE

REPORT

SIGNATURE

WATCH_SUBSCRIPTION

ALERT

WEBHOOK_DELIVERY

Fuente del diagrama (mermaid)
erDiagram
    ORGANIZATION ||--o{ PORTFOLIO : "tiene"
    ORGANIZATION ||--o{ CLIENT : "tiene"
    ORGANIZATION ||--|| ORG_BRANDING : "se ve como"
    PORTFOLIO ||--o{ AOI : "agrupa"
    CLIENT ||--o{ POLICY : "contrata"
    POLICY }o--o{ AOI : "cubre"
    EVENT ||--o{ DETECTION : "produce"
    AOI ||--o{ DETECTION : "sobre"
    AOI ||--o{ CLAIM : "sobre"
    CLAIM ||--o{ PERITAJE : "se perita en"
    DETECTION ||--o{ PERITAJE : "mide"
    CLAIM ||--o{ REPORT : "se reporta en"
    REPORT ||--o| SIGNATURE : "firmado con"
    AOI ||--o{ WATCH_SUBSCRIPTION : "vigilado por"
    WATCH_SUBSCRIPTION ||--o{ ALERT : "emite"
    ALERT ||--o{ WEBHOOK_DELIVERY : "notifica por"

The four rules the model enforces

Everything hangs off an organization. There is no entity without a tenant. That is what lets a resource from another organization answer 404 instead of 403: the runtime always knows whose thing is being requested.

An adjustment needs a detection. It is not an optional relation: an adjustment without a measurement is not evidence, it is an opinion with formatting. The contract validates it.

An approved report needs a signature. Approved without a signature is not verifiable evidence, and publishing it as if it were is worse than having no signature.

An AOI has a geometry version. Redrawing the plot is a different computation: aoiVersion goes into the content hash of /v1/jobs so an old footprint is not reused with a new geometry.

What governs each area

Each entity is read and written with the permission of its area of the canonical catalog (ADR 0006), not with a global one:

EntityPermissions
Portfolio, AOIportfolio:read / portfolio:write
Clientclients:read / clients:write
Policyunderwriting:read / underwriting:write
Event, Detectionevents:read / events:write
Claim, Peritajeclaims:read / claims:write
Reportreports:read / reports:write
Watch, Alertalerting:read / alerting:write
Webhooknotifications:read / notifications:write
Org brandingadmin:read / admin:write

The copilot and the search re-check the area permission before reading. A single gate would be enough for someone with portfolio permission to read claims through a side window, leaving no trace on any screen.

On this page