Open to senior backend roles · remote
Senior Backend Engineer

Ilia Doinikov

Java · Spring Boot · PostgreSQL · AWS
📍 Montevideo, Uruguay remote, UTC-3 open to relocation

Backend engineer working with Java since 2020 — the last four years full-time building and operating Spring Boot services for a Caterpillar laboratory platform, fully remote with a distributed US team. I own features end to end: API contract, service logic, data schema and event-driven AWS integrations.

Experience

Four years on one platform, end to end

Backend for a Caterpillar laboratory sample management platform — Java, Spring Boot, PostgreSQL (Aurora), AWS Lambda and event-driven integrations.

Senior Software Engineer

Oct 2024 — now
Comtek · Caterpillar project · Remote
  • Closed 160+ backend work items in two years (60+ user stories, 90+ defects) across API contracts, service logic, database schema and serverless integrations.
  • Refined requirements, endpoint and database designs with the project architect and business stakeholders before implementation; shaped the testing approach for blue-green deployments.
  • Migrated the platform to an updated organization model: reworked hierarchical search and retired deprecated entities and parameters from the public API and its OpenAPI contract.
  • Built the analytes API, reworked limit and detection-threshold logic on rounded values, and added new roles, ownership and status checks to the authorization layer.
  • Reviewed pull requests and onboarded new engineers to the codebase, domain model and team workflow.

Software Engineer

Nov 2022 — Oct 2024
Comtek · Caterpillar project · Remote
Enterprise data platform services, then the new laboratory sample analysis platform.
  • Built core product APIs: laboratory management, interpretation codes (reference data) and the equipment wear model with wear limits.
  • Hardened the data platform: XSS output encoding, standard Cache-Control headers, cache credentials moved to managed secrets, rate-limited bulk DLQ replay.
  • Improved observability: fixed API Gateway metrics, built CloudWatch dashboards, added a read-replica lag metric and runtime log-level changes via Actuator.
  • Wrote integration tests for external laboratory systems and preference APIs; patched vulnerable dependencies.

B.Sc. Applied Mathematics & Computer Science

2018 — 2022
Peter the Great St. Petersburg Polytechnic University
How I work

A few things I built at the day job

Details are under NDA, so here is the engineering, not the business data.

01

Contract-first APIs that can't drift

Problem
Hand-written controllers and DTOs slowly diverge from the published API spec.
Built
OpenAPI specifications generate Spring controllers and DTOs through a custom SpringCodegen extension.
Result
Specification and code cannot drift apart; the contract is the source of truth for frontend and QA.
02

Localization across API, storage and events

Problem
Translations lived in legacy columns and weren't reliably propagated through events.
Built
Moved service logic to translation tables, dropped legacy columns, hardened event processing with a DLQ and deletion handling.
Result
End-to-end localization with failed events captured instead of lost.
03

Runbooks for PostgreSQL with CDC

Problem
Aurora PostgreSQL with Debezium CDC and serverless functions had no written recovery procedures.
Built
Runbooks for failover, backup/restore, replication slot recovery and safe schema changes; alarms routed to incident management.
Result
On-call has a tested path for the scary incidents, plus AI-assisted (MCP) tooling for log analysis.
04

Safer delivery pipeline

Problem
Broken migrations surfaced only at deploy, and the BDD template let failing scenarios pass silently.
Built
Added a Flyway migration dry-run to CI and fixed the Cucumber template so failures are actually reported.
Result
Broken migrations and broken scenarios now fail the pipeline instead of production.
Independent projects

Side projects, built solo

Smaller products I designed, built and deployed on my own — the code, the infrastructure and the product calls.

Live · 2026

PhotoList LATAM

Photograph an item → a vision LLM identifies it → one click to its resale prices on MercadoLibre. Idea to production in three weeks.
  • Java 21 on AWS Lambda behind API Gateway, presigned S3 uploads, DynamoDB caching, AWS CDK, CI/CD on GitHub Actions.
  • OAuth 2.0 authorization-code flow with one-time refresh-token rotation persisted to SSM, plus a cache layer preventing rotation races across concurrent Lambda invocations.
Java 21 AWS Lambda API Gateway DynamoDB S3 presigned SSM AWS CDK GitHub Actions
2026

LeaseLens

AWS backend for LLM clause extraction from legal documents.
  • Golden-set evaluation gate fails the build on any non-verbatim quote: 100% recall, zero hallucinated quotes at release.
  • Redesigned a timing-out synchronous endpoint as an async job with two-level caching.
AWS LLM structured output Eval gate in CI Async jobs
Try it

Cobro QR · Uruguay

A zero-backend tool to get paid without dictating an account number: fill in bank details once, share a QR, the payer scans and copies. All state lives in the URL; nothing is stored.
Vanilla JS Single file No backend
Toolbox

What I work with

Languages

  • Java 8–21
  • SQL
  • Python

Backend

  • Spring Boot
  • Spring Web
  • Spring Data JPA
  • Hibernate
  • jOOQ
  • Bean Validation
  • Actuator
  • Maven

APIs & architecture

  • REST API design
  • OpenAPI contract-first + codegen
  • Microservices
  • Serverless
  • Event-driven
  • DLQ
  • OAuth 2.0

Data

  • PostgreSQL (Aurora)
  • Flyway
  • CDC (Debezium)
  • Read replicas
  • Query performance
  • DynamoDB

Cloud & operations

  • AWS Lambda
  • API Gateway
  • RDS
  • S3
  • SNS
  • SSM
  • CloudWatch
  • AWS CDK
  • Blue-green deployment

Testing & delivery

  • JUnit 5
  • Cucumber / BDD
  • RestAssured
  • Integration testing
  • GitHub Actions
  • Docker
  • Code review

AI / LLM

  • Structured output + validation
  • Eval gates
  • MCP tooling

Languages spoken

  • English (fluent)
  • Russian (native)