AYSA

AYSA — Licitaciones de Obras

Licitaciones de obras de agua y saneamiento de AYSA, con estado y financiador.

InfraestructuraLicitaciones de obra

Qué incluye

  • 48 columnas documentadas
  • Formato Parquet y CSV
  • Cobertura ~2020 a presente
  • Actualización diaria
  • Acceso por descarga, API y MCP
  • Schema versionado y trazable a la fuente
Casos de uso
  • ¿Cuáles son las licitaciones AYSA abiertas hoy con mayor presupuesto?
  • ¿Qué empresas adjudican más obras AYSA en los últimos 12 meses?
  • ¿Cuál es el % promedio de bajo presupuesto en obras adjudicadas con financiamiento BID?
  • ¿En qué partido del AMBA se concentra la mayor inversión histórica?
  • ¿Cuántos días tarda en promedio una obra desde publicación hasta adjudicación, por categoría?
Columnas48
ColumnaTipoDescripciónUnidad
id_licitacionStringIdentificador único de la licitación AYSA. PK del SCD2 junto con snapshot_date.
numero_licitacionStringNúmero público de la licitación (formato AYSA).
codigo_internoStringCódigo interno AYSA (cuando aplica).
modalidadStringModalidad de la licitación según AYSA (ej. Pública Nacional, Privada).
objetoStringDescripción del objeto de la licitación (qué obra). Texto libre AYSA.
tipo_licitacionStringTipo de licitación. Único valor v1: 'OBRA'.
codigo_categoriaStringCódigo de categoría AYSA (financiador).
categoriaStringFinanciador de la obra: 'Obras c/Financiamiento AySA' / 'BEI' / 'BID' / 'BIRF' / 'CAF'.
codigo_tipo_obraStringCódigo del tipo de obra (agua / saneamiento / etc.).
codigo_localidadStringCódigo AYSA de la localidad / partido.
localidadStringNombre del partido o CABA. Ver 27 valores válidos en contracts.entities.AYSA_LOCALITY_TO_PROVINCE_ISO.
provincia_isoStringProvincia ISO 3166-2:AR. 'AR-C' (CABA) o 'AR-B' (Buenos Aires). Null cuando localidad='Varias'.
codigo_estadoStringCódigo numérico del estado de la licitación AYSA.
estadoStringEstado: 'Presentación de Ofertas (A licitar)' / 'Apertura Técnica' / 'Apertura Económica' / 'Apertura de Ofertas (En licitación)' / 'Preadjudicada' / 'Adjudicada' / 'Anulada'.
codigo_estado_publicacionStringCódigo del estado de publicación AYSA.
estado_publicacionStringEstado de publicación legible.
moneda_presupuestoStringMoneda del presupuesto oficial: ARS o USD.
presupuestoFloat64Presupuesto oficial AYSA en la moneda indicada.
moneda_adjudicacionStringMoneda del monto adjudicado: ARS o USD.
monto_adjudicadoFloat64Monto adjudicado al ganador en la moneda indicada.
empresa_adjudicatariaStringRazón social del adjudicatario. Texto libre AYSA.
cantidad_beneficiariosInt64Cantidad estimada de beneficiarios de la obra.
fecha_publicacionDatetimeTimestamp de publicación de la licitación.
fecha_limite_consultasDatetimeFecha límite para hacer consultas (B-questions).
fecha_limite_respuestasDatetimeFecha límite para que AYSA responda las consultas.
fecha_limite_ofertasDatetimeFecha límite para presentación de ofertas.
fecha_apertura_ofertasDatetimeFecha de apertura de ofertas (un solo acto).
fecha_apertura_tecnicaDatetimeFecha de apertura técnica (caso 2 sobres).
fecha_apertura_economicaDatetimeFecha de apertura económica (caso 2 sobres).
fecha_preadjudicacionDateFecha de preadjudicación.ISO 8601 YYYY-MM-DD
fecha_adjudicacionDateFecha de adjudicación formal.ISO 8601 YYYY-MM-DD
fecha_anulacionDateFecha de anulación cuando aplica.ISO 8601 YYYY-MM-DD
fecha_creacion_registroDatetimeTimestamp de creación del registro en AYSA.
fecha_modificacion_registroDatetimeTimestamp de última modificación del registro en AYSA.
cantidad_consultasInt64Cantidad total de consultas recibidas.
cantidad_consultas_sin_responderInt64Cantidad de consultas pendientes de respuesta.
email_consultasStringEmail para enviar consultas a AYSA.
texto_avisoStringTexto del aviso público / pliego (cuando AYSA lo expone).
documentosStringJSONB array de documentos asociados: [{file_id, name, size_bytes, url}]. Polars List[Struct].
cantidad_documentosInt64Cantidad de documentos asociados a la licitación.
bytes_totales_documentosInt64Bytes totales sumados de todos los documentos.
dias_hasta_adjudicacionInt32Días entre fecha_publicacion y fecha_adjudicacion (derivado mono-source).
dias_hasta_preadjudicacionInt32Días entre fecha_publicacion y fecha_preadjudicacion.
ratio_adjudicado_presupuestoFloat64Ratio monto_adjudicado / presupuesto (señal de ahorro / sobreprecio en la licitación).
debajo_presupuesto_pctFloat64Fracción por debajo del presupuesto oficial (= 1 - ratio_adjudicado_presupuesto; negativo si la adjudicación lo supera). Fracción decimal: 0.082 = 8,2%.fracción decimal (0.082 = 8,2%)
visible_en_fuenteBooleanTRUE si la licitación sigue visible en el portal AYSA en este snapshot; FALSE si desapareció (puede haberse desactivado).
snapshot_dateDateFecha del snapshot SCD2. PK junto con id_licitacion. Operacional cross-dataset.ISO 8601 YYYY-MM-DD
dataset_versionStringVersión semántica del schema del dataset (para break compat tracking).
Limitaciones conocidas

