Skip to content

Cribado de políticas (Bhutan GNH + NZ LSF + Humphrey) ​

Rubrica publicada del cribado determinista que alimenta recommend_action (server/chat/policy-screen.ts).

Qué hace ​

Puntúa un texto de propuesta (o el pitch de un piloto) contra:

  1. Los 10 ejes del atlas (salud…gobernanza-democrática).
  2. Los capitales intergeneracionales estilo NZ LSF (natural, human, social, financial, physical, cultural).
  3. Una lectura Humphrey de “¿qué se mueve y para quién?”, hoy: tono positive / negative / mixed / neutral por eje, sin inventar cifras.

Reglas ​

  • Matching por límite de palabra (desempleo no coincide con empleo).
  • Keywords por eje: no se infiere el tono de celdas ambientales del país.
  • Tokens de producto (cribado, LatamGPT) no se tratan como geografía (Costa Rica / CRI).
  • human_override_required: true y export_allowed: false siempre: un humano debe autorizar cualquier exportación del cribado.
  • Determinista y aceptable; no es un LLM.

Where it lives ​

  • Code: server/chat/policy-screen.ts (+ tests).
  • Consumed by: the policy_screen field in the recommend_action response.
  • API: POST /api/policy-screen with { "proposal": "…" }. Body capped at 16 KB (413 body_too_large above it); invalid JSON → 400 parse_error; maxDuration 10 s. proposal must be a non-empty string. Any other JSON type (object, array, number, boolean) returns 400 proposal_required: it is not coerced to text ("[object Object]") and screened as if it were a real proposal. The proposal itself is capped at 8,000 characters. Beyond that, the leading 8,000 are screened and the response carries truncated: true, so the caller can tell the verdict covers only part of their document; silently truncating a policy document would change the screening result without telling anyone, which is why the flag exists.
  • Human surface: /governance/cribado (demo with mixed axes + human override before exporting).

Every figure with its source — traceability is the contract.