Backend Python Engineer · Lima, Perú · Open to Remote

Luis
Gonzalez

Building reliable, high-performance backend systems in production

Python Django · DRF FastAPI Celery · Redis PostgreSQL Docker GitHub Actions 2+ yrs production

Luis
Gonzalez

Backend Python Engineer

Lima, Perú · [email protected]

2+
Yrs production
170×
Perf. gain
100%
Test coverage
60+
Tests written

I'm a Backend Python Engineer with 2+ years of professional experience across healthcare and enterprise systems — currently at Fiberlux, where I work on Odoo development and leading a full ERP migration from Odoo v13 to a Django-based microservices architecture.

My focus is on building scalable, maintainable architectures. I enjoy tackling performance bottlenecks head-on — profiling with cProfile, tuning queries with EXPLAIN ANALYZE, and applying design patterns (Singleton, Strategy, OCP) to turn monolithic code into modular, extensible systems.

At Clínica Santa Isabel, I built core healthcare systems including a Payroll module and an Electronic Health Records system using Django and FastAPI. I care deeply about test coverage, observability, and CI/CD practices that keep systems reliable in production.

Currently deepening expertise in microservices architecture and AWS fundamentals. Active contributor to python-docs-es, the official Spanish translation of Python documentation.

Languages: Spanish (Native) · English B2 (EFSet Certified)  ·  Open to: Remote backend roles, Python infrastructure collaboration, mentorship.

Experience

Apr 2, 2024 – Present · Fiberlux · Full-time · Lima, Perú

Backend Developer & Systems Analyst

Backend Engineering · Odoo · Django · Performance & Architecture

  • Built a Django-based Electronic Invoicing Engine replacing a slow Odoo process — delivering ~170× throughput improvement (from ~2 min/invoice to 50 invoices in 35s) using async workers, SUNAT/Nubefact API integration, PDF+QR generation, and automatic email dispatch.
  • Re-architected Five9 SFTP sync module from synchronous to multi-threaded async design, eliminating company-wide blocking during data loads and achieving 30% reduction in production storage via configurable batch sanitization.
  • Delivered 80% performance improvement on critical Odoo invoicing workflows (60s → 8–15s) via PostgreSQL indexing, advanced profiling, and async worker queue tuning.
  • Designed Multi-Executive Governance (EV) engine extending Odoo's ir.rule security framework — eliminated 100% of cross-team AccessError blocks, reducing access resolution from 2–4 hours to 0ms.
  • Consolidated 6 fragmented external APIs into 2 major endpoints applying Singleton and Strategy design patterns, drastically reducing integration complexity.
  • Leading phased Odoo v13 → Django migration: bridged first 5 modules via flat-table intermediate layer, extracted 3 critical services to standalone Django microservices, resolved production deadlocks via worker/memory tuning.
  • Achieved 100% test coverage on the base Django API repository; established SOLID principles and unit testing policy as architectural standards for the new ERP.
  • Built B2B Lead Generation agent using Python/BeautifulSoup/Pandas — scraping, RUC validation, sector classification, and automated data enrichment pipeline for the commercial team.
  • Mentored 3 programming interns (Andy, Abigail, Fernanda) on backend architecture, design patterns, and testing practices.
~170× Invoice Throughput SUNAT API · e-Invoicing Async/Sync Fallback Odoo v13→Django Python Threading SFTP · Fabric PostgreSQL · B-Tree Index 30% Storage Saved Design Patterns
Dec 2023 – Mar 2025 · 1 yr 4 mos · Clínica Santa Isabel S.A.C. · On-site · Lima, Perú

Backend Developer & Systems Analyst

Full-time · ERP & Healthcare Systems · Django · FastAPI · Docker

ISIS_CSI — Payroll & HR System Reengineering

  • Refactored and improved calculation engines for Gratificaciones, CTS, Vacaciones and Liquidaciones — ensuring full compliance with Peruvian labor regulations (normativa laboral peruana).
  • Designed and implemented the annual profit-sharing (utilidades) calculation process integrating Pandas for high-volume salary and worked-days data — reducing processing time and eliminating manual errors.
  • Identified bottlenecks in complex payroll queries; applied strategic PostgreSQL indexes that significantly improved mass report generation performance.
  • Refactored the biometric time-tracking and shift management system for clinical staff (physicians and nurses), handling the full complexity of rotating shifts and on-call schedules.
  • Automated attendance data extraction and reporting for SUSALUD / SETIIPRES regulatory compliance (TuaSusalud), guaranteeing accurate declarations to Peru's healthcare supervisory bodies.

