Skip to content

Denis Siavichay · Software Engineer

I build the software a business runs on.

Quoting, inventory, invoicing, production — modeled from the domain up and shipped with the pipeline that keeps it reliable.

Based in Ecuador · remote, UTC−5

This build

static
built
toolchain
Next.js 16.3.8 · Node 24.21.0
rendering
prerendered at build time
languages
en · es

Read from the build itself when the site was compiled. Nothing here is typed by hand.

01What I build

Software for the way a business actually operates.

Four kinds of problems I keep coming back to. Each one points to the work that shows it.

  • Business platforms

    The systems a business runs on every day: quotes, orders, inventory, appointments, cash. Modeled on how the work really happens, with the rules enforced where they can't be skipped.

  • Integrations

    Connecting to what already exists: electronic invoicing with Ecuador's tax authority, an inventory system that can only be read, printers on a shop floor, external services for campaigns.

  • Distributed systems

    Services that talk through events, with traces that follow a request across the queue, and the judgment to merge a service back when the split costs more than it gives.

    Evidence

  • Optimization

    Turning a business objective into a search problem: two-dimensional guillotine cutting that minimizes the material a customer pays for, deterministic and reproducible.

    Evidence

02Selected work

Four systems, four different lessons.

A client's workshop, my own invoicing product, a salon's day-to-day and a municipality's back office. Each case study covers the problem, the decisions and the trade-offs.

Client2025 – present

Maderable

Quoting, cut optimization and production for a board shop

The system of a melamine board shop in Ecuador, from the customer's cut list to dispatch: cut optimization, quoting, customer review, orders, the workshop floor and label printing.

  • Optimizes what the customer pays for, not the placement: the half board is a real bin.
  • Guillotine heuristic search, an exact CP-SAT endgame and a Rust kernel that returns exactly what the Python reference returns.
  • Deterministic by design: search budgets are counted in units of work, not seconds.
  • A live quote becomes an immutable order, and a Windows agent prints its labels on the shop's printers.
Role
Sole engineer, from the domain model to the deploy
Illustrative cut plan · synthetic data
  • FastAPI
  • PostgreSQL
  • OR-Tools CP-SAT
  • Rust
  • React
  • TypeScript
  • Docker Compose
  • Caddy

Own product2022 – 2026

Faclab

Sales, inventory and electronic invoicing for Ecuador

Sales, inventory, purchasing and point of sale with electronic invoicing for Ecuador's tax authority (SRI). My own product, and the project where the architecture went from a monolith to services, and partly back.

  • Django monolith, hexagonal refactor, services, and a signing service merged back when the split proved too fine.
  • Clean Architecture and CQRS in the core, with value objects such as RUC and Money.
  • An event-driven invoice state machine with 1 s / 2 s / 4 s retries and a dead-letter queue.
  • FastAPI
  • SQLAlchemy
  • PostgreSQL
  • Kafka
  • TypeScript

Client2026

Salon management

Appointments, payments and cash for a beauty salon, phone-first

Appointments, clients, services, cash, expenses and photos for a beauty salon, designed for the phone first, with the business rules enforced where they can't be bypassed.

  • Double booking is impossible: a PostgreSQL GiST exclusion constraint rejects it.
  • Prices are frozen in each appointment; payments are append-only and corrections are refunds.
  • Multi-tenancy and a staff roster were built, then removed when the business turned out to be a single salon.
  • FastAPI
  • SQLAlchemy
  • PostgreSQL
  • React
  • TypeScript

In-house2019 – 2021

SIM — Integrated Municipal System

One system for a municipality's back office

Brought together the manual processes and isolated systems of the Municipality of Morona: finance, human resources, property registry, drinking water, cadastre and online procedures, among others.

Software developer and lead of a team of three

  • Django
  • Django REST Framework
  • PostgreSQL
  • Celery
  • Docker
  • GitLab CI

Open source

Django packages published on PyPI.

03Engineering notes

The technical stories behind the decisions.

Short write-ups on what each project taught me, with the trade-offs left in.

  1. Optimize for the invoice, not the layout

    The real problem was never arranging pieces on a board. It was quoting the least material the customer pays for, with determinism as a requirement.

    From · Maderable

  2. From monolith to services — and partly back

    Extracting a service has a cost. The right granularity is discovered, not decided up front, and sometimes it means merging back.

    From · Faclab

  3. Business rules where they can't be bypassed

    A rule that matters lives where no code path can skip it: a database constraint, a frozen price, a payment that can only be appended.

    From · Salon management · Maderable · Faclab

  4. Following a request across Kafka

    Spans per handler, metrics, structured logs and a trace context that survives the queue, so a sale can be followed to its invoice.

    From · Faclab

  5. Deleting the architecture you didn't need

    Complexity is justified by a real reader, not by a hypothetical future. Multi-tenancy was built, and then it was removed.

    From · Salon management

04How I work

From understanding the business to improving what's running.

Six steps, each with an example from a real project.

  1. Understand

    Find the objective the business actually has before writing code.

    The board shop didn't need pieces arranged on a board; it needed the cheapest quote. Half boards are what it sells, so the half board became the bin.

    Example
  2. Model

    Put the rules in the model, at the level where nothing can bypass them.

    In the salon app, a PostgreSQL GiST exclusion constraint makes double booking impossible, and each appointment freezes its price.

  3. Design

    Choose the architecture for the problem in front of you, not for fashion.

    In Faclab, the sale event started carrying all the data the invoice needs, which removed an HTTP callback between services.

    Example
  4. Build

    Make the hard parts verifiable.

    Maderable's Rust kernel must return exactly what the Python reference implementation returns, so the reference stays as the oracle.

    Example
  5. Observe

    Make production legible before something goes wrong.

    Faclab's services emit OpenTelemetry spans per handler and carry the trace context in Kafka headers.

    Example
  6. Improve

    Remove what doesn't pay for itself, including my own work.

    The salon app had multi-tenancy and a staff roster. Both were removed once the business turned out to be one salon, run by its owner alone.

