Skip to content

Kristen Kamouh

Now
AI ticketing @ Reliable Design
Study
CS @ NDU — class of '27
Status
Available for new projects
Base
Lebanon — remote-friendly
Kristen Kamouh

About

Designer & Developer in equal measure.

I translate ideas into immersive, performant digital products with a pragmatic full-stack toolchain.

Bio

I'm Kristen W. Kamouh, a full-stack developer and Computer Science student at NDU in Lebanon. I build end-to-end applications for web and mobile, from clean interfaces to robust backends, databases, and AI-powered features.

My work focuses on practicality: clear UX, reliable API design, maintainable systems, and performance that holds up in real use. I enjoy turning complex problems into simple, usable products.

What drives me is the intersection of technology and impact, creating tools that genuinely improve people's workflows and experiences. I'm particularly excited about AI integration and building systems that scale gracefully.

Experience

2+ years

Building digital products end-to-end.

Focus

Full-Stack + AI

APIs, data modelling, applied ML.

Experience

Where I've been building.

The full history is on my CV — these are the roles that shaped how I work.

Full history and references on the CV.

  1. Summer 2026

    Internship

    Software Engineer Intern

    US-based managed IT services company

    Sole developer on an AI ticketing system: ConnectWise Manage integration, local LLM embeddings via Ollama, and vector similarity for duplicate detection.

  2. 2026 — 2027

    Leadership

    Vice President (Incoming)

    NDU Computer Club

    Elected to lead the club across two semesters — hackathons, industry speakers, and a distributed model so more members own the work.

  3. ~2 years

    Healthcare

    Junior Developer

    Baby Sentry

    Backend, database and integrations work on a healthcare EMR platform.

  4. 2025 — Present

    Freelance

    Freelance Full-Stack Developer

    SquaredLabs - Co-Founder

    Built and still maintain a production site end to end, deployment, SEO and direct client ownership.

  5. 2024 — 2027 (Expected)

    Education

    BSc Computer Science

    Notre Dame University – Louaize

    Software engineering, algorithms and AI, with most of the practical work happening in the projects above.

Selected Work

Three systems, built end to end.

The problem, the decision that shaped the build, and what I'd change next time.

Web App01

ORESS

Smart schedule planner & AI academic assistant

Registration at NDU meant hand-building the same timetable spreadsheet every semester just to compare options.

DjangoDRFPostgreSQLRedisDockerCoolifyPlaywright
The problem
Registration at NDU means reconciling a course catalogue, your own constraints and everyone else's advice by hand, every semester. Students were rebuilding the same timetable spreadsheet each term and trading screenshots to compare options.
What I built
A scraper keeps the course catalog up to date, and instead of checking one schedule at a time, the planner builds and compares full timetables automatically, all running on a self-hosted setup that survived a near-total data loss and came back stronger after a security cleanup.
Self-hosted · Docker + Coolify
Catalogue scraperkeeps NDU's course data current
PostgreSQLcourses, sections, your constraints
Timetable enginebuilds every valid combination, not one at a time
Ranked schedulescompared side by side
Pipeline: a scraper keeps NDU's course catalogue current in PostgreSQL, a timetable engine builds every valid combination out of it, and the planner returns ranked schedules to compare side by side. Scraper, database and engine all run on self-hosted infrastructure.
Internship — Sole Developer02

AI Ticketing System

Duplicate detection over a live support queue

One recurring issue arrives as a dozen differently-worded tickets, and keyword search catches none of them.

PythonConnectWise ManageOllamanomic-embedCosine similarity
The problem
A managed IT services team was handling the same underlying issue several times over, because a recurring problem arrives as a dozen separately-worded tickets. Keyword search doesn't catch it, nothing matches literally.
What I built
Every ticket is embedded with nomic-embed on a local LLM stack via Ollama, so nothing leaves the company's infrastructure, and cosine similarity over those vectors surfaces near-duplicates and recurring patterns that share no keywords. On top of the vector layer sits a narrative generator: instead of a wall of tickets, the team gets a written summary of what is actually happening across the queue.
ConnectWise queuelive support tickets
On their own hardware — no ticket text leaves the network
nomic-embedone vector per ticket, via Ollama
Cosine similaritymatches meaning, not keywords
Duplicate clustersone issue, a dozen wordings
Narrative summarywhat is actually happening across the queue
Pipeline: tickets from the ConnectWise queue are embedded with nomic-embed through a local Ollama stack, cosine similarity over those vectors clusters near-duplicates that share no keywords, and a generator writes the queue back as a narrative summary. Embedding, similarity and clustering all run on the company's own hardware, so no ticket text leaves the network.
Data & ML03

World Cup 2026 Analytics

Match modelling and tournament simulation

Per-match predictions can't answer the question people actually ask: who wins the whole tournament?

PythonXGBoostxG modellingMonte CarloDRFReact
The problem
A single match prediction says very little about a tournament. Knockout structure means one upset early cascades through every downstream fixture, so per-match accuracy doesn't answer the question people actually ask: who is likely to win the whole thing?
What I built
An XGBoost model over expected-goals features predicts individual fixtures, then Monte Carlo simulation replays the full bracket thousands of times to turn those per-match probabilities into tournament-level outcomes. Served through a Django REST Framework API with a React front end.
Match historyexpected-goals features per fixture
XGBoostprobability for one match
Monte Carlothe full bracket, replayed thousands of times
Tournament oddswho is actually likely to lift it
DRF + Reactserved through an API to the front end
Pipeline: expected-goals features drawn from match history train an XGBoost model that predicts a single fixture, Monte Carlo simulation replays the whole bracket thousands of times to turn those per-match probabilities into tournament-level odds, and the result is served through a Django REST Framework API to a React front end.

The rest of the work — client builds, side projects — lives at squaredlabs.dev (opens in a new tab).

Contact

LET'S BUILD SOMETHING

Open to freelance projects, collaborations, and full-time opportunities.

Lebanon--:--local time in BeirutAvailable for new projects