Hospital Management Web Ecosystem

  • Led creation and standardization of electronic clinical documents for Hospitalización, Emergencias, Quirófano, and Neonatología — fully replacing paper-based workflows with dynamic digital forms.
  • Built backend services in FastAPI within a microservices architecture using Docker, ensuring high-speed response for critical clinical operations and ~1,000 new records per day.
  • Standardized data capture across all clinical forms to ensure consistency for downstream clinical and administrative analytics.
Python · Django FastAPI · Microservices Docker PostgreSQL · Indexing Pandas Payroll · Labor Law SUSALUD / SETIIPRES EHR · ~1k records/day Angular (collab)
Previous · Lima, Perú

Mi Beatriz S.A.C.

Help Desk & Logistics Operations

  • Real-time satellite tracking of cargo transport units for high-value merchandise.
  • Created daily tracking reports and coordinated operational support for drivers.
Venezuela

ETC Vicente Sucre y Urbaneja

Computer Science Teacher

  • Taught programming languages, databases, systems development, and software security.

Education

Universidad de Oriente

2004 – 2014 · Venezuela

B.Sc. in Computer Science

Algorithms, data structures, software engineering, databases, computer networks, and mathematical modeling. Strong foundation for system design and performance analysis.

EFSet English Certificate

Certified

English B2 — Upper Intermediate

Comfortable in English-speaking teams, reading technical docs, participating in code reviews, and written/verbal communication in international environments.

Projects

🧵

Background Task Processor

Django · Celery · Redis

Async file processing (CSV/Excel) with Celery and Redis. Decouples requests from heavy jobs, with status dashboard for upload history and task tracking. Production-style retry patterns.

DjangoCelery RedisPandas
🏥

Hospital Records System

FastAPI · ~1k records/day

Medical data management backend handling ~1,000 new records/day. Secure JWT access control, structured data workflows, and Jinja2 UI layer.

FastAPIDocker PostgreSQLJWT
💸

Automated Payroll System

Django · Pandas · NumPy

Full automation of complex payroll: allowances, deductions, tax processing. Eliminated manual errors and dramatically improved HR processing efficiency.

DjangoPandas NumPyPostgreSQL
📧

Daily English Phrases Mailer

Flask · Full-Stack · Live in Production

Automated daily email delivery with multi-role accounts (free/premium), email confirmation, admin dashboard, retries, and cron scheduling. Deployed to production.

FlaskMySQL SMTPBootstrap
🧪

Pytest Learning Lab

Advanced Testing · Living Knowledge Base

Deep-dive into professional testing: reusable fixtures, parametrized tests, mocking of HTTP/email services. Modern uv-based environment.

PytestMocking Fixturesuv

Case Studies

🔐

Multi-Executive Governance & Security

Odoo · Security Framework · Fiberlux · 2024–2025
View Case Study

The Problem

Odoo's standard security model restricts CRM and Sales document ownership to a single Salesperson field. At Fiberlux, multiple executives — Postventa, Fidelización, and others — needed to operate on the same customer account simultaneously.

The result: critical AccessError blocks on every cross-team operation, invoicing bottlenecks, and manual admin intervention required every 2–4 hours to restore access.

Architectural Solution

Designed a Linked Executives (EV) governance engine that extends Odoo's security framework via ir.rule inheritance and dynamic relational logic — without forking the core.

  • Dynamic Security Bypass: Re-architected Personal Orders and Personal Order Lines base rules using dot-notation relational paths, enabling safe CRUD operations for secondary executives.
  • Context-Aware Approval Dispatch: Built a dispatcher inside create_level_ids that inspects the operating uid and routes approvals to the correct team category — bypassing the account owner's commercial hierarchy when the creator is an EV.
  • ORM Integrity Fix: Resolved unlink AccessError on order lines by bridging the relational domain: order_id.partner_id.linked_executive_ids.user_id — forcing an implicit JOIN through the contacts and EV tables at query time.
  • Auto-follower Integration: Wired EVs into Odoo's messaging engine as automatic Followers, guaranteeing full lifecycle visibility without manual subscriptions.

Key Engineering Decisions

  • External ID Override: Instead of adding parallel rules (which stack with AND logic and amplify blocking), overwrote Odoo's native sale.sale_order_personal_rule external ID — injecting EV logic directly into the ORM security core, ensuring forward-compatibility with future Odoo upgrades.
  • Reverse Polish Notation Domain: Implemented a 4-condition domain in a single DB operation to evaluate access eligibility across 100k+ record tables with no measurable query overhead.
  • Strategy Pattern on Approvals: The dispatch logic isolates the "is this user an EV?" check from the approval routing logic — making the system extensible to new executive roles without modifying existing flows.
  • Dual Audit Trail: Every transaction records both account owner and operating executive independently, satisfying ISO/TIC compliance requirements for full traceability.