05Experience

Building software since 2013.

Public sector, e-commerce and independent work. Each entry: the problem, what I did and, where it's documented, the result.

  1. – present

    Client projects and my own product

    Software Engineer · Independent

    ProblemEach client needed its operation turned into software: quoting and production for a board shop, appointments and cash for a beauty salon.

    • Design, build and operate each system end to end, from the domain model to the server it runs on.
    • In parallel, Faclab: my own sales and electronic-invoicing product.
    • Python
    • FastAPI
    • PostgreSQL
    • React
    • TypeScript
    • Rust
  2. E-commerce · Mexico, remote

    Software Engineer · Jüsto

    ProblemAn e-commerce platform moving from a Django system to microservices.

    • Built features aimed at the site's conversion.
    • Integrated external services to run promotional campaigns.
    • Took part in the migration to microservices in Python and, mostly, Node.js on AWS, with metrics and monitoring.
    • Python
    • Django
    • Node.js
    • AWS
  3. –

    Public sector · Macas, Ecuador

    Software Developer · team lead · Municipality of Morona

    ProblemThe institution ran on manual processes and a few isolated systems.

    • Led a team of three building SIM, the integrated system that brought those processes together.
    • The system centralized the institution's data and automated repetitive tasks.
    • Django
    • Django REST Framework
    • PostgreSQL
    • Celery
    Projects
  4. –

    Public sector · Macas, Ecuador

    Systems Analyst · Municipality of Morona

    ProblemThe institution needed to control and track its IT equipment and the city's pets.

    • An IT equipment system: registration, status, location and the employee each item is assigned to.
    • A city pet registry to support the enforcement of local regulations.
    • Both were web applications served from the institution's local network.
    • Python
    • Django
    • PostgreSQL
  5. –

    A local business · Macas, Ecuador

    Freelance developer · Independent

    ProblemSales agents needed to record orders during their visits to small stores.

    • Built a responsive web application to record orders in real time.
    • Shaped it with the sales team around how they worked.
    • Java
    • PostgreSQL

Education

  • –

    Master's in Software Engineering and Computer Systems

    Universidad Internacional de La Rioja (UNIR), Spain

  • Systems Engineering

    Escuela Superior Politécnica de Chimborazo (ESPOCH), Ecuador

06Stack

Tools, and where I've used them.

No percentages. Each technology names the projects where it's in use.

Languages

  • Python

    Used in: Maderable · Faclab · Salon management · SIM · Jüsto

  • TypeScript

    Used in: Maderable · Faclab · Salon management · this site

  • Node.js

    Used in: Faclab · Jüsto

  • Rust

    Used in: Maderable

Backend

  • FastAPI

    Used in: Maderable · Faclab · Salon management

  • Django

    Used in: SIM · Jüsto

  • Django REST Framework

    Used in: SIM

  • SQLAlchemy · Alembic

    Used in: Maderable · Faclab · Salon management

  • Fastify

    Used in: Faclab

  • Celery

    Used in: SIM

Data & messaging

  • PostgreSQL

    Used in: Maderable · Faclab · Salon management · SIM

  • Redis

    Used in: Maderable · SIM

  • Kafka

    Used in: Faclab

  • DynamoDB · S3

    Used in: Faclab

Frontend

  • React

    Used in: Maderable · Faclab · Salon management · this site

  • Next.js

    Used in: this site

  • TanStack Query

    Used in: Maderable · Faclab · Salon management

  • Vite

    Used in: Maderable · Faclab · Salon management

  • Tailwind CSS

    Used in: Faclab · this site

Optimization

  • OR-Tools CP-SAT

    Used in: Maderable

  • PyO3

    Used in: Maderable

  • NumPy

    Used in: Maderable

Infrastructure

  • Docker · Compose

    Used in: Maderable · Faclab · Salon management · SIM

  • Caddy

    Used in: Maderable · Salon management

  • GitHub Actions

    Used in: Maderable · Salon management

  • GitLab CI

    Used in: SIM

  • AWS

    Used in: Jüsto

Observability

  • OpenTelemetry

    Used in: Faclab

  • structlog · pino

    Used in: Faclab

Testing

  • pytest

    Used in: Maderable · Faclab · Salon management · SIM

  • Playwright

    Used in: Maderable · Salon management · this site

  • Vitest

    Used in: Maderable · Salon management · this site

07About

Understand the business, then build.

I'm Denis, a software engineer based in Ecuador. I started in 2013 with an ordering app for a local business, then spent six years at the Municipality of Morona, where I went from systems analyst to leading the team that built SIM.

From there I joined Jüsto, an e-commerce company in Mexico, working remotely as it moved to microservices. Today I combine a job with client projects and Faclab, my own product.

The thread through all of it: I want to understand how a business works before I model it, and I stay for what happens after the deploy.

Based in
Ecuador · UTC−5
Languages

Spanish (native)

English

Education
Master's in Software Engineering, UNIR

08Contact

Let's build something useful.

If you have a process that should be software, or a team that needs someone to take a problem all the way to production, write to me.

Email me

dbsiavichay@gmail.com