Back to Careers

Engineering

Senior Backend Engineer, Generation Platform

Own the distributed platform that submits, tracks, and settles every creative job our users run across image, video, and language model providers.

Department
Engineering
Location
Addis Ababa, Ethiopia
Workplace
On-site
Employment
Full-time
Compensation
Competitive salary + early-stage equity
Apply for this role

Overview

EhudAI is an AI-native platform for filmmakers and storytellers. Behind the product sits a distributed generation platform that fans creative work out to a range of AI providers for image, video, and language models — jobs that run from seconds to many minutes, cost real money the moment they start, and have to be accounted for precisely.

This is a distributed systems role, not a machine learning one. We don't train models and this isn't a prompt engineering job. If your instinct on reading "AI platform" is to think about fine-tuning, it isn't the right fit. If your instinct is to ask what happens when an upstream job is accepted, billed, and never acknowledged — read on.

What you'll be working on

  • Owning our generation platform: the services that submit, track, and settle every creative job users run
  • Designing a clean provider abstraction so that adding a new model or vendor is a configuration change rather than a new integration
  • Building the reliability layer around inherently unreliable upstream APIs — retries, timeouts, idempotency, reconciliation, and honest progress reporting
  • Owning the credit and metering system that connects user activity to provider cost, where correctness is non-negotiable in both directions
  • Shaping our asynchronous worker topology: queue design, concurrency, scheduling, and graceful shutdown
  • Deepening our observability so we can see what the pipeline is doing at every stage and catch problems early

Who we're looking for

  • 5+ years in backend engineering, with strong Python
  • Deep experience with asynchronous job systems — Celery, RQ, Sidekiq, Temporal, SQS consumers, or similar. You should have real opinions about idempotency, at-least-once delivery, and what happens when a worker dies mid-task
  • Strong relational database skills: transactions, isolation levels, and constraint design. You can reason about what two concurrent workers do to the same row
  • Experience integrating unreliable third-party APIs at scale — backoff, partial failure, reconciliation, and cost tracking
  • Experience with money-adjacent code, or a clear instinct for why it demands a different standard
  • You write things down, and you design for the failure case first

Nice to have: familiarity with AI provider APIs, Flask and SQLAlchemy, AWS, and observability work.

You do not need an ML or data science background, and you don't need front-end skills — though you'll occasionally follow a problem across the boundary.

Our tech stack

  • Backend: Python, Flask, SQLAlchemy, Celery
  • Data: PostgreSQL, Redis
  • AI: LangChain, LangGraph, Anthropic Claude, OpenAI, and a range of image and video model providers
  • Infrastructure: AWS, Docker, Terraform, GitHub Actions
  • Frontend: TypeScript, React, Next.js
  • Payments: Stripe, Chapa

You won't have touched all of it. We care that you're strong on distributed backend fundamentals and curious about the rest.

Why should you work at EhudAI?

  • You'd own the most important system in the company outright, with real autonomy over its design
  • The problems are legitimately hard: distributed state, unreliable upstreams, and accounting that has to be exactly right
  • Small, senior team — your work ships in weeks and you're never more than one conversation from a decision
  • The domain is genuinely interesting. Creative tooling for filmmakers is a more satisfying thing to build than most backend work
  • Meaningful early-stage equity alongside a competitive salary
  • A team that treats engineering judgement, not volume, as the thing worth hiring for

How to apply

Write to hello@ehudai.com. Tell us about a time an asynchronous system you owned lost or double-processed work, and what you changed so it couldn't happen again.