Before vs. After

Dimension Legacy (Standard Odoo) EV Model (Implemented)
Ownership Single salesperson Owner + N linked executives
Access Control Hard block via ir.rule Dynamic access via relational domain
Approval Routing Linear → always to account owner's team Branched → routes by creator's actual role
Visibility Manual follower subscription Automatic on EV assignment
Access Resolution 2–4 hours (manual by admin) 0 ms (fully automated)
Audit Trail Salesperson only Owner + executor logged independently

Impact

100% Access errors eliminated
0 ms Access resolution time
N roles Multi-executive scalability
ISO/TIC Full audit compliance
Python · Odoo Framework ir.rule · Record Rules PostgreSQL Domain Force XML Inheritance ACL · Security Framework Strategy Pattern ORM Internals
🧾

Electronic Invoicing Engine

Django · SUNAT / Nubefact API · Fiberlux · 2024–2025
View Case Study

The Problem

Fiberlux's invoicing workflow ran entirely inside Odoo — generating a single electronic invoice took ~2 minutes, with no async support and brittle handling of complex cases: credit sales, detracciones, USD/PEN multi-currency, and SUNAT delivery retries.

During billing peaks, the process saturated Odoo workers and blocked the entire ERP, creating SLA risk and manual intervention overhead for the operations team.

Architectural Solution

Built a standalone Django-based invoicing engine that replaces Odoo's invoicing core with a high-throughput, async-first pipeline integrated with the Nubefact (SUNAT) API.

  • Async/Sync Dual Mode: Primary path uses async SUNAT submission with automatic synchronous fallback — guaranteeing delivery under API instability without manual retries.
  • Concurrent Worker Pool: 10 parallel workers process batches simultaneously — enabling 50 invoices with embedded QR codes in ~35 seconds.
  • Validation Engine V2: Full business rule coverage for detracciones, exportaciones, venta al crédito, IGV handling, and comprobantes in USD/PEN per SUNAT normativa.
  • PDF + QR Generation: Transforms SUNAT XML responses into signed PDFs with embedded QR codes, automatically dispatched to customer + billing team via email.
  • Retry & Audit Trail: Exponential backoff with configurable attempts; every state transition (pending → sent → acknowledged → failed) recorded atomically for compliance traceability.
  • 100% Test Coverage: Full unit + integration test suite covering happy paths, API failures, retry exhaustion, and multi-currency edge cases before production deployment.

Before vs. After

DimensionLegacy (Odoo)Django Engine
Throughput1 invoice / ~2 min50 invoices / 35s (~170× faster)
ConcurrencySingle synchronous thread10 parallel async workers
Failure HandlingManual intervention requiredAuto-retry with exponential backoff
Multi-currencyLimited / error-proneFull USD/PEN + IGV coverage
ERP ImpactSaturated Odoo workers during peaksFully decoupled — zero ERP contention
Test CoverageNone100% (unit + integration)

Impact

~170×Throughput gain
35s50 invoices w/ QR
100%Test coverage
0Manual retries
Python · Django REST Framework Nubefact / SUNAT API Async Workers PDF + QR Generation PostgreSQL Pytest · 100% Coverage Docker
📡

High-Availability Sync Architecture

Odoo 13 · Five9 SFTP · Python Threading · Fiberlux · 2024
View Case Study

The Problem

Fiberlux's custom Odoo module synced telephony data (call recordings, transcripts, quality reports) from Five9's SFTP server into the ERP. The original implementation was fully synchronous — during large data loads, it blocked Odoo's worker processes company-wide, freezing CRM and invoicing operations simultaneously.

Additional issues: data inconsistencies between Five9 and Odoo, growing storage costs from unmanaged file accumulation, and fragile SFTP connectivity with no retry logic.

Architectural Solution

