Pape Souleymane Ndao
Portrait of Pape Souleymane Ndao

Full-stack developer · Future AI & Big Data engineer and software architect

PapeSouleymaneNdao

I build software that holds up in production. I started with finance, because I love it.

Full-stack author of FIDIS, an internal control and compliance platform running in production for banks. Architect of ALPHA, a decision workflow piloted by a bank. Co-founder of Fyxop in Dakar. From January 2027: a double degree ESMT × 3iL in AI & Big Data and software architecture.

14°41′N 17°26′W · Dakar, Sénégal

53

numbered delivery lots shipped on FIDIS since August 2026

850+

automated tests guarding FIDIS before each deployment

4

Fyxop products I have shipped code for

1

bank piloting ALPHA, delivery on 15 Nov 2026

17/20

for my thesis on FIDIS at ESMT, mention Très bien

In figures, as of 27 Oct 2026

Selected work

Software that banks actually use.

Four products for banks and microfinance institutions, where I started, plus the sites, apps and tools I built beyond finance. Drag the ring, or pick a project below.

01 / 08

FIDIS

Open
Featured · In production

FIDIS

Internal control and regulatory compliance for UEMOA banks and microfinance institutions.

My role
Full-stack, end to end: product design, data model, back-end, front-end, deployment and security.
The problem
Our pilot bank ran its controls on Excel sheets and e-mail threads. When the supervisor asked for evidence, someone rebuilt it by hand.
What it does
FIDIS carries a control from its mission to the signed report. Control points are tested on a sample, non-compliant items raise anomalies, anomalies lead to action plans, the rulebook is imported from the regulator's texts, and reports are drafted on the bank's own templates, by hand or with AI.
How it is built
Python with Django REST Framework on the back-end; TypeScript with Next.js and React on the front-end. PostgreSQL keeps one schema per bank, so a query cannot reach another client's data. Celery workers and Redis run the recurring controls, escalations and notifications. The whole platform ships with Docker Compose behind nginx and gunicorn on a Linux VPS. Report drafting and the regulatory assistant call Claude through Anthropic's API. Delivered in numbered lots. Each lot lists its goals and my business decisions, ships with its tests, gets deployed, then committed.
Languages and tools
PythonDjango RESTTypeScriptNext.jsReactPostgreSQLCeleryRedisDocker ComposenginxClaude API
850+automated tests
53delivery lots
2compliance rates, never averaged

Real FIDIS screens from the test environment, recorded on 27 Oct 2026. Data is fictitious. Click a screen to enlarge it.

Decisions I signed

On FIDIS I make the business calls, not only the code.

A few of them, as written in the delivery notes. Each one changed how a bank works in the product.

30.08.2026 · FIDIS

Whoever owns a report validates, signs and distributes it. Executive management approves it, or sends it back with a stated reason.

P. S. NdaoSigned

29.08.2026 · FIDIS

A control is created from its mission, never on its own. It inherits the mission's level and department.

P. S. NdaoSigned

29.08.2026 · FIDIS

Department heads do not create work. Missions are assigned to them; they open the work, report progress and validate their staff.

P. S. NdaoSigned

17.10.2026 · FIDIS

Two compliance rates, never averaged: regulatory, counted by control point; operational, counted by item tested in the sample.

P. S. NdaoSigned

31.08.2026 · FIDIS

Sessions are bounded: a 15-minute access token, 60 minutes of inactivity, 12 hours in total.

P. S. NdaoSigned

19.10.2026 · FIDIS

When its period ends, a daily control is archived with its real state (awaiting validation, incomplete or not done) and a blank sheet takes its place.

P. S. NdaoSigned
In pilot with a bank · delivery 15 Nov 2026

ALPHA

Decision workflow for banks and SMEs: every decision follows its circuit, and every step leaves a trace.

