Backend-focused full-stack engineer

Mustafa Kemal Vural

Every build is a Mark I.

Ship it, find what breaks, build the next one better.

I take products from an empty repository to production.

Always open to growth, new ideas, bigger projects and the right offer.

Projects

01 / 08

Nexein

An AI career platform that scores your CV and finds the jobs that fit it.

Nexein analyses and scores a CV, matches it to open roles by meaning rather than keywords, and coaches the user through an in-app AI assistant, in six languages.

Languages
6
Tests in CI
1,708

Next.js, TypeScript, Supabase, Vercel AI SDK. Live in beta.

02 / 08

Built one after another, each harder than the last.

webhook-verify

Stop forged webhooks before they reach your code.

A Spring Boot starter that checks Stripe, GitHub, Paddle and generic HMAC signatures on the raw request bytes, before the body is parsed. Tested against GitHub's own published example signature; a single changed byte fails.

Signature schemes
4
Tests
57

Java 25, Spring Boot 4.1. On Maven Central.

03 / 08

audit-chain

An audit log that exposes any edit.

Each record is chained to the previous one with HMAC-SHA256. Edit a past entry, remove one or cut off the end, and verify() points to the exact record where the chain broke.

Artifacts on Maven Central
4
Tests
138

Java 25, Spring Boot 4.1. On Maven Central.

04 / 08

idem-client

Retry a payment call without charging the customer twice.

Keeps one Idempotency-Key across reactive retries in Spring WebFlux, so a provider that honours the key processes the payment once, even after a dropped connection.

Key across every retry
1
Tests
84

Java 25, Spring Boot 4.1, WebFlux. On Maven Central.

05 / 08

orfora

Cut LLM costs without cutting quality.

Sends each request to a model sized for it, decided by one embedding and no extra LLM call. On its 40-example evaluation set, 45% of requests went to the cheap model and none of the hard ones did.

Sent to the cheap model
45%
Hard requests downgraded
0
Tests
154

TypeScript, no runtime dependencies. On npm.

06 / 08

divan

A council of AI models for hard decisions, with a person making the final call.

Seven models debate an idea in structured rounds built to counter flattery and false confidence, then hand the decision back to you. One measured full session: 28 model calls, $0.71.

Seats
7
One measured session
$0.71

Next.js, LangGraph, TypeScript. In progress.

07 / 08

llm-music-recommendation

One agent or five? My thesis measured which to use when.

I built the same playlist recommender twice, as one agent and as five cooperating agents, on the same model, data and retrieval code. The single agent did better on simple requests, the five agents on requests with several constraints.

Architectures
2
Scenarios
4
Agents
5

Python, FastAPI, PostgreSQL with pgvector, LangChain. B.Sc. thesis, Riga Technical University.

08 / 08

veron

See what a change will break before you ship it.

An impact-analysis tool that reads a TypeScript codebase through the compiler and maps what depends on what, keeping what it proved apart from what it could not resolve. It runs on your machine and never writes to your code.

Tests in CI
502
Writes to your code
0

TypeScript, SQLite, 3D map. In progress, private repository.

About

I studied Computer Systems at Riga Technical University. I work as a software engineer at ETB Group, and outside work I build my own projects, from published libraries to LLM systems.

Experience

Software Engineer, ETB GroupSince 2024

Personal projectsLibraries on Maven Central and npm, LLM systems

Education

B.Sc. Computer Systems, Riga Technical University2026

Stack
Languages
  • TypeScript
  • Python
  • Java
  • SQL
  • Go
Frameworks
  • Node.js
  • NestJS
  • Next.js
  • Spring Boot
  • WebFlux
  • FastAPI
  • LangChain
  • LangGraph