Tech Lead · London, UK

Dhia Kennouche

Building fintech, payments-data, and AI systems.

I lead an engineering team from architecture through delivery across card issuing, Open Banking, real-time transaction pipelines, and customer-data AI. I bring over a decade of hands-on experience with Python, TypeScript, AI, AWS, and product delivery across backend, web, and mobile.

Leadership

Examples from the past year-plus as Tech Lead at Expend, where I have worked for five-plus years.

Hiring and team growth

Own hiring loops, technical interviews, onboarding, and mentoring so new and existing teammates build product context quickly and contribute across the engineering stack.

Technical direction

Shape roadmap planning, cross-team technical decisions, delivery sequencing, and on-call ownership while remaining hands-on in the codebase.

TDD enablement

Launched a TDD initiative that improved how the team understood and applied test-driven development through practical sessions and workshops.

AI adoption

Ran two-day hackathons introducing LLMs, LangGraph, and AI-assisted engineering workflows, producing production AI features and company-facing product prototypes.

Projects I built or led over the past five-plus years at Expend.

AI-assisted OCR

In production

Evolved the OCR pipeline into a more AI-driven financial-document capture flow, improving how Expend extracts structured data from customer documents.

  • Shipped the work into production as part of the AI Automation product surface.
  • Focused the pipeline on higher-quality extraction for receipts, invoices, and other financial documents.
  • Reduced Document OCR spend by 23x while increasing measured accuracy on edge-case documents to 95%.
Explore AI Automation

Customer insights AI assistant

Alpha testing

Designed and built solo: a LangGraph agent that answers customers' questions about their own data in natural language.

  • Translated questions into SQL using schema-aware context and query validation.
  • Added two guardrail layers: an LLM-as-a-judge check and deterministic SQL-policy validation.
  • Built an event-driven question-answering engine so customer questions can be answered asynchronously, with conversations continuing across web and mobile.

Card issuer rollout and customer migration

Co-owned Expend's move to a new card issuer, taking joint responsibility for vendor and architecture decisions while owning the customer-facing rollout and migration work.

  • Partnered with the CTO on vendor research, technical due diligence, and selection against product, risk, and operational requirements.
  • Drove architecture alignment across the team for an event-driven system built to process millions of transaction events efficiently.
  • Owned the frontend transition so customer-facing changes were clear, timely, and minimally disruptive.
  • Owned migration execution for thousands of cards, coordinating new card creation, dispatch, customer communications, funds movement, and operational cutover.

Expense approval flows

Built the approval state engine behind Expend's configurable expense-review workflows.

  • Modelled complex approval policies that assign the right reviewers based on requester, team, amount, expense type, policy breach status, tracking groups, and category rules.
  • Handled ordered review steps, auto-approval, fallback reviewers, all-reviewer approval, and review-state visibility across the inbox and expense history.
  • Designed and built the engine to process millions of expenses and transactions efficiently while scaling up and down automatically.
Explore approval workflows

Open Banking reimbursements

Led the Open Banking integration behind reimbursing approved expense and mileage claims from a company bank account.

  • Owned architecture, delivery, and maintenance across backend and web.
  • Designed consent and authorisation flows, resilient synchronisation, and bank-data normalisation.
Explore the reimbursement workflow

Card Connect

Built the external-provider integration for Card Connect, bringing real-time transaction data from connected business cards into Expend.

  • Designed event-driven ingestion for card-transaction events as they happen.
  • Built for the ordering, idempotency, and reconciliation guarantees financial data demands.
Explore Card Connect

React-to-Next.js migration architecture

Designed the deployment and routing architecture for a phased migration from a legacy React app to Next.js.

  • Enabled the legacy React app and the Next.js app to be deployed and served side by side.
  • Created a navigation approach that let users move between both applications cleanly while migration work continued incrementally.

Card issuingExpense managementApproval workflowsFinancial transactionsOpen BankingReal-time payments dataEvent-driven architectureFrontend architectureLLM agentsLLM fine-tuningAWSTeam leadership

Peer-reviewed work on measuring and estimating software size with language models, and on how microservice teams actually work.

Automating software size measurement with language models: Insights from industrial case studies

H. Ünlü, S. Tenekeci, D. E. Kennouche, O. Demirörs · Journal of Systems and Software, vol. 231, 2026

Microservice-based projects in agile world: A structured interview

H. Ünlü, D. E. Kennouche, G. Kilinç Soylu, O. Demirörs · Information and Software Technology, vol. 165, 2024

My MSc thesis explored fine-tuning and evaluating language models to estimate software size from requirements written in natural language. The full publication list is available on DBLP.

I started with Ruby on Rails and Python as a teenager, contributing to open source and placing as a finalist in Google Code-in. My first Python contribution dates to 2011. Since then I have worked across Android, React Native, monolithic and microservice Java and Python systems, learning the trade-offs that inform how I lead today.

Python
Java
Typescript
React
NextJS
Android
Apple
NextJS
AWS

The fastest way to reach me is email. You can also find my work and research through the links below.