Juliana Torrisi is in direct contact with the company and can answer any questions you may have. Email
We're building an innovative agentic code remediation platform that uses AI to fix code quality issues in real-time. Our system integrates with GitHub Actions, SonarQube, and LLMs to automatically create pull requests that fix code issues, creating a self-healing CI/CD pipeline.
We're looking for a Backend Engineer with deep Elixir/OTP expertise to build the orchestration layer of our distributed system. You'll focus on creating a fault-tolerant, scalable platform using Phoenix, Absinthe GraphQL, and BEAM's unique capabilities.
Our automated remediation agent consists of:
● Elixir/Phoenix orchestrator (your focus) - Event processing, safety enforcement,
and API layer
● Python microservices - Git operations and LLM integration
● Fire-and-forget architecture - Async processing with natural Git-driven iterations
● BEAMops deployment - Leveraging BEAM's operational characteristics alongside Kubernetes
Your Domain:
● Phoenix web framework with LiveView dashboards
● Absinthe GraphQL API with real-time subscriptions
● GenStage/Broadway for event processing pipelines
● Supervised OTP applications with fault tolerance
● Distributed BEAM nodes for horizontal scaling
Core Responsibilities
● Design and implement OTP applications with proper supervision trees for fault tolerance
● Build Phoenix APIs and Absinthe GraphQL schemas with real-time subscriptions
● Develop GenStage pipelines for processing remediation events with backpressure
● Create GenServer-based state machines for managing remediation workflows
● Implement distributed rate limiting and circuit breakers using OTP patterns
● Design event-driven architectures leveraging Phoenix PubSub and EventBus
● Build Phoenix LiveView components for real-time monitoring dashboards
● Optimize for BEAM's strengths - massive concurrency and fault tolerance
● 3+ years production Elixir development experience
● Deep understanding of OTP principles: supervisors, GenServers, and fault tolerance
● Production experience with Phoenix Framework and Phoenix LiveView
● Experience building GraphQL APIs with Absinthe
● Proficiency in designing supervision trees and failure recovery strategies
● Understanding of BEAM VM characteristics and operational concerns
● Experience with GenStage, Flow, or Broadway for data processing
● Testing expertise with ExUnit, property-based testing, and distributed system testing
● BEAMops experience: Hot upgrades, distributed deployments, BEAM clustering
● Distributed Elixir: Experience with distributed Erlang/Elixir applications
● Phoenix LiveView advanced patterns and JavaScript hooks
● Ecto with PostgreSQL for metadata storage
● Telemetry and OpenTelemetry for observability
● Experience with libcluster for automatic node discovery
● NIFs/Ports for integrating with external services
Core Elixir Stack:
● Elixir 1.14+ / Erlang/OTP 25+
● Phoenix 1.7+ with LiveView
● Absinthe GraphQL
● GenStage/Broadway
● Ecto with PostgreSQL
● Oban for background jobs
Infrastructure:
● BEAMops practices (hot code upgrades, distributed deployments)
● Kubernetes with BEAM-aware operators
● Docker for containerization
● GitHub Actions for CI/CD
● Prometheus + Grafana for metrics
You're an OTP Expert
● Design systems thinking "let it crash" philosophy
● Know when to use GenServer vs Agent vs Task
● Understand supervision strategies and when to apply each
● Can reason about distributed system guarantees in BEAM
You Embrace Functional Programming
● Think in terms of data transformations and pipelines
● Write composable, testable functions
● Understand immutability benefits for concurrent systems
You Build for Resilience
● Design for failure as the normal case
● Implement circuit breakers and bulkheads naturally
● Use supervision trees to isolate failures
● Know how to handle network partitions
You Understand BEAM's Superpowers
● Leverage massive concurrency (millions of processes)
● Use message passing for decoupling
● Implement soft real-time guarantees
● Know when BEAM is the right tool vs when it's not