Five things on this page are broken on purpose, each one a small version of a real bug from the work below. Find them if you like. The counter is in the corner.
01The deck
Pick a card. Each one is something I built or won.
the gold one is the one I'd frame
FraudLens AI
Hackathon build, team lead2026
Reads a scam in English, French or Kreol and shows you the exact words that gave it away.
Tests
631
Precision
100%
Team
5
Winner, Finnovate 2026No. 01 / 11
KJ
Legendary · No. 01 / 11
FraudLens AI
Led five people over 72 hours. I owned the backend and the Chrome extension. The rules decide the verdict, the AI only reads language, and it still works when the AI is down.
Spots fishing boats that switch off their trackers, and tells three patrol boats where to look first.
Sea
2.3M km²
Patrols
3
Team
5
Judge's Choice, Build with GemmaNo. 02 / 11
KJ
Epic · No. 02 / 11
BlueNet
Code flags suspicious vessel behaviour, then a Gemma agent investigates each one and ranks the cases for the coast guard. I led the team and built the backend.
Black Reef
Company, CEO2026
The hackathon team that didn't split up. Five of us, building software for clients in Mauritius and abroad.
Founders
5
Based
Mauritius
Started
Oct 2026
CEO and Co-founderNo. 03 / 11
KJ
Epic · No. 03 / 11
Black Reef
Websites, mobile apps and custom software, at a fixed price agreed upfront. The clients own everything we build.
The certificate. The stored procedures came later, and there were a lot of them.
Issued
Feb 2026
By
Oracle
Topic
SQL
Oracle AcademyNo. 11 / 11
KJ
Common · No. 11 / 11
Database Foundations
Oracle Academy Database Foundations.
01 of 11
FraudLens AIWinner, Finnovate 2026
Scroll to turn the deck. Click a card to pick it up.
Winner, Finnovate Hackathon 2026CEO and Co-founder, Black ReefJudge's Choice, Build with Gemma2 client sites live1st Runner-Up, Middlesex Speed Codinga First in every graded moduleplacement from summer 2027Winner, Finnovate Hackathon 2026CEO and Co-founder, Black ReefJudge's Choice, Build with Gemma2 client sites live1st Runner-Up, Middlesex Speed Codinga First in every graded moduleplacement from summer 2027Winner, Finnovate Hackathon 2026CEO and Co-founder, Black ReefJudge's Choice, Build with Gemma2 client sites live1st Runner-Up, Middlesex Speed Codinga First in every graded moduleplacement from summer 2027Winner, Finnovate Hackathon 2026CEO and Co-founder, Black ReefJudge's Choice, Build with Gemma2 client sites live1st Runner-Up, Middlesex Speed Codinga First in every graded moduleplacement from summer 2027Winner, Finnovate Hackathon 2026CEO and Co-founder, Black ReefJudge's Choice, Build with Gemma2 client sites live1st Runner-Up, Middlesex Speed Codinga First in every graded moduleplacement from summer 2027Winner, Finnovate Hackathon 2026CEO and Co-founder, Black ReefJudge's Choice, Build with Gemma2 client sites live1st Runner-Up, Middlesex Speed Codinga First in every graded moduleplacement from summer 2027
02Work
The company I run, and the two internships before it.
ask me about the one-column fix
After FraudLens won Finnovate, the five of us kept going and started a software studio. Black Reef builds websites, mobile apps and custom software for businesses, at a price agreed before any work starts.
e6392b3Five co-founders, the same team that built FraudLens. The people on a client's first call are the people who build the product.
7e9424eFixed-scope written proposals. The client owns the code, designs, domains and accounts from day one.
860520eBuilt the company site: Next.js 16, statically prerendered, with one public endpoint for the contact form, validated server-side, rate limited and origin-checked, behind strict security headers.
I built the attendance module for SmartERP, ITL's ERP product, from the schema up. Next.js on the front, MSSQL stored procedures underneath, deployed under IIS. It's in user acceptance testing now, and ships to ITL's customer companies after that.
The bug I’m proudest of finding
The import ran clean. No errors, no warnings, and about one punch in six was quietly missing. Two doors recording the same employee in the same minute looked identical to the unique index, so it kept one and threw the other away. The fix was one column.
The clock-in device exports a CSV. The import de-duplicated it on a unique index, which sounds safe until two doors record the same person in the same minute.
CREATE UNIQUE INDEX ux_raw_punch
ON raw_punch (employee_id, punch_time)
WITH (IGNORE_DUP_KEY = ON);
12,410 of 14,888 punches imported. 2,478 discarded, and no error raised.One dot is eight punches from a real July file.
b751d2cMulti-company from the session down: every login carries a company ID, every route passes it to the procedures, so one deployment serves several companies.
8a251b3An 8-table schema with one read and one write procedure per table. JSON in, JSON out, errors to an audit table.
9961373Attendance processing runs each employee in their own transaction. A full month, 49 people and 13,487 punches, processes in about 1.5 seconds with no failures.
a39af00Signed HttpOnly sessions with a sliding 30-minute timeout, one live session per user, per-IP rate limiting and a nonce-based CSP.
d253f73Built the same 9-endpoint API twice, in .NET 8 and in Node.js, so the team could decide on leaving ASP.NET MVC with numbers instead of opinions.
ece99b6Built the dashboard: daily KPIs, a filterable roster with CSV export, an exceptions panel and a weekly calendar, with unit and integration tests against SQL Server.
6fc0ac0Redesigned the MUA portal's landing page and components, now in production. Also got the team using Claude Code, which turned days of UI work into hours.
Next.jsMSSQLC# / .NET 8Node.jsIISStimulsoft
My first codebase with somebody else's money on it. I built a fleet management system on my own: around 40 endpoints in C# with Dapper against SAP HANA, the schema behind them, and the React Native app on top.
04ddac1Assets, drivers, fuel logs, service schedules, work orders, reports.
1281aafBearer-token login plus a per-employee permission table that decides which tabs and report cards each person sees.
49e9baaExpo app with dashboard analytics, preventative maintenance scheduling and PDF export.
A scam checker for messages, links and emails, built for Mauritius in English, French and Kreol Morisien. I led the team of five and owned the backend and the extension.
The decision I’d defend in any interview: the language model never decides the verdict. A deterministic engine with about 70 signal codes owns the score. The model only reads language, and it has to quote words that are actually in the message, or its output is thrown away. When the model is down, the rules still return a full answer.
Before the code, a test for you. Eight real-looking messages. Which ones are scams?
73% recall
100% precision
On 84 test messages, with the model switched off.
Message 1 of 8
ScamLegit
MMCB
Your account has been blocked. To unblock it immediately, click https://mcb-secure.top/verify and enter your OTP code.
now
Swipe, tap, or use the arrow keys
Or paste your own message into a small version of the engine
MCB: your account has been blocked. To unblock it immediately, send us the OTP code you received at https://mcb-secure.top/verify
Paste anything. It runs in your browser and nothing is sent anywhere.
85High risk
+25Asks for a one-time code or PINOTP
+12Pushes you to act nowimmediately
+15Threatens your accountblocked
+30Looks like MCB, but the real site is mcb.mumcb-secure.top
+10Domain ending often used for throwaway sitesmcb-secure.top
Wording alone earned 52 points, capped at 45. Scary words are not enough for a high-risk verdict on their own.
630 of 631 backend tests passing.
BlueNet: Ocean Watch
Judge’s Choice, Build with Gemma
Mauritius has 2.3 million square kilometres of sea and three patrol boats. BlueNet helps decide where they go.
Plain code flags the patterns that matter in vessel tracking data: ships going dark in protected zones, two vessels meeting at sea, trawling patterns. Then a Gemma agent investigates each flagged vessel with function calling and writes a ranked case file for the coast guard. I led the team of five and built the backend.
Vessel reporting position Coast guard patrolWatch the protected zone.
Raw TCP in Go, one goroutine per client, mutex-guarded shared state, and a clean shutdown across every connection.
I wanted to understand concurrency rather than trust the runtime with it. It deadlocked, raced on a map and misused a WaitGroup, and I fixed each one by tracing it through the synchronisation model instead of adding sleeps until it stopped.
Paste a suspicious message and watch it explain itself.
sultanmauritius.com
Client site, live
Sultan Mauritius
The bilingual shop I built and launched for a Mauritian drinks brand.
countrymaterial.com
Client site, live
Country Materials
Corporate site for a Tanzanian construction materials company.
Playable, made in Godot
Platformer
A small 2D platformer I made in Godot. Coins, enemies, a knight, and a few ways to fall to your death. It runs right here in the browser.
Arrow keys to move. Click the game once it loads so it hears your keyboard.
05Journey
Three places so far.
Dar es SalaamTanzania
Where it started
I grew up on the Tanzanian coast, which is where the diving started. Years later I came back for both internships: a fleet system at CubeStone, then the attendance module at ITL.
MauritiusIndian Ocean
Where it got serious
First year of Computer Science at Middlesex, with a First in every graded module. Two hackathon teams, two awards, and my first paying clients.
CanterburyUnited Kingdom
Where I am now
Second year at the University of Kent. Looking for a 12-month placement from summer 2027.
06About
Second year at Kent, and the rest of me.
press the keys
University of Kent
BSc Computer Science with a Year in Industry 2026 to 2029
Stage 2 now. Algorithms and Database Systems this autumn, AI and Cyber Security in spring, Web and Software Development in summer. Placement year from July 2027.
Middlesex University Mauritius
BSc Computer Science (Systems Engineering), Year 1 2025 to 2026
120 of 120 credits. Grade 1, a First, in every graded module: systems architecture and operating systems, networking, and information in organisations.
Middlesex University Mauritius
BSc Psychology one year
A year studying psychology, also at Middlesex.
Languages
Backend and data
Frontend
Infrastructure
Press a key to see where I used it.
Spoken English and Hindi natively. Maithili is my mother tongue.
Underwater
I dive. Growing up on the Tanzanian coast and then living in Mauritius does that. The whole skill is staying calm and breathing slowly.
Souls-likes
A lot of FromSoftware, and a lot of time in game engines trying to work out why their combat feels the way it does.
Fedora, KDE
Daily driver, reinstalled more often than necessary. I learn systems by taking them apart.
Films
Everything I watch gets logged on Letterboxd, because otherwise I forget it.
07Contact
Looking for a 12‑month placement from summer 2027. Write to me.