My role
Architecture and DevOps. The code is written by Claude and a team of AI agents, sprint by sprint, from the specification I wrote. I own the architecture, the infrastructure and the acceptance of each sprint.
What it does
Credit and financing files, corporate and supplier requests, internal decisions and HR (hiring, internships, contract ends) follow a defined circuit. The client file is built once at sign-up; later requests only ask for the new documents. Credit conditions are set by the analyst, client by client.
How it is built
Django 5.2 LTS with Django REST Framework, Celery and Redis; Next.js 15 on the front. PostgreSQL 16 with Row-Level Security: the application role owns nothing and reads zero rows without a tenant context, while a separate owner role runs migrations. Docker for every environment, Caddy for HTTPS, separate staging and production stacks, Uptime Kuma watching from another machine. MFA is mandatory. The pilot bank runs Temenos as its core banking system.
Languages and tools
PythonDjango 5.2DRFPostgreSQL 16 · RLSCeleryRedisTypeScriptNext.js 15DockerCaddyUptime KumaClaudeAI agent teams
24pull requests merged in October 2026
2database roles: owner and application
15.11pilot delivery, Nov 2026

Screens from the clickable ALPHA prototype that frames the pilot build, recorded on 27 Oct 2026. Demo data. Click a screen to enlarge it.

In production

Riskless

Risk mapping, key indicators and action plans, in one space per institution.

My role
Front-end, inside an agile team. The Laravel back-end was built by a partner developer; I worked on the screens, from the risk matrix to the indicators.
What it does
Each risk sits in a matrix by frequency and net impact in CFA francs, next to its gross-impact matrix. When a cell gets crowded the display regroups so it stays readable. Indicators carry thresholds that alert above or below. An AI assistant answers from the institution's own data only and can hand back a PDF synthesis, and an API with scoped tokens lets the bank's systems feed it.
How it is built
Laravel 12 on PHP 8.2 with MySQL. Server-rendered Blade views styled with Bootstrap, with JavaScript for the interactive parts. Built in sprints.
Languages and tools
PHP 8.2Laravel 12BladeBootstrapJavaScriptMySQL

Real Riskless screens from the pre-production environment, recorded on 27 Oct 2026. Demo bank; IP addresses blurred. Click a screen to enlarge it.

Official tour on fyxop.com
Version 2 in progress

SecuFin

Anti-money-laundering and counter-terrorist financing for banks and microfinance institutions.

My role
Version 1: front-end in an agile team. Version 2, a full rebuild: I build the front-end, and the back-end is produced by Claude from my prompts, which I review and test.
What it does
Detection scenarios run over the whole customer and transaction portfolio: cumulative amounts over 1, 10 or 30 days, operations above declared income, politically exposed persons. Customers are screened against sanctions lists, risk is scored low, medium or high, and each alert keeps its analysis up to the declaration.
  • Detection scenarios shipped with the product
  • Unidentified customerKYC
  • Operations by a politically exposed personPEP · PPE
  • Amount above declared income> ∑
  • Account opened less than ten days ago< 10 d/j
  • Cumulative amounts over 1, 10 or 30 days1 · 10 · 30
  • Country of originISO 3166
  • To follow → To declare → Declared
Tutored project · ESMT 2026 · team of three

OphtaCare

Ophthalmology practice management, across several clinics.

My role
Modelling, architecture and DevOps, in a team of three: Mouhammad Ndiaye on the back-end, Adama Ngom on the front-end.
What it does
Each role has its own space. The patient books and pays the deposit with Wave or Orange Money, the secretary runs every doctor's diary, the doctor records visual acuity, refraction and diagnosis then writes the eyeglass prescription, and the cashier takes payments at the desk. An appointment is confirmed only once 50% is paid, or the patient's share when an insurer covers the rest. Data is walled off per clinic.
How it is built
A Laravel 12 REST API with Sanctum tokens and a role check on every sensitive route, diagnoses encrypted in the database, mobile payment behind an operator interface. A Next.js 16 front-end in TypeScript. MySQL. When I published the code, I aligned two tables with the models, closed the clinic's statistics to patients and required a signature on payment callbacks.
Languages and tools
PHP 8.2Laravel 12SanctumMySQLTypeScriptNext.js 16React 19Tailwind CSS

Real OphtaCare screens, run locally on 27 Oct 2026. Made-up data. Click a screen to enlarge it.

Also built

Sites, apps and team projects