Pueden invalidar un análisis ingenuo. Documentadas como parte del control de calidad.

AYSA devuelve currency con espacios y símbolos

El campo TipoMoneda en el JSON crudo viene como "$ " para pesos y "U$S " para dólares. El normalizador normalize_aysa_currency() mapea a ISO 4217 (ARS / USD) antes de poblar moneda_presupuesto y moneda_adjudicacion. Si se consume el bronze directamente hay que normalizar antes de cualquier filter por moneda.

Localidad 'Varias' no tiene provincia_iso

28 valores en localidad, pero uno es "Varias" (obra multi-partido). Para esa fila provincia_iso es NULL. Cualquier rollup geográfico que use provincia_iso debe decidir explícitamente si incluye o excluye estos casos (típicamente excluir o aparte).

SCD Type 2: usar MAX(snapshot_date), no la última fila insertada

El dataset es append-on-change. Para obtener el estado vigente de cada licitación, usar la matview v_aysa_lic_obras_latest o MAX(snapshot_date) GROUP BY id_licitacion. Tomar ORDER BY created_at DESC LIMIT N produce vista parcial e incorrecta.

visible_en_fuente = false no implica anulada

AYSA a veces deja de listar licitaciones viejas sin marcarlas como Anuladas. visible_en_fuente se setea a false cuando la licitación desaparece del listing. Para el universo "vivo en fuente" filtrar visible_en_fuente = true además del estado relevante.

empresa_adjudicataria es free-form sin CUIT

AYSA publica la razón social como string libre — sin CUIT, sin normalización. Variantes ortográficas del mismo contratista pueden aparecer ("S.A.", "SA", "Sociedad Anónima"). Para ranking robusto agrupar con cuidado (normalizar mayúsculas, eliminar puntuación) o joinear contra un master CUIT externo.

Columnas en español: idioma de la fuente (WS3)

A diferencia de algunos datasets BCRA/INDEC donde las columnas canonical son en inglés (porque sus fuentes usan términos ambiguos o multilenguaje), AYSA expone su API JSON en español. Por regla WS3 (PR #58) las columnas del dataset respetan el idioma de la fuente. Mapping inglés legacy → español canónico (migración 0048): tender_id → id_licitacion, published_at → fecha_publicacion, status_name → estado, category_name → categoria, granted_amount → monto_adjudicado, winner_company_name → empresa_adjudicataria, etc. Si tu pipeline tiene queries hardcoded con los nombres viejos, hay que actualizarlos.