UM

Senior Backend Engineer (AI-Native)

Full-time On-site Senior Level Nairobi, KE
Posted 7 hours, 5 minutes ago 102 views 0 applications

Job Description

We need to output clean semantic HTML with

for intro paragraphs and general text,

for section headers,
  • for list items. Must preserve all original content word-for-word, no additions, deletions, summarization, rephrasing. Must not add CSS classes, inline styles,
    ,
    . Must not add markdown fences. Must return only HTML. We need to parse the job description and structure accordingly. The raw text includes: - About Umba (paragraph) - Headquartered... (paragraph) - We’re looking for exceptional people... (paragraph) - About the Role (section header) - Then description paragraphs about role. - Then "Responsibilities" heading (should be

    Responsibilities

    ) then list items each preceded by dash? Actually in raw text, responsibilities are listed with bullet dash lines. We need to convert each bullet line into
  • items. Must preserve content word-for-word, including dash? The dash is part of bullet? The instruction: Use
    • for list items (duties, requirements, qualifications, skills). So we should output a
        containing
      • items. The bullet dash should be removed? The content should be the text of each bullet, but we must preserve original content word-for-word. The dash is part of the original? The raw text shows: Responsibilities - Design, build, and maintain scalable backend services using Python (Flask, FastAPI) - Contribute to front end development (NextJS) - Contribute across the stack when needed (APIs, integrations) - Define clear technical specs that can be executed by AI-assisted development workflows - Use AI tools (e.g. Claude Code, Codex) to accelerate development while maintaining high quality - Review, test, and validate AI-generated code to ensure correctness, security, and performance - Architect systems with a focus on reliability, observability, and scalability - Build strong testing and validation pipelines (unit, integration, automated QA) - Collaborate with Data teams to deliver end-to-end features - Debug complex production issues and implement robust fixes - Continuously improve engineering velocity through tooling and process improvements We need to preserve the content word-for-word, but we can remove the leading dash? The instruction says "Preserve ALL original content word-for-word — do not add, remove, summarise, or rephrase". Removing the dash would be removing a character, which is a change. However the dash is not part of the content? It is a bullet marker, not part of the sentence. The instruction says "Use
        • for list items (duties, requirements, qualifications, skills)". So we need to output the list items as
        • Design, build, and maintain scalable backend services using Python (Flask, FastAPI)
        • etc. The dash is not part of the content; it's a bullet marker. So we can omit it. That is not adding or removing content? Removing the dash is removing a character that is not part of the sentence. The instruction says preserve all original content word-for-word. The dash is not part of the sentence content; it's a formatting artifact. I think it's okay to drop it. The bullet marker is not part of the content. So we can just output the sentence. Similarly for "Skills and Qualifications" heading, then list items. Also "What We’re Really Looking For" maybe a heading but not a list; it's a paragraph? Actually it's a paragraph with bullet-like lines? It says: What We’re Really Looking For - Engineers who think in systems, not just functions - People who can leverage AI to move 10x faster without sacrificing quality - Builders who take ownership from idea → spec → implementation → production - Pragmatic problem-solvers who ship These are also list items. Should be under a heading? Not specified but we can treat as a heading? Not a required header type. Could just be a paragraph? The instruction: Use

          for section headers (e.g. Responsibilities, Qualifications, Requirements, Education, Experience, Skills, How to Apply, Key Duties, About the Role). So "What We’re Really Looking For" is not listed as a header type, but we could still use

          for it? It says use

          for section headers (e.g. ...). It doesn't restrict to only those; we can use

          for any section header. So we can use

          What We’re Really Looking For

          then list items. Also "Work Status" is a heading with a line "Valid work authorization for Kenya". That's a paragraph? It is a line. Could be a heading? Not listed. Could just be a paragraph. Also "Umba is proud to be an Equal Opportunity employer..." is a paragraph. We need to preserve all original content word-for-word. So we must include all text exactly as appears, including line breaks? We will wrap paragraphs in

          . For headings, use

          . For list items, use
          • . We must not add any extra text. So we need to output HTML that includes all sections in order. Let's outline: Paragraphs: 1. "About Umba" maybe a heading? Not required but it's a paragraph. Could just be

            About Umba

            then next paragraph about Umba mission etc. But the raw text starts with "About Umba" as a heading? Actually it's "About Umba" then a blank line then description. The text: About Umba Umba is a pan-African digital bank operating in Kenya and Nigeria, with a mission to make financial services more accessible, affordable, and empowering for millions of people across Africa. We’re transforming how banking works on the continent by building intelligent, automated financial products powered by machine learning. Our platform offers digital banking, lending, and payments through Android, iOS, and Web applications, serving both individuals and businesses at scale. Headquartered in Nairobi, Umba acquired a licensed deposit taking microfinance bank in 2023 and has since grown revenue more than sixfold. We’re looking for exceptional people who share our ambition, energy, and belief that technology can unlock financial freedom. Join us as we build Africa’s leading digital bank. Thus we have multiple paragraphs. We need to preserve all content word-for-word. So we need to output exactly those sentences as they appear, but wrapped in

            tags. Should we keep blank lines? We can just have separate

            for each paragraph. Then "About the Role" heading:

            About the Role

            then description paragraphs. Then "Responsibilities" heading:

            Responsibilities

            then
              with
            • items. Then "Skills and Qualifications" heading:

              Skills and Qualifications

              then
                with
              • items. Then "AI-Native Engineering Experience (increasingly important):" maybe a heading? It's a line with colon. Could be a heading? Not required but we can treat as a paragraph? It is a heading? It is a line "AI-Native Engineering Experience (increasingly important):". Probably we can just wrap as

                AI-Native Engineering Experience (increasingly important):

                then list items? Actually after that there is a list of bullet items under that heading? The raw text shows: AI-Native Engineering Experience (increasingly important): - Experience using AI coding tools (Claude Code, Codex, GitHub Copilot, etc.) in daily workflows - Ability to write clear, structured technical specs and prompts for code generation - Strong code review skills, especially for validating AI-generated outputs - Understanding of tradeoffs, failure modes, and quality risks in AI-assisted development - Experience building guardrails: testing, validation, and monitoring for generated code - Familiarity with modern development workflows (Git, CI/CD, Docker) - Experience with Linux/Unix environments These are bullet items. Should we treat as a separate list? Could be under a heading? Not required but we can just output as a list after a paragraph? The instruction: Use
                • for list items (duties, requirements, qualifications, skills). So we can output a
                    with those
                  • items. But we need a heading? Not required. Could just output the list directly after a paragraph? But we need to preserve the heading text "AI-Native Engineering Experience (increasingly important):". That is a line that ends with colon. It is not a heading but we could treat it as a paragraph. Then the list items follow. However the list items are part of that section; we could include them under a
                      . But we need to preserve the heading text. Perhaps we can output a

                      AI-Native Engineering Experience (increasingly important):

                      then
                        ... items ...
                      . That would preserve the heading text as a paragraph, then list items. But the instruction says "Use

                      for section headers (e.g. Responsibilities, Qualifications, Requirements, Education, Experience, Skills, How to Apply, Key Duties, About the Role)". So "AI-Native Engineering Experience (increasingly important)" is not in that list, but we could still use

                      for it? It might be okay. But it's not a typical header; but we can still use

                      if we want. However we must preserve the text exactly, including colon. If we wrap it in

                      , we would have

                      AI-Native Engineering Experience (increasingly important):

                      . That includes the colon. That seems fine. But then the list items need to be under that heading? Could be inside the same

                      section? The instruction doesn't require headings for every section, but we can use

                      for any section header. So we could use

                      AI-Native Engineering Experience (increasingly important):

                      then
                        items. That would be consistent. Similarly "Bonus:" heading maybe? The raw text includes "Bonus:" then list items. Could be a heading as well. Use

                        Bonus

                        then
                          items. Then "What We’re Really Looking For" heading:

                          What We’re Really Looking For

                          then
                            items. Then "Work Status" maybe a heading? It is just a line "Work Status". Could be a heading? Not required but we could just output as

                            Work Status

                            then the line "Valid work authorization for Kenya". Actually the raw text shows: Work Status - Valid work authorization for Kenya So it's a heading "Work Status" then a bullet item. So we can treat "Work Status" as a heading

                            Work Status

                            then
                              with
                            • Valid work authorization for Kenya
                            • . Then the equal opportunity paragraph is a paragraph. We must preserve all content word-for-word. So we need to include all headings exactly as they appear, including punctuation and colon. Now we need to output HTML only. Let's construct step by step. First paragraph: "About Umba" is a heading? Actually it's just a line "About Umba". Could be considered a heading but not required. It is a line followed by a blank line then description. We can treat it as a paragraph? The instruction: Use

                              for introductory paragraphs and general text. So we can wrap "About Umba" as a

                              About Umba

                              . Then next paragraph: "Umba is a pan-African digital bank..." as

                              Umba is a pan-African digital bank operating in Kenya and Nigeria, with a mission to make financial services more accessible, affordable, and empowering for millions of people across Africa.

                              Then next paragraph: "We’re transforming how banking works on the continent..." as

                              We’re transforming how banking works on the continent by building intelligent, automated financial products powered by machine learning. Our platform offers digital banking, lending, and payments through Android, iOS, and Web applications, serving both individuals and businesses at scale.

                              Then next paragraph: "Headquartered in Nairobi, Umba acquired a licensed deposit taking microfinance bank in 2023 and has since grown revenue more than sixfold." as

                              Headquartered in Nairobi, Umba acquired a licensed deposit taking microfinance bank in 2023 and has since grown revenue more than sixfold.

                              Then next paragraph: "We’re looking for exceptional people who share our ambition, energy, and belief that technology can unlock financial freedom. Join us as we build Africa’s leading digital bank." as

                              We’re looking for exceptional people who share our ambition, energy, and belief that technology can unlock financial freedom. Join us as we build Africa’s leading digital bank.

                              Then heading "About the Role":

                              About the Role

                              then description paragraphs. The description after "About the Role" includes: "We’re looking for an experienced Back-End / Full-Stack Engineer to design, build, and scale the core services that power Umba’s digital banking platform. You’ll work primarily in Python (Flask, FastAPI), building secure, high-performance APIs used by tens of thousands of customers across Africa — while also contributing across the stack where needed. This is not a traditional engineering role. We operate in an AI-native development environment, where engineers leverage tools like Claude Code, Codex, and other LLM-based systems to accelerate development, generate code, and iterate quickly. As a result, the role increasingly focuses on: - Defining clear technical specifications - Orchestrating AI agents to implement systems - Reviewing, validating, and hardening generated code - Building robust feedback loops and quality control systems You’ll collaborate closely with the Data and Product teams to shape our architecture and ship features quickly and reliably. This is a highly technical, in-office role based in Nairobi. You’ll join a small, high-performing team operating at speed, where ownership is expected and impact is immediate." We need to preserve bullet points? The bullet points are part of the description but they are list items? Actually they are part of the paragraph but they are bullet lines. The instruction says use
                              • for list items (duties, requirements, qualifications, skills). So these bullet lines should be converted to
                              • items inside a
                                  . However they are not under a heading like "Responsibilities". They are part of the "About the Role" description. The instruction doesn't explicitly say to convert bullet points in general description to list items; but they are list items (duties?) Actually they are responsibilities? They are part of the role description. Could be considered part of responsibilities but not labeled. However we have a separate "Responsibilities" section later that contains bullet items. The bullet items under "About the Role" are not labeled as responsibilities but are part of the description. The instruction says "Use
                                  • for list items (duties, requirements, qualifications, skills)". So we should use
                                      for any list items. So we need to convert those bullet lines into
                                    • items. But they are part of the "About the Role" section; we could just output them as a
                                        after the heading, without a separate heading. That would preserve content. But we must preserve the bullet lines exactly, including the dash? The dash is bullet marker; we can omit it as before. The content after dash is the sentence. So we will output
                                      • Defining clear technical specifications
                                      • etc. But we need to preserve the content word-for-word, which includes the bullet dash? The dash is not part of the content; it's a marker. So we can drop it. But we also need to preserve the colon after "As a result, the role increasingly focuses on:"? Actually that line is a heading? It is a line "As a result, the role increasingly focuses on:" then bullet items. The bullet items are listed under that line. The line ends with colon. Should we treat that as a heading? Not required. Could just output as a paragraph? But it's a list heading? The instruction says use

                                        for section headers (e.g. Responsibilities, Qualifications...). So we could treat "As a result, the role increasingly focuses on:" as a heading? Not typical. Could just output as a paragraph:

                                        As a result, the role increasingly focuses on:

                                        then list items. But the colon is part of the text; we need to preserve it. So we can output

                                        As a result, the role increasingly focuses on:

                                        then
                                          items. But the bullet items themselves are part of the list; we need to output them as
                                        • items. Thus we need to parse the entire text and decide where to use headings. Let's outline the entire structure: -

                                          About Umba

                                          -

                                          Umba is a pan-African digital bank operating in Kenya and Nigeria, with a mission to make financial services more accessible, affordable, and empowering for millions of people across Africa.

                                          -

                                          We’re transforming how banking works on the continent by building intelligent, automated financial products powered by machine learning. Our platform offers digital banking, lending, and payments through Android, iOS, and Web applications, serving both individuals and businesses at scale.

                                          -

                                          Headquartered in Nairobi, Umba acquired a licensed deposit taking microfinance bank in 2023 and has since grown revenue more than sixfold.

                                          -

                                          We’re looking for exceptional people who share our ambition, energy, and belief that technology can unlock financial freedom. Join us as we build Africa’s leading digital bank.

                                          -

                                          About the Role

                                          -

                                          We’re looking for an experienced Back-End / Full-Stack Engineer to design, build, and scale the core services that power Umba’s digital banking platform.

                                          -

                                          You’ll work primarily in Python (Flask, FastAPI), building secure, high-performance APIs used by tens of thousands of customers across Africa — while also contributing across the stack where needed.

                                          -

                                          This is not a traditional engineering role. We operate in an AI-native development environment, where engineers leverage tools like Claude Code, Codex, and other LLM-based systems to accelerate development, generate code, and iterate quickly.

                                          -

                                          As a result, the role increasingly focuses on:

                                          maybe we need a colon? Actually the line is "As a result, the role increasingly focuses on:" then bullet items. So we could output

                                          As a result, the

Apply Now ↗

How well do you match?

Get an instant AI match score for this role — free, takes 3 minutes.

Tailor your CV for this role

The concierge rewrites your whole CV and writes a matching cover letter for this job — opens right here, nothing to paste.

Tailor My CV to This Job ✍️

Free cover letter for this job

Upload your CV and get a tailored cover letter in seconds — free, no account needed.

Generate a Cover Letter 📝

Join Our Ethiopia Channels

Get free job alerts on your phone

MJC
ECHO
Your MJC Assistant

I'm ECHO, your MJC career assistant. I can help you find jobs, explore career tools, and connect with opportunities across Africa.

How was your experience with ECHO?