<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jorge Garzón</title>
    <description>The latest articles on DEV Community by Jorge Garzón (@satgarzon).</description>
    <link>https://dev.to/satgarzon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4174045%2F03a37fa1-3579-4e8a-9c0c-a7db3edccc5f.png</url>
      <title>DEV Community: Jorge Garzón</title>
      <link>https://dev.to/satgarzon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/satgarzon"/>
    <language>en</language>
    <item>
      <title>Dos años después: una empresa familiar de servicio técnico de lavado de coches con su propio ERP y agentes de IA hechos con Claude Code</title>
      <dc:creator>Jorge Garzón</dc:creator>
      <pubDate>Fri, 09 Oct 2026 18:42:50 +0000</pubDate>
      <link>https://dev.to/satgarzon/dos-anos-despues-una-empresa-familiar-de-servicio-tecnico-de-lavado-de-coches-con-su-propio-erp-y-bch</link>
      <guid>https://dev.to/satgarzon/dos-anos-despues-una-empresa-familiar-de-servicio-tecnico-de-lavado-de-coches-con-su-propio-erp-y-bch</guid>
      <description>&lt;p&gt;Somos una empresa familiar pequeña, de segunda generación. Reparamos y mantenemos equipos de lavado de coches (puentes, túneles, boxes de lanzas) para dos de los grandes fabricantes y para clientes propios. Unos pocos técnicos de campo, una oficina y yo llevándolo. Aquí nadie es programador.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Versión en inglés: &lt;a href="https://dev.to/satgarzon/two-years-in-a-family-car-wash-service-company-running-its-own-erp-and-ai-agents-built-with-claude-89a"&gt;https://dev.to/satgarzon/two-years-in-a-family-car-wash-service-company-running-its-own-erp-and-ai-agents-built-with-claude-89a&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué hemos construido
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Un ERP propio, en producción&lt;/strong&gt;, que sustituye al programa comercial que usamos durante años. Lleva avisos, partes de trabajo desde el móvil de los técnicos, presupuestos, pedidos, facturas de proveedor, banco, variables de nómina y, desde este mes, la facturación electrónica que se está haciendo obligatoria en España. Las facturas van firmadas y encadenadas; una vez emitida, la propia base de datos impide tocarla.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Un sistema de agentes con Claude Code y un servidor MCP.&lt;/strong&gt; Leen el buzón, crean avisos a partir de los correos de los fabricantes, cuadran lo que el fabricante aprueba con nuestros partes, preparan pedidos a proveedores y redactan correos (nunca los envían).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Una biblioteca técnica y un «perito» al que los técnicos pueden preguntar.&lt;/strong&gt; Los manuales y despieces de los fabricantes más nuestro propio historial de averías y arreglos, indexados y enlazados a cada modelo de máquina. Un técnico pregunta desde el móvil «este modelo hace X» y recibe las causas probables, lo que hicimos la última vez en esa misma máquina y la página del manual. Cada respuesta se puede marcar como buena o mala, y las correcciones vuelven a la biblioteca.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aprobación humana por Telegram.&lt;/strong&gt; Todo lo que tiene consecuencias (crear un documento, cambiar un precio, mandar algo) me llega al móvil con dos botones. Cada decisión queda registrada: quién, cuándo y resultado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Un segundo modelo, de otra empresa&lt;/strong&gt;, que revisa lo que hace el primero y avisa cuando no está de acuerdo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Una base de procedimientos escritos&lt;/strong&gt;, unos 1.500, que los agentes tienen que consultar antes de poder escribir nada. Lo obliga la herramienta: sin procedimiento leído, no hay escritura.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modelos locales en una máquina nuestra&lt;/strong&gt; para lo barato y repetitivo: leer y clasificar documentos, los índices de la biblioteca, una primera pasada de revisión de código. El criterio se queda en Claude.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copias de seguridad cuatro veces al día&lt;/strong&gt;, cifradas, en tres sitios, y cada pocas semanas las restauramos en una máquina limpia para comprobar que sirven.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Qué ha funcionado
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Escribir los procedimientos.&lt;/strong&gt; No para la IA, para nosotros; la IA solo hizo que mereciera la pena. Cada vez que algo salió mal se convirtió en una regla con fecha y motivo, y los agentes leen esas reglas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;El bucle de aprobación.&lt;/strong&gt; Temía que fuera un cuello de botella y es lo contrario: reviso veinte decisiones al día desde el móvil en unos minutos y nunca pasa nada que me sorprenda.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Producción y pruebas en copias separadas con bases de datos separadas.&lt;/strong&gt; La única vez que compilamos directamente en producción, un error de sintaxis tiró el sistema un minuto con los técnicos en la calle. Nunca más.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pruebas automáticas del dinero:&lt;/strong&gt; numeración por serie, IVA, redondeo al céntimo, comparadas con el SQL real en cientos de documentos al azar.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Qué no funcionó y qué cambiamos
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Al principio los agentes actuaban y me lo contaban después. Perdimos un día con una tanda de partes «aprobados» con precios equivocados. Ahora nada que toque dinero se mueve sin un clic humano.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Las sesiones largas.&lt;/strong&gt; Lo medimos: una sesión de trabajo releía cientos de miles de tokens en cada paso porque arrastraba toda la conversación. Pasamos a una sesión por tema con una nota de traspaso corta, y el mismo trabajo cuesta una fracción.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dejar que la IA «recuerde» cosas en el chat.&lt;/strong&gt; Si no está escrito en un procedimiento o un fichero, al día siguiente no existe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Los modelos locales fuera de su carril.&lt;/strong&gt; Valen para encargos pequeños y bien especificados; descarrilan con cualquier cosa de más de una página, y darles más contexto los empeora. Los usamos para lo mecánico y nada más.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lo que aún no teníamos resuelto:&lt;/strong&gt; hasta esta semana las pruebas del dinero no se ejecutaban solas antes de cada cambio, y no teníamos pruebas de anulaciones, reintentos ni de la cadena firmada. Las añadimos hace unos días; son nuevas y les falta recorrido.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lecciones para dueños que no programan
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;El ingeniero de sistemas eres tú.&lt;/strong&gt; El modelo escribe; tú decides qué significa «correcto» y tienes que saber ver cuándo se equivoca.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Que la IA lea antes de escribir.&lt;/strong&gt; Procedimientos, documentación por módulo, «qué cambió y por qué». Y que sea obligatorio, no una sugerencia.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separar «proponer» de «hacer».&lt;/strong&gt; Todo lo que toca dinero, clientes o producción pasa por una persona.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copias de seguridad, y restaurarlas.&lt;/strong&gt; Una copia que nunca has restaurado es una esperanza.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cuenta con que el mantenimiento es tuyo.&lt;/strong&gt; Si un cambio rompe algo y diez intentos no lo arreglan, tienes que entender lo suficiente para encontrar el problema.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Una pregunta para vosotros
&lt;/h2&gt;