Re-engineered the entire sync module with a multi-threaded async architecture — decoupling heavy I/O from Odoo's request cycle entirely.

  • Decoupled Threading: Migrated SFTP business logic to independent Python threads — achieving zero perceived latency for end users during mass synchronizations.
  • Concurrency Control: Indexed boolean flags in PostgreSQL manage thread state and prevent race conditions across concurrent sync workers.
  • SQL Optimization: B-Tree indexes on Many2one foreign keys + PostgreSQL views reduced query cost on 40k+ record tables for high-performance reporting.
  • Batch Sanitization: Configurable days_to_sanitize parameter with batch processing — auto-purges stale files on schedule, achieving 30% storage reduction.
  • Resilient SFTP Client: Re-engineered SFTP client using Fabric (replacing Paramiko) with hierarchical exception handling and automatic connection retry — handles network instability without operator intervention.
  • Memory-Efficient Batch Governor: Implemented a configurable batch-size controller (e.g., 1,000 records) that terminates remote scanning immediately upon reaching the limit, preventing Odoo's RAM from hitting soft-limit thresholds during massive historical migrations.
  • Forward-compatible Design: Architecture sized for projected 2026 data growth, with batch and thread scaling built in from the ground up.

Before vs. After

DimensionLegacy (Sync)Async Architecture
ERP ImpactCompany-wide Odoo freeze during syncZero perceived latency — fully decoupled
Data ConsistencyInconsistencies between Five9 and Odoo100% record-level consistency guaranteed
StorageUnbounded file accumulation30% reduction via auto-batch sanitization
Query PerformanceSlow scans on 40k+ record tablesB-Tree indexed, view-optimized queries
SFTP ResilienceHard failures on network issuesAuto-retry with hierarchical error handling
RAM StabilityRisk of OOM on 100k+ filesFlat memory footprint via batch-limit governor
Race ConditionsPossible data corruption under loadEliminated via indexed thread-state flags

Impact

0msERP latency during sync
30%Storage reduction
100%Data consistency
40k+Records optimized
Python · Odoo v13 SFTP · Fabric Python Threading PostgreSQL · B-Tree Index Concurrency Control Linux · Server Management
🏗️

ERP Migration — Odoo v13 → Django

Odoo v13 · Django Microservices · Docker · Fiberlux · 2024–Present
View Case Study

The Challenge

Fiberlux operates a critical production ERP on Odoo v13 managing mass invoicing, CRM, telephony integration, and customer contracts — all with heavily customized modules built over years.

A hard v17 upgrade proved infeasible: custom modules rely on deprecated APIs, data volume is large, and any single downtime window would halt billing operations. A v17 migration was initially scoped but ultimately abandoned in favor of a full Django rewrite — giving full control over performance, testability, and architecture without Odoo ORM constraints.

Migration Strategy

Designed a phased extraction architecture — instead of a risky big-bang rewrite, critical business logic is progressively migrated to standalone Django services, reducing Odoo coupling with each iteration.

  • Phase 1 — Stabilize v13: Resolved production deadlocks and RAM saturation by tuning Odoo worker count, memory limits, and PostgreSQL connection pooling. Deployed a "Testodoo" environment for safe mass validation before any production change.
  • Phase 2 — Flat-table Bridge: Migrated the first 5 modules using intermediate flat tables as a compatibility layer — decoupling business logic from Odoo's ORM while maintaining data continuity during the transition period.
  • Phase 3 — Extract to Django: Invoicing engine, Five9 sync, and EV governance fully migrated to standalone Django services with clean REST API boundaries — entirely decoupled from Odoo's core.
  • Phase 4 — Containerization: Dockerizing v13 production base with environment parity between dev, staging, and production as the foundation for the full Django target.
  • Current Status: Project advanced but currently paused — foundation, architecture standards, and critical module extractions are complete. Resumption planned with frontend collaboration (Angular) already underway by a colleague.

Key Technical Decisions

DecisionRationale
Django over Odoo v17 as targetFull control over performance, testability, and API design — eliminates ORM constraints and framework lock-in entirely
Flat-table intermediate layerEnables incremental module migration without disrupting live operations — data continuity preserved throughout
Phased extraction vs. big-bang rewriteEliminates single-point downtime risk; each extracted service is independently deployable and testable
Testodoo validation environmentEnables mass UAT of production data before any change reaches live systems
100% coverage policy from day onePrevents regression debt accumulating as new Django services replace legacy Odoo modules

Status & Impact

0Production deadlocks
5Modules bridged
3Services extracted
100%Coverage standard
Python · Odoo v13 Django REST Framework Docker · Docker Compose PostgreSQL · Tuning Flat-table Bridge Pattern SOLID · Design Patterns Microservices Architecture

Performance Profiling & Query Optimization

cProfile · SnakeViz · N+1 Queries · PostgreSQL Indexes · Fiberlux · 2024
View Case Study

The Problem

Several critical Odoo and Django workflows exhibited unexplained latency under production load — invoicing generation, CRM report queries, and data sync operations were degrading progressively as data volume grew.

