Throughout my career I’ve successfully led and contributed to commercial projects for companies based in the UK, US, and the EU, spanning industries such as FinTech, Compliance, Medical Tech, retail and marketing analytics, hosting services. I excel at delivering optimal results with limited resources, designing and implementing robust software solutions, enhancing legacy codebases, and establishing best practices and processes that drive companies and teams towards their objectives.
Tail Offers
Tail Offers is an FCA-regulated FinTech company.
The Verve app enables consumers to earn cashback from a wide range of retailers paid directly to their Starling or Monzo bank accounts.
I was responsible for designing new backend services to increase
transaction ingestion capacity (TIS),
expanding existing business–critical services (billing & payments),
establishing new company processes,
mentoring junior colleagues, working with the PO and the offshore mobile team,
liaising with chief executives regularly.
Integrations: Open Banking, Starling Bank, Mailchimp.
Tech stack: AWS Lambda, SQS, Python, Django/DRF, PostGIS, PostgreSQL.
Transaction Ingestion Service (TIS)

TIS is a dedicated, queue-driven service designed to decouple transaction ingestion from the main backend, shifting transaction processing from synchronous, request-blocking logic to an asynchronous pipeline. Its immediate motivation is to reduce load and latency in the core application while improving resilience and scalability.
The core problem
- Transactions were previously processed live within the backend monolith.
- Each incoming transaction tied up backend resources while downstream logic (redemptions) completed.
- This increased latency, reduced throughput, and made failures more disruptive.
Proposed approach
- Introduce a separate Transaction Ingestion Service as the entry point for partner bank transactions (initially Starling).
- Use a queue-driven architecture (AWS SQS) to buffer validated transactions for later processing.
- Keep ingestion lightweight; push complexity downstream to consumers and workers.
Architecture at a glance
Producer
- Runs as an AWS Lambda function.
- Receives incoming transactions.
- Performs minimal validation (signatures and schema).
- Publishes messages to an SQS queue.
Queue
- Uses AWS SQS to buffer transactions.
- Provides durability (up to 14 days), retries, and back-pressure.
- Has a redrive policy attached, which redirects bad messages to a Dead Letter Queue (DLQ) / Invalid Message Channel (IMC) for manual review.
Consumer / Scheduler
- Main logic sits inside the backend monolith, but runs as a separate service (with a separate entrypoint).
- Additional container/instance for the Consumer application —
frontend_sqs_consumer. - Polls SQS and dispatches messages to workers for processing.
Workers
- Execute transaction processing and redemption logic.
- Persist results to the database.
Failure handling
- Retries via SQS
RedrivePolicy.maxReceiveCount. - Redrives messages to DLQ / IMC for manual review / intervention.
Key design decisions
- Asynchronous processing — to decouple ingestion from business logic.
- No FIFO queues — ordering is unnecessary because transactions are timestamped.
- Message versioning using SQS message attributes, e.g.
service_version,message_versionto allow backward-compatible evolution. - Incremental migration — start with Starling, later extend to Monzo.
- Transaction deduplication is already implemented by the main backend.
Technology stack
- Language: Python 3.10
- AWS: Lambda, SQS, API Gateway, RDS, CloudWatch
- Tooling: AWS SAM, Docker, Pydantic, Boto3
- Monitoring: CloudWatch (producer), Kibana (consumer)
Risk and impact
- No database schema changes.
- No transaction downtime during rollout.
- No external partner or customer disruption.
- Deployment is additive, not replacing existing paths initially.
Strategic context
TIS is explicitly framed as a stepping stone toward a broader event-driven architecture, starting with a pragmatic queue-driven model that fits the current backend landscape rather than attempting a full architectural rewrite upfront.
Pole Star Space Applications
Pole Star is a regulated company operating in the maritime industry.
My role involved contributing to the existing business–critical products (PurpleTRAC),
and owning the development lifecycle of a brand new financial service called PAYS,
which handles flexible PAYG payments from our customers in the maritime industry.
Integrations: Stripe.
Tech stack: Python microservices with Flask/Connexion, Django, Go, OpenAPI, PostGIS, PostgreSQL, Docker, AWS.
| The PAYS Admin API | The PAYS Public API |
|---|---|
![]() |
![]() |
PAYS uses a model of two tills, very similar to Argos in the UK.
- The client selects the items they wish to purchase at the first till, they pay and keep the proof of purchase.
- Then they may collect the items at the second till at any later time.
This design approach was necessary in order to deal with the complex payment flow resulted from implementing 3DSecure/SCA while also integrating the service with PurpleTRAC.
MyRecovery
Future Health Works is a regulated, HIPAA-compliant, Medical Tech company.
Myrecovery.ai is a digital healthcare platform which helps patients during their recovery journey.
My contribution was to develop the backend services, deployment pipelines and related dev-ops,
to build the Dashboard product from the ground up, and to manage a small team of junior developers.
I was involved in mentoring colleagues throughout my time with the company,
a responsibility which I have enjoyed very much.
At the end of January 2019 we launched the Dashboard which enables hospital staff such as executives, surgeons and
assistants to enroll patients into the MyRecovery system and to track their treatment outcome.
The system is currently in use with great feedback from patients and surgeons alike.
Tech stack: Python, Django/DRF, VueJS, PostgreSQL, Redis, AWS, Docker, Gitlab CI.

