diff --git a/application/profiles.py b/application/profiles.py
index 714cc29..192181e 100644
--- a/application/profiles.py
+++ b/application/profiles.py
@@ -16,7 +16,11 @@ class Profile(TypedDict, total=False):
DEFAULT_INVOICE_INSTRUCTION = (
- "Extrae los datos de la factura a un JSON, identificando la tabla principal por sus columnas (código, cantidad, valor unitario) para crear un array con la clave fija 'items', y usando las etiquetas literales del documento como claves para todo el resto de la información. No incluyas el campo 'observaciones' en el JSON. Ten especial cuidado en no confundir el número de autorización con el código."
+ "Extrae los datos de la factura a un JSON, identificando la tabla principal por sus columnas (código, cantidad, valor unitario) "
+ "para crear un array con la clave fija 'items', y usando las etiquetas literales del documento como claves para el resto de la información. "
+ "Si el documento muestra una línea o bloque de texto bajo una etiqueta como «Observación:», «Observaciones» o equivalente, "
+ "inclúyelo en el JSON con la misma clave que refleje el documento (respeta mayúsculas, tildes y singular/plural tal como aparezcan). "
+ "Ten especial cuidado en no confundir el número de autorización con el código."
)
diff --git a/application/prompts.py b/application/prompts.py
index 04a810e..c196b41 100644
--- a/application/prompts.py
+++ b/application/prompts.py
@@ -25,7 +25,8 @@ def _build_instructions() -> List[str]:
f"Los únicos tipos de documento válidos para 'documento_forzate' son: {tipos_documento}. NIT no es válido para ese campo.",
"Si entre los valores visibles aparece uno o varios tipos de documento válidos seguidos por su número (por ejemplo: 'CC 123456789' o 'EPT 123456789'), aunque no estén escritos con formato 'clave: valor', y existe el campo solicitado 'documento_forzate', guarda cada valor completo con su sigla exacta.",
"Respeta la sigla exacta del documento encontrado. Ejemplo: si el documento dice 'EPT', devuelve 'EPT 123456789' y no lo conviertas a 'PT'.",
- "Si ves un campo llamado observacion o parecido tambien incluye ese valor en el JSON"
+ "Solo si una ruta de observación, nota o texto aclaratorio figura explícitamente en 'campos_requeridos' (con el nombre exacto indicado), "
+ "extrae el texto completo visible bajo su etiqueta en el documento (p. ej. línea «Observación:» …); no añadas ese campo si no está listado en 'campos_requeridos'.",
]
_REGLAS_NOMENCLATURA = [
diff --git a/web-app/.gitignore b/web-app/.gitignore
deleted file mode 100644
index 5ef6a52..0000000
--- a/web-app/.gitignore
+++ /dev/null
@@ -1,41 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-/.pnp
-.pnp.*
-.yarn/*
-!.yarn/patches
-!.yarn/plugins
-!.yarn/releases
-!.yarn/versions
-
-# testing
-/coverage
-
-# next.js
-/.next/
-/out/
-
-# production
-/build
-
-# misc
-.DS_Store
-*.pem
-
-# debug
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-.pnpm-debug.log*
-
-# env files (can opt-in for committing if needed)
-.env*
-
-# vercel
-.vercel
-
-# typescript
-*.tsbuildinfo
-next-env.d.ts
diff --git a/web-app/AGENTS.md b/web-app/AGENTS.md
deleted file mode 100644
index 8bd0e39..0000000
--- a/web-app/AGENTS.md
+++ /dev/null
@@ -1,5 +0,0 @@
-
-# This is NOT the Next.js you know
-
-This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices.
-
diff --git a/web-app/CLAUDE.md b/web-app/CLAUDE.md
deleted file mode 100644
index 43c994c..0000000
--- a/web-app/CLAUDE.md
+++ /dev/null
@@ -1 +0,0 @@
-@AGENTS.md
diff --git a/web-app/README.md b/web-app/README.md
deleted file mode 100644
index 66bb426..0000000
--- a/web-app/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
-
-## Getting Started
-
-First, run the development server:
-
-```bash
-npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
-```
-
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
-
-You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file.
-
-This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
-
-## Learn More
-
-To learn more about Next.js, take a look at the following resources:
-
-- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
-
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
-
-## Deploy on Vercel
-
-The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
-
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
diff --git a/web-app/eslint.config.mjs b/web-app/eslint.config.mjs
deleted file mode 100644
index f443835..0000000
--- a/web-app/eslint.config.mjs
+++ /dev/null
@@ -1,16 +0,0 @@
-import { defineConfig, globalIgnores } from "eslint/config";
-import nextVitals from "eslint-config-next/core-web-vitals";
-
-const eslintConfig = defineConfig([
- ...nextVitals,
- // Override default ignores of eslint-config-next.
- globalIgnores([
- // Default ignores of eslint-config-next:
- ".next/**",
- "out/**",
- "build/**",
- "next-env.d.ts",
- ]),
-]);
-
-export default eslintConfig;
diff --git a/web-app/next.config.mjs b/web-app/next.config.mjs
deleted file mode 100644
index b108e1a..0000000
--- a/web-app/next.config.mjs
+++ /dev/null
@@ -1,6 +0,0 @@
-/** @type {import('next').NextConfig} */
-const nextConfig = {
- /* config options here */
-};
-
-export default nextConfig;
diff --git a/web-app/postcss.config.mjs b/web-app/postcss.config.mjs
deleted file mode 100644
index 61e3684..0000000
--- a/web-app/postcss.config.mjs
+++ /dev/null
@@ -1,7 +0,0 @@
-const config = {
- plugins: {
- "@tailwindcss/postcss": {},
- },
-};
-
-export default config;
diff --git a/web-app/public/file.svg b/web-app/public/file.svg
deleted file mode 100644
index 004145c..0000000
--- a/web-app/public/file.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/web-app/public/globe.svg b/web-app/public/globe.svg
deleted file mode 100644
index 567f17b..0000000
--- a/web-app/public/globe.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/web-app/public/next.svg b/web-app/public/next.svg
deleted file mode 100644
index 5174b28..0000000
--- a/web-app/public/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/web-app/public/vercel.svg b/web-app/public/vercel.svg
deleted file mode 100644
index 7705396..0000000
--- a/web-app/public/vercel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/web-app/public/window.svg b/web-app/public/window.svg
deleted file mode 100644
index b2b2a44..0000000
--- a/web-app/public/window.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/web-app/src/app/components/AppShell.js b/web-app/src/app/components/AppShell.js
deleted file mode 100644
index 89c1b74..0000000
--- a/web-app/src/app/components/AppShell.js
+++ /dev/null
@@ -1,128 +0,0 @@
-"use client";
-import { useState } from "react";
-import Link from "next/link";
-import { usePathname } from "next/navigation";
-import {
- Database, LayoutDashboard, History, TrendingUp, Settings,
- ChevronLeft, ChevronRight, LogOut, User, Bell
-} from "lucide-react";
-import { clsx } from "clsx";
-import { twMerge } from "tailwind-merge";
-
-function cn(...inputs) {
- return twMerge(clsx(inputs));
-}
-
-const NAV_ITEMS = [
- { href: "/", icon: LayoutDashboard, label: "Dashboard" },
- { href: "/processes", icon: History, label: "Procesos" },
- { href: "/analytics", icon: TrendingUp, label: "Analíticas" },
- { href: "/settings", icon: Settings, label: "Configuración" },
-];
-
-export default function AppShell({ children }) {
- const [collapsed, setCollapsed] = useState(false);
- const pathname = usePathname();
-
- return (
-