Without systematic profiling, bottleneck identification was guesswork: developers were optimizing the wrong paths while true hotspots remained undetected. The system had no baseline performance data and no methodology for continuous optimization.

Methodology & Solution

Implemented a systematic profiling pipeline using cProfile + SnakeViz to identify true hotspots with data — eliminating guesswork from optimization decisions.

  • cProfile Instrumentation: Wrapped critical code paths with cProfile.Profile() context managers, capturing full call-stack timing data including cumulative and per-call execution times across all function invocations.
  • SnakeViz Visualization: Rendered flame graphs and icicle charts to visually identify the highest-cost call chains — making it immediately clear which functions dominated execution time.
  • N+1 Query Detection: Profiling revealed multiple N+1 patterns where ORM loops were issuing one DB query per record. Resolved by rewriting with select_related(), prefetch_related(), and bulk querysets — collapsing hundreds of queries into single optimized calls.
  • Strategic Index Creation: Used EXPLAIN ANALYZE on the slowest queries to identify sequential scans on high-cardinality columns. Created B-Tree composite indexes on frequently filtered foreign keys and date ranges — turning multi-second scans into millisecond lookups.
  • Script-level Refactoring: Several hotspots were Python-level inefficiencies — replaced nested loops with set-based lookups, eliminated redundant serialization calls, and moved heavy computations outside iteration contexts.
  • Baseline & Regression Testing: Established benchmark scripts to measure before/after timings, ensuring optimizations held under realistic data volumes and preventing performance regressions in future deployments.

Bottlenecks Found & Resolved

Bottleneck TypeRoot CauseResolution
N+1 ORM queries Loop issuing 1 query per record on related models select_related / prefetch_related — collapsed to single query
Sequential table scans Missing indexes on FK + date filter columns B-Tree composite indexes — ms-level lookups on 40k+ rows
Redundant serialization Same objects serialized multiple times per request cycle Cached serialized output + lazy evaluation
Nested loop logic O(n²) Python loops on large datasets Set-based lookups + bulk ORM operations — O(n) complexity
Heavy in-loop computation Expensive calculations repeated inside iteration Pre-computed outside loop, passed as lookup dict

Impact

300%Query speed gain
N+1Patterns eliminated
O(n²)→O(n)Loop complexity
Data-drivenOptimization process
cProfile · SnakeViz EXPLAIN ANALYZE PostgreSQL Indexes Django ORM Optimization select_related · prefetch_related Python Performance Benchmark Scripts

Key Metrics

~170×

Invoice Throughput

From ~2 min/invoice in Odoo to 50 invoices in 35s in Django — using async mode with 10 concurrent workers. (Fiberlux)

80%

Invoicing Performance

Reduced critical Odoo invoicing workflow from 60s to 8–15s via PostgreSQL indexing, profiling, and async worker queues. (Fiberlux)

6→2

API Consolidation

Consolidated 6 fragmented external APIs into 2 major endpoints, drastically reducing integration complexity. (Fiberlux)

30%

Storage Reduction

Automated file sanitization with configurable batch processing eliminated 30% of production storage on the Five9 SFTP sync module.

Skills

Backend & Frameworks

  • Python (Advanced)
  • Django · Django REST Framework
  • FastAPI
  • Flask
  • Odoo (v13 / v16)
  • Celery

Data & Databases

  • PostgreSQL (Advanced)
  • MySQL · MongoDB
  • Redis (Queue & Cache)
  • Pandas · NumPy
  • Query Optimization
  • EXPLAIN ANALYZE

Testing & Quality

  • Pytest (Advanced)
  • Factory Boy · Mocking
  • TDD / Coverage Analysis
  • Swagger / OpenAPI
  • Integration Testing
  • cProfile · SnakeViz

DevOps & Tooling

  • Docker · Docker Compose
  • GitHub Actions (CI/CD)
  • Linux
  • Git
  • AWS (in progress)
  • uv (Python packaging)

Architecture & Patterns

  • REST API Design
  • JWT Authentication
  • Background Task Systems
  • Service Layer Patterns
  • Factory · Strategy patterns
  • Microservices (learning)

Languages & Community

  • Spanish (Native)
  • English (B2 EFSet Certified)
  • python-docs-es Contributor
  • Open Source Contributor
  • Structured public upskilling

Let's Connect

Open to remote backend roles, Python infrastructure collaboration, and mentorship opportunities.

© 2025 Luis Gonzalez · Backend Python Engineer · Lima, Perú