Aplicación local-first que acompaña a una empresa desde antes de existir hasta su operación y control: constitución, contabilidad explicable, procesos críticos con segregación de funciones, riesgos, conciliación y auditoría continua. La misma interfaz y el mismo motor en Android, Windows y navegador. Tus datos no salen del dispositivo.
🌐 Abrir la app · 📥 Descargas · 🧭 Empezar aquí · 🎤 Presentación · 📘 Manual de usuario · 📕 Manual en PDF · 📋 Runbook mensual · 🏗️ Arquitectura · 🔗 Fuentes oficiales · 📖 Glosario · 📓 Changelog · 🗺️ Roadmap · 🤝 Contribuir · 🔐 Seguridad
| 🖥️ Vistas | 🧮 Motor | ✅ Pruebas | 📦 Dependencias | 📱 Plataformas | 📄 Manual |
|---|---|---|---|---|---|
| 15 | 1 | 158 | 0 | 3 | HTML + PDF |
Important
Esta aplicación no presenta ni paga nada ante el SII y no es asesoría tributaria. Calcula, controla y guarda evidencia; la presentación ocurre en los sistemas oficiales. Cuando esta aplicación y el SII no coincidan, manda el SII.
Llevar una empresa pequeña en Chile no falla por no saber sumar. Falla por perder el hilo: una factura que nunca se respaldó, un remanente de IVA que no se arrastró, un trámite que se dio por hecho sin guardar el comprobante, un mes que se cerró sin conciliar.
Empresa Operativa Chile acompaña ese hilo. Calcula, explica por qué calcula así, exige evidencia antes de dar algo por cumplido y deja registro de todo lo que cambió.
Desde v1.5, el mismo principio cubre operaciones críticas de bancos, fintech, e-commerce, marketplaces, tesorería, medios de pago, inventarios y activos digitales: nadie puede solicitar, aprobar, ejecutar, registrar, conciliar y auditar la misma operación. Cada etapa exige evidencia.
Empezar aquí — la única pantalla ordenada por tiempo en vez de por función. Catorce etapas desde antes de que la empresa exista, cada una con su decisión, su documento y un botón que abre la ventana donde se hace.
El panel en modo SANDBOX: indicadores del mes, diagnóstico y próximos vencimientos.
| Plataforma | Archivo | Notas | |
|---|---|---|---|
| 🌐 | Navegador | Abrir la aplicación | Instalable como PWA. Funciona sin conexión. |
| 📱 | Android | EmpresaOperativaChile-android.apk |
Android 6+. Hay que permitir orígenes desconocidos. |
| 💻 | Windows | -setup.exe |
Instalador recomendado (NSIS). |
| 💻 | Windows | .msi |
Instalación desatendida o corporativa. |
| 💻 | Windows | -portable.exe |
Sin instalar nada. |
| ⌨️ | Terminal | pnpm cli -- ayuda |
Cálculo y operación desde scripts. |
Note
Los binarios no están firmados con certificado de código: Windows SmartScreen y Android
avisarán la primera vez. Verifica lo que descargues con el SHA256SUMS.txt del release.
¿Tienes que mostrar esto en una clase, un comité o una reunión con un contador? Está hecho: una presentación de 8 diapositivas con letra grande y lo esencial en pantalla, y una pauta del expositor con el guion hablado, el tiempo de cada lámina y qué se ve proyectado. La charla completa dura ≈28 minutos, así que la muestra cabe en media hora dejando margen para preguntas.
| Documento | Abrir | Para qué sirve |
|---|---|---|
| 🖥️ Diapositivas en el navegador | Ver online | Proyectar sin instalar nada |
| 🎞️ Diapositivas (PDF) | PRESENTACION.pdf | Proyectar sin conexión y repartir como material |
| 🧾 Pauta del expositor (PDF) | PAUTA.pdf | Guion, tiempos y qué decir en cada lámina |
| ✍️ Guion editable | docs/presentacion.md | La fuente: edítala y regenera los tres formatos |
Los tres formatos salen del mismo archivo, así que el guion y las láminas no se separan a la segunda
edición. Para regenerarlos: pnpm presentacion. Una comprobación abre los PDF, cuenta sus páginas y
falla si una lámina se desbordó o si las cifras de arriba dejaron de cuadrar con la fuente.
| Superficie | Estado |
|---|---|
| Motor tributario | ✅ IVA, PPM, honorarios, patente municipal, IDPC y asientos explicados |
| Capital societario | ✅ social, suscrito, enterado, por enterar y movimientos, como magnitudes separadas |
| Capital Propio Tributario | ✅ art. 41 y CPT simplificado Pro Pyme, con desglose · 🟡 sin corrección monetaria ni reorganizaciones |
| Patente municipal | ✅ distingue empresa nueva de empresa en funcionamiento, con base legal citada |
| Tasas municipales por comuna | ⚪ ninguna viene inventada — el usuario registra la suya con fuente y fecha |
| Cierre anual | ✅ snapshot inmutable con la versión de las reglas usadas |
| Glosario | ✅ 54 términos, fuente única, sincronía comprobada en CI |
| Manuales dentro de la app | ✅ guía ilustrada y manual completos, leíbles sin conexión desde la pestaña Ayuda |
| Ayuda contextual | ✅ al pasar el cursor sobre cualquier término marcado |
| Atajos de teclado | ✅ 12, con buscador Ctrl+K y ayuda en F1 |
| Remanente de crédito fiscal | ✅ arrastrado entre períodos · 🟡 sin reajuste (declarado como limitación) |
| Borrador F29 | 🟡 IVA, PPM y retenciones — no cubre todos los códigos del formulario |
| Vencimientos | ✅ los tres plazos, con traslado por fin de semana · ⚪ feriados legales no modelados |
| Reglas tributarias | ✅ año 2026 con fuente oficial y fecha de verificación por regla |
| Separación real / sandbox | ✅ almacenes distintos, verificada en pruebas |
| Inmutabilidad del cierre | ✅ ni altas ni bajas ni ediciones; reapertura con motivo obligatorio |
| Bitácora | ✅ append-only, sin operación de borrado ni edición |
| App de Android | ✅ APK con el contenido contado dentro del binario en CI |
| App de Windows | ✅ MSI, NSIS y portable; arranca y se comprueba vivo en CI |
| Web / PWA | ✅ publicada en Pages, instalable y sin conexión |
| Pruebas | ✅ 158 en Ubuntu y Windows, Node 20 y 22 |
| Seguridad | ✅ CodeQL + detección de contabilidad real commiteada + acciones fijadas a SHA |
| Integración con el SII | ⚪ no existe — por diseño, no por falta de tiempo |
| Cifrado de datos locales | ⚪ pendiente (roadmap) |
| Firma de binarios | ⚪ pendiente (roadmap) |
- Se niega a mentir. No marca un trámite como hecho sin evidencia, no toca un período cerrado y no dice "todo en orden" cuando faltan respaldos. El objetivo es detectar el hueco, no tranquilizar.
- Un motor, tres plataformas. No son tres apps parecidas: es una interfaz y un motor. Cuando la web mejora, mejoran las tres.
- Las tasas son datos, no código. Viven en
rules/<año>.json, cada una con su fuente oficial y su fecha de verificación. Pedir un año sin reglas falla en vez de degradar en silencio. - Se verifica el artefacto, no el build. Un APK vacío compila perfectamente; por eso CI lo abre y cuenta lo que lleva dentro.
- Cero dependencias de producción. El motor, la CLI y la interfaz no importan nada de terceros, y CI falla si eso cambia.
- Explica con tus propios números. La academia usa el motor real: si cambia una tasa, la explicación cambia sola.
- La documentación no puede mentir. Glosario, guía y atajos se generan desde el código y CI falla si el documento se desvía. Lo que lees en el repositorio es lo que hace la app.
- No confunde capital con capital. Capital social, capital suscrito, capital enterado, patrimonio contable, Capital Propio Tributario y capital base de patente son seis magnitudes distintas, cada una con su momento, su fuente legal y su evidencia. Hay una prueba que falla si alguna vez coinciden.
- No inventa tasas municipales. El D.L. 3.063 fija un rango; la tasa la elige cada comuna. El repositorio no publica ninguna: mientras el usuario no registre la suya con fuente y fecha, la cifra se muestra marcada como simulación.
Una aplicación de cumplimiento que se marca sola las tareas como hechas da tranquilidad, no cumplimiento. Por eso el sistema distingue seis estados, y sólo llega solo hasta el segundo:
flowchart TB
subgraph REAL["🏢 EMPRESA REAL"]
R1["📇 Ficha, constitución y evidencia"]
R2["🧾 Operaciones reales"]
R3["📖 Bitácora de auditoría"]
end
subgraph SB["🧪 SANDBOX"]
S1["🎭 Empresa ficticia precargada"]
S2["✏️ Operaciones de práctica"]
S3["📖 Su propia bitácora"]
end
REAL -.->|"❌ nunca hay copia automática"| SB
style REAL fill:#3d3020,stroke:#f0a83c,color:#e8edf5
style SB fill:#123f31,stroke:#34d399,color:#e8edf5
Cada entorno tiene su propio almacén. La separación no es una bandera en los datos que alguien pueda olvidar de comprobar: son dos espacios distintos, y el motor recibe uno u otro.
El sandbox llega con dos meses sembrados — justamente para que se vea el remanente viajando de julio a agosto y un gasto con IVA no recuperable quedando fuera del F29.
flowchart TB
CORE["🧮 <b>Núcleo</b><br/>chile-tax-rules · accounting-engine · company-operations<br/><i>ESM puro, sin node:*, sin dependencias</i>"]
UI["🎨 <b>apps/web</b><br/>interfaz única"]
CORE --> UI
UI --> WEB["🌐 Navegador / PWA<br/><small>localStorage</small>"]
UI --> AND["📱 Android<br/><small>Capacitor · WebView</small>"]
UI --> WIN["💻 Windows<br/><small>Tauri 2 · WebView2</small>"]
CORE --> CLI["⌨️ CLI<br/><small>archivos en disco</small>"]
style CORE fill:#1e3a5f,stroke:#4f8cff,color:#e8edf5
style UI fill:#123f31,stroke:#34d399,color:#e8edf5
El build embebe las reglas y los iconos, y falla si algún módulo que viaja al dispositivo
importa node:* — el fallo que dejaría la pantalla en blanco dentro del APK sin ningún error visible.
En Windows, Tauri añade lo único que una WebView no da sola: los datos quedan además como archivos JSON reales en el disco, que puedes copiar y respaldar.
| 🏛️ Crear la empresa | 📅 Operarla cada mes |
|---|---|
flowchart TB
A["📝 Definir la SpA"] --> B["🏛️ Constituir en el RES"]
B --> C["🆔 RUT / e-RUT"]
C --> D["📋 Inicio de Actividades"]
D --> E["🏷️ Actividades y régimen"]
E --> F["📍 Domicilio"]
F --> G["🧾 Facturación electrónica"]
G --> H["🏦 Patente municipal"]
H --> I["💳 Cuenta bancaria"]
I --> J(["✅ HABILITADA<br/>PARA OPERAR"])
style J fill:#123f31,stroke:#34d399,color:#e8edf5
|
flowchart TB
A["🧾 Ventas, compras, gastos"] --> B["📎 Evidencias"]
B --> C["🏦 Conciliación bancaria"]
C --> D["📊 RCV"]
D --> E["💰 IVA + PPM + retenciones"]
E --> F["📋 Borrador F29"]
F --> G["🔍 Comparar con el SII"]
G --> H["📤 Presentar en el portal"]
H --> I["🧷 Guardar comprobante"]
I --> J["🔒 Cerrar período"]
J --> K(["💾 Respaldo"])
style K fill:#123f31,stroke:#34d399,color:#e8edf5
|
Y el ciclo anual, que es donde el capital de constitución deja de ser la respuesta:
flowchart LR
A["📜 Constitución<br/>capital social"] --> B["💰 Capital enterado"]
B --> C["📋 Inicio de actividades"]
C --> D["🏛️ Patente inicial<br/><i>capital propio inicial declarado</i>"]
D --> E["📅 Operaciones del año"]
E --> F["🔒 Cierre anual"]
F --> G["🧮 Capital Propio Tributario"]
G --> H["🏛️ Patente siguiente<br/><i>capital propio del cierre anterior</i>"]
H --> E
style D fill:#3d2f14,stroke:#f0a92c,color:#e8edf5
style H fill:#3d2f14,stroke:#f0a92c,color:#e8edf5
style G fill:#123f31,stroke:#34d399,color:#e8edf5
Las dos cajas naranjas usan bases legales distintas (art. 24, inciso tercero del D.L. 3.063): la primera, el capital propio inicial declarado; la segunda, el capital propio del balance al 31 de diciembre anterior. Por eso la patente del año 2 casi nunca coincide con la del año 1. Detalle en patente municipal.
La rutina completa, con capturas, está en el manual de usuario.
Ninguna tasa está escrita en el código. Viven en packages/chile-tax-rules/rules/<año>.json,
y cada una declara su fuente oficial y la fecha en que se verificó:
"honorarios": {
"retentionRate": 0.1525,
"source": "https://www.sii.cl/preguntas_frecuentes/renta/001_002_5310.htm",
"lastVerified": "2026-08-09",
"note": "Retención sobre boletas de honorarios según la gradualidad de la Ley 21.133."
}Tres reglas de la casa, cada una respaldada por una prueba automatizada:
| Regla | Por qué | |
|---|---|---|
| 1️⃣ | Nunca se reescribe una regla histórica | Un año nuevo es un archivo nuevo: así se puede recalcular un período antiguo y obtener lo que se declaró entonces |
| 2️⃣ | Pedir un año sin reglas falla | Un cálculo plausible con la tasa equivocada es el peor error posible: no se ve y no avisa |
| 3️⃣ | El JSON y el módulo embebido no pueden desincronizarse | Sin esto se podría editar una tasa y publicar un APK que sigue calculando con la anterior |
Detalle en docs/SOURCES-2026.md.
| Afirmación | Cómo comprobarla | |
|---|---|---|
| 🚫 | No hay servidor propio | El servidor local sólo sirve archivos estáticos: server.mjs |
| 📡 | No hay telemetría | Ninguna llamada de red en apps/web/; la CSP declara default-src 'self' |
| 📦 | Cero dependencias de producción | package.json — CI falla si aparece alguna |
| 💾 | Los datos no salen del dispositivo | El almacén es localStorage (+ archivos locales en Windows) |
| 🔒 | El servidor local no queda expuesto | Escucha en 127.0.0.1, no en 0.0.0.0 |
| 🕵️ | No se sube contabilidad real por error | CI busca respaldos, certificados y claves en cada push |
Requiere Node 20+. Nada más para la web y la CLI.
git clone https://github.com/vladimiracunadev-create/empresa-operativa-chile.git
cd empresa-operativa-chile
pnpm start # build + servidor en http://127.0.0.1:4180| Comando | Qué hace |
|---|---|
pnpm build |
Reglas embebidas → iconos → apps/web/dist |
pnpm app |
Sirve la app ya construida |
pnpm test |
158 pruebas con el runner nativo de Node |
pnpm check |
Sincronía de reglas + validación + pruebas |
pnpm cli -- ayuda |
Todos los comandos de la CLI |
pnpm desktop:build |
Instaladores de Windows (necesita Rust) |
pnpm android:prepare |
Deja apps/android/www listo para Capacitor |
pnpm capturas |
Regenera las capturas del manual |
pnpm manual |
Regenera docs/MANUAL.pdf |
Ejemplos de la CLI:
pnpm cli -- f29 --ventas-netas 1000000 --compras-netas 300000 --honorarios 250000
pnpm cli -- registrar --fecha 2026-08-05 --tipo sale --descripcion "Servicio" --neto 800000
pnpm cli -- resumen --periodo 2026-08| Plataforma | Herramienta | Requisitos |
|---|---|---|
| 📱 Android | Capacitor 7 + Gradle | JDK 21, Android SDK |
| 💻 Windows | Tauri 2 + Rust | Rust estable, WebView2 |
Ambos builds corren en CI y verifican el artefacto por dentro: el APK se abre como ZIP y se cuentan las vistas, los módulos del motor y las reglas que lleva; el ejecutable de Windows se arranca y se comprueba que sigue vivo. Un build en verde no prueba que la app esté dentro.
158 pruebas, sin framework externo. Las que importan no comprueban aritmética, sino las reglas que hacen confiable al producto:
- un período cerrado es inmutable en las dos direcciones (no se agrega y no se borra);
- un trámite no puede marcarse hecho sin evidencia;
- el remanente de crédito fiscal viaja correctamente entre meses;
- real y sandbox no se contaminan aunque compartan el mismo origen;
- exportar e importar reproduce el espacio de trabajo completo;
- ningún módulo que viaja al dispositivo importa
node:*; - la versión coincide en
package.json, Tauri, Cargo y la app; - un préstamo del accionista nunca suma capital enterado, aunque entre por el mismo banco;
- el CPT simplificado no se aplica a quien no califica para él;
- la base de la patente cambia entre el año 1 y el año 2 de la misma empresa;
- un ejercicio cerrado no se recalcula, no se cierra dos veces y un respaldo importado no lo pisa;
docs/GLOSSARY.mdno puede desviarse depackages/glossary/index.mjs.- un proceso crítico no puede saltar etapas ni reutilizar una persona en funciones incompatibles;
- una investigación exige independencia, conflicto declarado y evidencia preservada;
- los respaldos v3 conservan controles, riesgos, procesos y denuncias sin romper v1/v2.
El material de aprendizaje está integrado en la propia aplicación (pestaña Academia), donde las explicaciones usan el mismo motor que opera tu empresa — no textos escritos aparte que con el tiempo dejen de coincidir:
- 📚
curriculum/— 17 partes y 70 clases - 🧪
labs/— 16 laboratorios - 📁
cases/— casos integrales - 🎲
data/scenarios/— escenarios sintéticos para la CLI
| Documento | Contenido | |
|---|---|---|
| 🧭 | Empezar aquí · HTML · PDF | Si nunca has creado una empresa y no sabes por dónde partir. 14 etapas ilustradas con diagramas y las pantallas reales: qué decidir, qué documento te queda, cómo sabes que terminaste — y qué NO cubre el sistema |
| 📘 | Manual de usuario · HTML · PDF | 21 capítulos, incluida la operación del módulo de control interno |
| 🛡️ | Control interno, SoD y auditoría | Gobierno, RACI, procesos, controles, riesgo, KRI, whistleblowing y custodia |
| 📋 | Runbook mensual | Qué hacer cada mes, en orden |
| 📆 | Runbook anual | Ciclo anual y Operación Renta |
| 🌳 | Árbol de decisión | Cuándo resolverlo solo y cuándo escalar |
| 📗 | Políticas contables | Criterios del caso guía |
| 📖 | Glosario | 54 términos, generado desde el propio sistema |
| ⌨️ | Atajos de teclado | 12 atajos, sobre todo para la versión de Windows |
| 🎤 | Presentación · Ver online · PDF · Pauta | 8 láminas y guion del expositor para presentar el producto en media hora |
| 💰 | Capital y patrimonio | Las cinco magnitudes que no son sinónimos |
| 🧮 | Capital Propio Tributario | Art. 41 y CPT simplificado Pro Pyme |
| 🏛️ | Patente municipal | Por qué el año 2 no usa el capital de constitución |
| 🏠 | Oficina virtual | Qué cambia y qué no si no tienes oficina física |
| 🔗 | Fuentes oficiales | Verificación de cada tasa y plazo |
| 🏗️ | Arquitectura | Cómo está construido y por qué |
| 🗺️ | Roadmap | Qué viene y qué nunca se hará |
| 📓 | Changelog | Historial de versiones |
Documentación técnica, funcional, arquitectónica y operativa del repositorio, escrita recorriendo el código fuente. Complementa —no reemplaza— los documentos de producto de arriba: cada uno declara cuál es la fuente de verdad de su tema.
| Documento | Contenido | |
|---|---|---|
| 🗂️ | Índice general | Portada, los 19 documentos, convenciones y lo que quedó pendiente de validar |
| 🔭 | Descripción general | Qué es, qué resuelve, qué NO hace — con una sección para lectores no técnicos |
| 🏗️ | Arquitectura | Capas, diagramas y cómo se hace cumplir la regla node:* |
| 🔎 | Referencia técnica | Catálogo de funciones: firma, efectos y riesgo al modificar |
| 💾 | Persistencia | No hay base de datos: cuál es el mecanismo real y el diccionario de datos completo |
| 🔐 | Seguridad | Controles presentes, controles ausentes y superficie real |
| Riesgos y deuda técnica | 22 hallazgos clasificados. Informativo: no se corrigió nada | |
| 📊 | Resumen ejecutivo | Para decisión, sin detalle técnico innecesario |
| 🧑💻 | Guía para nuevos desarrolladores | Itinerario de incorporación de cinco días y primeras tareas |
| 🧾 | Matriz de trazabilidad | De la pantalla al almacenamiento y a la prueba, en una fila |
| 📄 | Todo en PDF | Un PDF por documento más el consolidado |
Los PDF se regeneran con node scripts/build-system-docs.mjs.
Servicio de Impuestos Internos · Registro de Empresas y Sociedades · Inicio de Actividades · Facturación gratuita del SII · Regímenes tributarios · Portal Emprendedor
Este software no es asesoría tributaria ni contable. Automatiza lo repetible, explica lo que hace y está diseñado para detectar cuándo un caso excede las reglas implementadas. Fiscalizaciones, reorganizaciones, operaciones internacionales, remuneraciones complejas o cualquier escenario ambiguo deben escalarse a revisión especializada.
Las reglas para tocar una tasa tributaria están en CONTRIBUTING.md, y las de
seguridad y privacidad en SECURITY.md. En resumen: toda regla nueva llega con
vigencia, fuente oficial, fecha de verificación y una prueba que demuestre el comportamiento.
MIT © Vladimir Acuña










