Tech Lead · London, UK

Dhia Kennouche

Building dependable 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 across backend, web, mobile, cloud, and product delivery.

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.

Engineering quality

Strengthen delivery confidence through pragmatic standards for testing, maintainability, observability, and technical decision-making.

Delivery ownership

Coordinate product, engineering, operational, and customer-facing work so complex changes move from ambiguous problem space to production safely.

Selected work

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.

Read the details
  • 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.

Read the details
  • 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.

Read the details
  • 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.

Read the details
  • 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.

Read the details
  • 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.

Read the details
  • 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.

Read the details
  • 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.

Focus areas

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

Research & publications

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

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.

Earlier work

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.

Core technologies

Python
Java
Typescript
React
NextJS
Android
Apple
NextJS
AWS

Contact

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