\begin{figure}[ht] \centering \begin{tikzpicture}[ font=\small, stage/.style={draw=ipsblue, rounded corners=3pt, align=center, inner sep=5pt, minimum height=1.0cm, minimum width=2.15cm, fill=codebg}, arr/.style={-{Latex}, thick, ipsblue} ] \node[stage] (dl) {1. Descarga\\agent Selenium}; \node[stage, right=0.5cm of dl] (cnt) {2. Conteo\\OCR/ONNX}; \node[stage, right=0.5cm of cnt] (ext) {3. Extracci\'on\\LLM + ARQ}; \node[stage, right=0.5cm of ext] (cln) {4. Limpieza\\CSV/reglas}; \draw[arr] (dl) -- (cnt); \draw[arr] (cnt) -- (ext); \draw[arr] (ext) -- (cln); \node[below=0.35cm of dl, font=\footnotesize\itshape, text=ipsgrey, align=center] {orquestado por\\bot-descarga}; \node[below=0.35cm of cnt, font=\footnotesize\itshape, text=ipsgrey, align=center] {filtro}; \node[below=0.35cm of ext, font=\footnotesize\itshape, text=ipsgrey, align=center] {filas PG}; \node[below=0.35cm of cln, font=\footnotesize\itshape, text=ipsgrey, align=center] {lote limpio}; \end{tikzpicture} \caption{Pipeline punta a punta. La descarga la hace el \textbf{agent Selenium} (PC); el servicio \texttt{bot-descarga} solo orquesta jobs/claim/heartbeats.} \label{fig:pipeline-negocio} \end{figure}