ProjectMy roleBuilt withWhen
fyxop.comVisit the siteFyxop's website: product pages, sectors, security, 3D scenes, French and English.Full-stackTypeScript · Next.js · React · WebGL / 3D · i18n FR/EN2026 · Live
SK PhotographyVisit the siteBooking and online payment for a professional photographer in Bamako.Full-stackNext.js · TypeScript · Prisma · PostgreSQL · NextAuth · Tailwind CSSLive
Fyxop AcademyTraining and steering platform for Fyxop. Personal app, started from an empty repository.Full-stack, personal appPython · Django REST · TypeScript · Next.js · PostgreSQLStarted Oct 2026
Tech watch, SonatelInternal chatbot that collects tech news from NewsAPI and RSS feeds and summarises it with Mistral AI.Front-end internReact · Tailwind CSS · Mistral AI · NewsAPI · RSS08 → 12.2025
SamaCloud · CADEVCodeExchange platform for African developers, built by a team of five for the CADEV contest by Systalink Sénégal. My module: the deployment engine. It clones a repository, builds it with Nixpacks, runs it in an isolated Docker container, and Traefik serves it on its own HTTPS subdomain.Deployment engineGit · Nixpacks · Docker · Traefik · Laravel · Angular · MCP10.2026
ChantierSNCodeFlutter mobile app for local authorities to follow infrastructure works in Senegal: progress, budget, delays and alerts (SDG 9).Mobile, soloDart · Flutter06.2026 · ESMT
Distributed management platformMicroservices for running a company: asynchronous messaging, fault tolerance, monitoring.Back-endJava · RabbitMQ · Docker · nginx · PostgreSQLESMT

How I work

Specify, ship, prove it holds.

Delivery in numbered lots

Every delivery starts as a written list of goals and business decisions. It ships with its tests, gets deployed, then committed. FIDIS went from lot 1 to lot 53 this way.

AI as a team I direct

On ALPHA, Claude and a team of AI agents write the code sprint by sprint while I hold the architecture, the infrastructure and the acceptance. Every sprint lands as pull requests: 24 merged in October 2026. On SecuFin V2, I write the front-end and prompt the back-end.

Security is a personal liability

A breach that reached a bank through my platform would engage my own liability. So FIDIS isolates each bank in its own schema, encrypts sensitive fields, checks every action against a role matrix and keeps an audit trail written in plain French.

Production rules I don't negotiate

  • Never copy a local environment file to a server.
  • Commit after every delivery, from the server that runs it.
  • Before trusting a restore, compare file fingerprints.
  • Close every port the product does not need.
  • Run the tests before the deployment, not after.

Languages and tools I ship with

Languages

Python · TypeScript · JavaScript · PHP · SQL · Dart · Java · Bash

FIDIS, ALPHA, Riskless, fyxop.com

Back-end

Django REST · Laravel · FastAPI · Celery

FIDIS, ALPHA, Academy, Riskless

Front-end and 3D

Next.js · React · Angular · Flutter · Blade · Tailwind CSS · Three.js

FIDIS, fyxop.com, SK Photography, this site

Data

PostgreSQL (schemas, RLS) · MySQL · Redis · Prisma

Schema per bank on FIDIS, Row-Level Security on ALPHA

Infrastructure

Docker Compose · nginx · Caddy · Traefik · Nixpacks · Uptime Kuma · Linux · Git & GitHub

FIDIS and ALPHA on Linux VPS, SamaCloud deployment engine

AI

Claude API · AI agent teams · Mistral AI

Report drafting, regulatory assistant, agent teams

Path

Built in Dakar, step by step.

Experience

  1. Co-founder & CEO · Fyxop, Dakar

    Software company: FIDIS and Riskless in production, ALPHA in pilot with a bank, SecuFin in rebuild, plus the company website. I lead the products and write or direct the code.

  2. Front-end developer intern · Sonatel headquarters, Dakar

    Built a tech-watch chatbot for internal teams: articles collected from NewsAPI and RSS feeds, summarised with Mistral AI, in a React and Tailwind interface.

Education

  1. ESMT Dakar · Professional bachelor's (LP3), Distributed Application Development

    Telecommunications and computer science. Thesis on FIDIS, a multi-tenant SaaS for internal control and regulatory compliance: 17/20, mention Très bien.

  2. Baccalauréat, experimental sciences

    Lycée Serigne Modou Bousso Dieng.

Download my CV (PDF)
Portrait of Pape Souleymane Ndao
Pape Souleymane Ndao · Dakar, Senegal

Contact

A product to build, a process to secure?

Write to me directly or use the form. I'm open to new opportunities in Dakar, on site or hybrid, in finance and beyond.