&lt;p&gt;Los que tenéis lógica de facturación o contabilidad hecha así: ¿cómo la probáis? ¿Tenéis pruebas automáticas de numeración, redondeos y anulaciones, o lo comprobáis a mano? ¿Y cada cuánto restauráis de verdad una copia de seguridad?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Escrito con ayuda del mismo asistente, revisado y corregido por mí.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>spanish</category>
      <category>claude</category>
      <category>erp</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Two years in: a family car-wash service company running its own ERP and AI agents built with Claude Code</title>
      <dc:creator>Jorge Garzón</dc:creator>
      <pubDate>Fri, 09 Oct 2026 18:41:02 +0000</pubDate>
      <link>https://dev.to/satgarzon/two-years-in-a-family-car-wash-service-company-running-its-own-erp-and-ai-agents-built-with-claude-89a</link>
      <guid>https://dev.to/satgarzon/two-years-in-a-family-car-wash-service-company-running-its-own-erp-and-ai-agents-built-with-claude-89a</guid>
      <description>&lt;p&gt;We are a small family business in Spain, second generation. We service and repair car-wash equipment (gantries, tunnels, jet-wash bays) for two of the big manufacturers and for our own customers. A handful of field technicians, one office, and me running it. Nobody here is a programmer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we built
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Our own ERP, in production&lt;/strong&gt;, replacing the commercial package we used for years. It handles service calls, work reports from the technicians' phones, quotes, purchase orders, supplier invoices, bank reconciliation, payroll inputs and, since this month, the electronic invoicing regime that is becoming mandatory in Spain. Invoices are signed and chained; once issued, the database itself refuses to let anyone change them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A set of agents built on Claude Code and an MCP server.&lt;/strong&gt; They read the mailbox, create service calls from manufacturer emails, draft replies, reconcile what the manufacturer approved against our work reports, prepare supplier orders, and prepare (never send) emails.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A technical library and an "expert" the technicians can ask.&lt;/strong&gt; The manufacturers' manuals and parts diagrams, plus our own history of faults and fixes, indexed and linked to each machine model. A technician can ask from the phone "this model does X" and get the likely causes, what we did last time on that same machine, and the page of the manual. Every answer can be marked right or wrong, and the corrections go back into the library.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human approval by Telegram.&lt;/strong&gt; Anything with consequences (creating a document, changing a price, sending something) shows up on my phone with two buttons. Every decision is logged: who, when, result.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A second model, from a different company&lt;/strong&gt;, that reviews what the first one did and flags disagreements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A base of written procedures&lt;/strong&gt;, about 1,500 of them, that the agents must consult before they are allowed to write anything. The tooling enforces it: no procedure read, no write.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local models on our own hardware&lt;/strong&gt; for the cheap, repetitive parts: reading and classifying documents, embeddings for the library, a first pass at reviewing code. Judgement stays with Claude.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backups four times a day&lt;/strong&gt;, encrypted, to three places, and we actually restore them to a clean machine every few weeks to prove they work.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What worked
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Writing the procedures down.&lt;/strong&gt; Not for the AI, for us. The AI just made it worth doing. Every time something went wrong it became a rule with a date and a reason, and the agents read those rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The approval loop.&lt;/strong&gt; I was afraid it would be a bottleneck. It is the opposite: I review twenty decisions a day from the phone in a few minutes, and nothing surprising ever happens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keeping production and testing in separate copies with separate databases.&lt;/strong&gt; The one time we built straight on production, a syntax error took the system down for a minute while technicians were on the road. Never again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tests for the money logic:&lt;/strong&gt; numbering per series, VAT, rounding to the cent, checked against the real SQL on hundreds of random documents.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What did not work, and what we changed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Our first approach let the agents act and tell me afterwards. We lost a day to a batch of work reports that were "approved" with the wrong prices. Now nothing with money moves without a human click.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long sessions.&lt;/strong&gt; We measured it: one working session re-read hundreds of thousands of tokens on every step because it kept the whole conversation. We switched to one session per topic, with a short hand-over note, and the same work now costs a fraction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Letting the AI "remember" things in chat.&lt;/strong&gt; If it is not written in a procedure or a file, it does not exist the next day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local models beyond their lane.&lt;/strong&gt; Fine for small, well-specified jobs; they derail on anything longer than a page, and giving them more context makes them worse, not better. We keep them for the mechanical work, and nothing else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The thing we still have not fixed:&lt;/strong&gt; until this week our money tests did not run automatically before every change, and we had no tests for cancellations, retries or the signed chain. We added them a few days ago; they are brand new and need mileage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lessons for owners who are not programmers
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You are the systems engineer.&lt;/strong&gt; The model writes; you decide what "correct" means, and you have to be able to tell when it is wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make the AI read before it writes.&lt;/strong&gt; Procedures, module docs, "what changed and why". Then make it mandatory, not polite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separate "propose" from "do".&lt;/strong&gt; Everything that touches money, customers or production goes through a human.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Back up, and restore.&lt;/strong&gt; A backup you have never restored is a hope.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expect to be the one maintaining it.&lt;/strong&gt; If a change breaks something and ten prompts do not fix it, you need to understand enough to find the problem.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A question for you
&lt;/h2&gt;

&lt;p&gt;For those of you running invoicing or accounting logic you built this way: how do you test it? Do you have automated tests for numbering, rounding and cancellations, or do you rely on checking by hand? And how often do you actually restore a backup?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written with help from the same assistant, reviewed and edited by me.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>claudecode</category>
      <category>erp</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
