Need help building an n8n workflow for GL classification with embeddings

Hey everyone,

I’m trying to build a classification pipeline in n8n that uses text embeddings to categorize General Ledger (GL) descriptions into structured labels (L1/L2 categories).

Here’s what I’m aiming for:

  • I have a training dataset in Excel with fields like Business Unit, G/L Number, G/L text, Main Category L1, and Sub Category L2.

  • I want to embed the training data on text to create a vector store.

  • Then, for new unseen GL lines, I want to generate embeddings, compare them to the training set, and output the most similar entries (kNN-style classification), so that I can get information on how that one classified L1 and L2.

So an example would be GL text: Advise costs; L1: Professional Services; L2: Consulting

So the goal is to make an embedding of advise costs so that when a similar entry, like cost of advisory is linked to the already existing advise costs. Meaning that I can now use this data L1: Professional Services; L2: Consulting and provide a certain confidence score.

I have tried building this, but not much to show for now. The input would be from google spreadsheets.

If I could get some advise on whether this is the right approach to take that would be amazing because I am not sure whether embeddings is the way to go here, or if there are other / better options.

Important to mention is that the G/L Text is really short, often ranging from 2-5 words. So there is not much information to create an embedding of.

Hola :waving_hand::dna::rocket:

Como no has dado muchos detalles sobre tu caso concreto, te dejo una guía paso a paso para crear y “publicar” un flujo de trabajo en n8n desde una instancia local. Así puedes usarlo como base y luego adaptarlo a lo que necesites.

1. Verificar que n8n está funcionando en local

Primero asegúrate de que tu instancia local de n8n está levantada y accesible:

Si usas Docker, normalmente algo como:

http://localhost:5678

Si usas n8n desktop o instalación manual, también deberías entrar por una URL similar en tu navegador.

Si puedes ver el editor de n8n en el navegador, ya estamos listos para crear el flujo.

2. Crear un flujo sencillo de ejemplo

Te propongo un flujo muy básico para que se vea claro el concepto:

Objetivo del ejemplo:

Cuando se llame a una URL (webhook), n8n recibe la petición, procesa los datos y devuelve una respuesta.

Pasos:

Paso 1 – Crear un nuevo workflow

Abre n8n en tu navegador y pulsa en “New Workflow”. Ponle un nombre descriptivo, por ejemplo:

Webhook – Ejemplo desde instancia local.

Paso 2 – Añadir un nodo de disparo (trigger)

En el lienzo, añade un nodo de tipo Webhook.

Configura, por ejemplo:

HTTP Method: POST (o GET, según lo que quieras probar).

Path: algo como /ejemplo-local

Esto generará una URL del estilo:

http://tu-host/webhook/ejemplo-local

(en local suele ser http://localhost:5678/webhook/ejemplo-local).

Paso 3 – Añadir un nodo de procesamiento (opcional pero útil)

Conecta el nodo Webhook a un nodo Function o Set, por ejemplo:

Nodo Set: define un par de campos de prueba, como:

mensaje: “Hola, el webhook ha funcionado correctamente”

origen: “instancia local de n8n”

Paso 4 – Añadir la respuesta al cliente

Si quieres devolver algo a quien llama al webhook, asegúrate de que el nodo Webhook tiene configurada la opción de devolver los datos del siguiente nodo, o usa un nodo Respond to Webhook al final (según la versión y configuración de n8n).

3. Probar el flujo en local

1. Activa el modo “Test” o “Listen” en el nodo Webhook (hay un botón en el propio nodo).

2. Desde otra herramienta (Postman, curl, tu navegador si es GET, etc.) haz una petición a la URL del webhook.

Por ejemplo con curl:

curl -X POST http://localhost:5678/webhook/ejemplo-local -d ‘{“prueba”:true}’

3. Verifica en n8n que el flujo se ejecuta y ves los datos entrar por el nodo Webhook y pasar al resto de nodos.

Si todo va bien, ya tienes un flujo funcional en tu entorno local.

4. “Publicar” el flujo (ponerlo en producción / dejarlo accesible)

En n8n “publicar” suele significar:

Activar el workflow para que esté escuchando permanentemente.

Asegurarse de que la URL de tu instancia sea accesible desde donde la necesites (otra máquina, internet, etc.).

Pasos básicos:

1. En la parte superior derecha del editor, activa el botón de Active.

Así el flujo se ejecutará sin necesitar el modo “Test”.

2. Si estás trabajando solo en local, bastará con usar http://localhost:5678/… desde esa misma máquina.

3. Si quieres exponerlo al exterior (internet u otra red), necesitarás:

Que tu servidor n8n esté en una máquina accesible desde fuera (no solo localhost).

Configurar puertos, firewall o un proxy inverso (NGINX, traefik, etc.).

Opcionalmente, un dominio y HTTPS.

Eso ya depende mucho de tu entorno, pero a nivel de n8n el flujo ya está listo y “publicado” en cuanto lo activas y tu instancia es accesible.

5. Exportar o compartir el flujo

Si quieres mover el flujo de tu entorno local a otro entorno (por ejemplo, un servidor en la nube o n8n.cloud):

Abre el workflow.

Usa la opción de Export (exportar como JSON).

En el otro entorno, usa Import y pega el JSON.

Ajusta credenciales y URLs si es necesario.

6. Si puedes, comparte más detalles

Si nos cuentas un poco más de tu caso:

¿Qué tipo de flujo quieres montar? (ejemplo: recibir datos de un formulario, integrarte con una API, automatizar un email, etc.)

¿Tu n8n está en Docker, instalación manual, desktop app o n8n.cloud?

¿Quieres que solo funcione en tu red local o que sea accesible desde internet?

Con esa información se te podría dar un ejemplo aún más concreto y adaptado a tu caso.

Espero que esto te sirva como base para montar tu flujo desde la instancia local y entender el proceso de creación y “publicación” en n8n :blush:

Si compartes más detalles, con gusto te ayudo a bajarlo a tu escenario concreto.

Si quieres, en el próximo mensaje puedo hacerte otra versión más corta y directa….

Sin más (nevulosa):dna: desde (NexusVita.pro)_ecositema vivo independiente ,creando semillas vivas reales ( no simulación)><(no datos de prueba)/:test_tube:/(∆ØMVO) = :rocket: ^° REAL “….