Ibrahim Adeshina

Software that holds up under load, retries and bad data.

I'm Ibrahim Adeshina, a software engineer in Glasgow specialising in backend systems: APIs, data models, integrations, and the tests that prove they work.

Focus
Backend systems, APIs, data integrity
Stack
Python, Django, FastAPI, PostgreSQL, TypeScript
Experience
2+ years, Huawei and MaxGood
Status
Open to roles across the UK
Featured project

Fund Ledger

Double-entry accounting for private equity funds in Django REST Framework and PostgreSQL 16. Capital calls, distributions, reversals, FX, fees, valuations, period close and LP statements, built so that money moves exactly once.

Python 3.12, Django REST Framework, PostgreSQL 16, Hypothesis, Locust, Docker

BEGIN;-- lock both accounts in primary-key orderSELECT id FROM account WHERE id IN (17, 42)  ORDER BY id FOR UPDATE;-- a retried request finds its key and stops hereINSERT INTO idempotency_key (key) VALUES ('a91f…');INSERT INTO entry (account_id, amount) VALUES  (17, -250000.00), (42, 250000.00);COMMIT;-- deferred trigger: entries sum to zero, or nothing commits
Balanced and committed once.
  1. 1

    Lock in a fixed order

    Rows are locked in primary-key order, so two transfers touching the same accounts queue instead of deadlocking.

  2. 2

    Recognise a retry

    An idempotency key with savepoint recovery means a request sent twice moves money exactly once.

  3. 3

    Post, never edit

    Triggers make entries append-only and refuse postings into a closed period. Corrections are reversals.

  4. 4

    Prove it balances

    A deferred constraint trigger checks the transfer at commit, even if application code is wrong.

Load tested

Locust at 50 concurrent users: 6,751 requests with no failures, and the ledger reconciled to zero afterwards. I traced the throughput ceiling to a per-fund row lock and wrote up the mitigations.

Tested like it matters

More than 100 tests, including Hypothesis property tests and multi-connection concurrency tests. CI runs ruff, mypy and pytest with an 85% branch coverage gate, then seeds the ledger twice and reconciles.

More work

  • Multi-agent RAG for molecular questions

    MSc dissertation, 2026

    MSc dissertation in LangGraph. A six-condition ablation against a matched single-agent baseline, reported honestly: no reliable gain at this precision.

  • Slack integration at MaxGood

    MaxGood.work, 2025

    OAuth 2.0 install flow, token storage, access gating and the Flask webhook layer that threads Slack events to a GPT-4o backend.

  • Incident workflows at Huawei

    Huawei Technologies, 2024 to 2025

    Trouble tickets that escalate to problem tickets on repeat incidents, role-based access at each stage, and all persistence in raw SQL.

Ibrahim Adeshina, arms folded, in a black jacket over a beige shirt

About

I trained as an electrical and electronics engineer at the University of Ilorin, then moved into software. Since then I've built incident workflows for telecom operators at Huawei, shipped a Slack integration for an AI start-up in Canada, and taken on freelance work across Python and TypeScript.

I'm drawn to the parts of a system people hope never break: the database rules, the retries, the integrations with someone else's API. Right now I'm finishing an MSc in Advanced Computer Science with Software Engineering at Strathclyde.

Experience

  1. Jan 2026 to Jan 2027MSc Advanced Computer Science, University of Strathclyde
  2. Sep to Nov 2025Software Engineering Intern, MaxGood.workRemote, Canada
  3. Jan 2024 to Oct 2025Software Automation Engineer, Huawei Technologies
  4. 2022 to nowFreelance full-stack engineerPlatr, Asolar, David Bukola Foundation

Hiring a software engineer in the UK? Let's talk.