eReceipts Retailer Portal
Yocuda.com is the leading digital receipts solution used by prominent retailers in the UK.
Argos, Debenhams, Halfords, Booths, Fred Perry, Monsoon & Accessorize, CASS Art are some of the clients.
The eReceipts Retailer Portal is the client facing application where
retailers have an unified view of both their online and brick-and-mortar sales.
They can also view POS data, the number of electronic receipts sent, loyalty programs, etc.
This was previously a legacy application, which was rebuilt from the ground up.
It now uses AngularJS and employs the industry’s best practices.
Technologies used: AngularJS, Python, MySQL.

Zooku Control Panel
Zooku.ro is a cloud hosting service which offers scalability using a special distributed infrastructure. To accommodate this architecture, a special Control Panel had to be built for the end-user.
Featured below is the second version of this control panel, which has been rewritten from the ground-up using modern approaches and cutting-edge technologies.
The application is composed of a few individual layers such as:
- A series of workers that do the background tasks such as provisioning and configuring services.
- A REST API that exposes a programmer-friendly interface to the outside world.
- And a stand-alone Web client that takes full advantage of this API.
The application is translated to English and Romanian.
Try the Control Panel here.
The video features the web client and goes through a few scenarios such as adding a sub-domain, a FTP user, and then an Email account.
Technologies used: PHP, MySQL, Memcache, Gearman, Linux, AngularJS.

Sendmachine
Sendmachine.com is an email marketing tool that enables clients to send high-volume email campaigns and transactional emails.
The application has a highly scalable architecture. A service-oriented approach was used here as well, taking after the Zooku service. The application consists of a series of workers that parse and deliver emails, a REST API that enables programmers to integrate Sendmachine into their own application, and a stand-alone web client.
The application is translated to English and Romanian.
Try Sendmachine here.
The video shows the creation of an email campaign, sending it, and viewing its statistics afterwards.
Technologies used: PHP, MySQL, Memcache, Gearman, Postfix, Linux, AngularJS.

Blend Genies
We built a system of rule-driven chat bots called Genies for our US-based client Blend.la.
Genies integrate with Blend’s existing iOS / Android group chat app.
The project involves heavy web and API scraping from multiple sources and presenting it in-chat to the users.
For end-users genies enable effortless consumption of many social services such as Instagram, Fitbit, Twitter, Facebook, etc. right from the app.
Some unique features include sensing content before it goes viral and the ability to compete head to head
with your friends in case of services such as Fitbit.
Our stack is based on Python with Redis and Mongo handling thousands of users every day.
I’ve been involved with developing the backend services which scrape data from third party content providers and APIs.
I’ve been the one steering the tech team towards picking Python for the project, and mentoring the team members.
More at Genies.com.
Technologies used: Python, MongoDB, Redis, Docker, Linux.


