Hello, my name is
Aleksandra
Haddad
I’m a fullstack developer with a heavy bias toward the backend. I automate everything, push AI to its limits- I built my own personal assistant before it was cool- yet I still crack LeetCode for fun.
featuredintegrationstandaloneconcept
A little showcase of projects
Some things I built because I had to. Most things I built because I couldn't stop thinking about them.Second brain. Personal assistant. Occasional pain in the ass.
KISUKE
A multimodel AI assistant built on Celery, Redis, and async queues — no slash commands, no babysitting. Drop anything in and he figures out what it is, where it goes, and when to bring it back. He manages his own context, routes information to the right database by type, and runs daily aggregation so nothing falls through the cracks. Before anything sensitive hits a cloud model, a sanitization layer strips it first. Second brain. Personal assistant. Occasional pain in the ass.I used to lose things constantly — good ideas, recipes I found, articles I meant to read, calls I had to make. Sticky notes, open tabs, texts to friends as human bookmarks. It worked until it didn't.
Kisuke solved it properly. He's a multimodel AI assistant that does everything — chat, task management, reminders, briefings, knowledge capture — without a single slash command. Drop anything in, no formatting required. He figures out what it is, where it goes, and when to bring it back. Ask for a dinner idea and he surfaces the recipe you sent him last week. Open your evening brief and that article you never had time to read is waiting. Two weeks after you mention your grandma's operation, he starts pinging you to call her. Schedule something without giving him enough to work with and he switches into pain-in-the-ass mode until you do.
The architecture exists to make all of that seamless: context compressed at model-specific thresholds, information routed to the right database by type, two-tier daily aggregation so nothing falls through the cracks. Before anything sensitive hits a cloud model, a sanitization layer strips it. Kisuke is useful precisely because he's invisible.
Built on a mixture of models, Celery, Redis, PostgreSQL, and Docker. Local routing layer coming next.
An alarm you actually can't ignore.
The Wakeup Caller
It calls. It briefs. It will bother me until I prove I'm awake. It's integrated into Kisuke.Every morning it calls me. Not a sound — an actual phone call. It pulls the fresh morning brief Kisuke has ready, reads it out over TTS, somwhere along the line generates a random number sequence I have to type back to prove I'm awake. By the time we are done that, I'm at least semi awake and I already know what matters today.
Built for the Progress x GitNation Hackathon
CrowdShift - AI audience intelligence platform.
An AI audience-intelligence platform that gives speakers a living brief of who's in the room — from ticket #1 to showtime. Attendees can submit pre-talk questions. Speakers can reach back (organizer-gated). Organizers and sponsors get role-filtered views.Conference speakers prepare talks weeks in advance for an audience they've never seen — the first real feedback arrives during Q&A, when it's too late to adapt. CrowdShift closes that gap by turning registration data, which already exists in every ticketing system, into live audience intelligence.
As attendees register, CrowdShift snapshots the audience at capacity milestones (25/50/75/100%) and tracks how it evolves: a talk that starts senior-heavy can be 55% junior developers by sold-out. A timeline slider lets speakers scrub through these snapshots and watch the demographics shift in animated charts. At any point, an AI agent (Gemini) reads the current snapshot and generates a structured brief — who's in the room, what changed since the last milestone, and concrete recommendations like which comparisons to lead with and which deep-dives to cut.
The product serves three roles with strictly separated data access. Speakers see aggregate demographics and pre-submitted, upvotable attendee questions for their own talk. Organizers get the full 500-row attendee grid with live filtering. Sponsors see anonymized cohorts only — segments under five people are suppressed (k-anonymity), and the separation is enforced server-side with role-scoped endpoints and token auth, not hidden in the UI. Attendees participate too: with just a ticket ID they can submit questions to speakers before the event, creating a feedback loop between the room and the stage before anyone walks on it.
Built in 24 hours for the Progress x GitNation hackathon: React + TypeScript + Vite frontend on KendoReact (Grid, Charts, Slider, and 10+ components, fully re-themed with a custom dark/light design system), FastAPI + SQLite backend with 500 seeded attendees whose registration behavior encodes realistic demographic waves, and a brief-generation pipeline with structured JSON output, caching, and a rules-based fallback so the demo can't fail on a flaky API call.
Why spin up a heavy Docker daemon for a vector DB when 80 lines of C++ can search my notes in microseconds?
Kisuke Vector Engine
An ultra-lightweight, high-performance in-memory vector search engine written in modern C++ with native Python bindings via pybind11.Architected explicitly to handle semantic context retrieval and similarity matching for local knowledge bases (such as Obsidian vaults) without the resource overhead of heavy, daemon-based vector databases.
This engine utilizes zero-copy memory mapping to scan high-dimensional dense vectors at hardware speed, exposing a clean, deterministic API directly to Python pipelines.
Because manually updating a portfolio is exactly the kind of boring stuff worth automating.
The Portfolio That Maintains Itself
Static site. Zero manual updates. Fully automated from repo to deployment.GitHub Actions parse project metadata from repo files. Medium's RSS feeds article data in automatically.
A daily CI/CD job triggers full rebuilds — and so does every git push. The entire stack is stateless and declarative: no database, no manual updates, just automated pulls and static generation.
Deployed on AWS using S3 + CloudFront + Lambda, staying within free tier limits. Even the contact form runs through Lambda — no backend server, just functions doing exactly what's needed and nothing more.
You're looking at the output.
Frontend for Kisuke AI
Kisuke Shop
Kisuke Shop is where my AI assistant shows his work — stats, achievements, skills, memory, and a running record of how he actually helps me.Kisuke — my personal AI assistant — does his best work invisibly: routing dropped-in notes to the right database, compressing his own context, firing reminders weeks after a passing mention. The problem with invisible work is that nobody, including me, ever sees it. Kisuke Shop is the storefront. In Bleach, Urahara's candy shop is an unassuming front for something far more powerful; same idea here.
The Shop turns Kisuke's internals into something you can browse: live stats ([X tasks handled, Y reminders fired, Z items captured] and counting), an achievement system that gamifies his track record, a skill tree of what he can do, and a window into his memory — what he knows, how it's organized, and what surfaced back when it mattered. Instead of claiming 'my assistant is useful', the Shop shows the receipts.
Everything renders from Kisuke's gateway API at kisukeproject.pl, which sits in front of his Celery/Redis task pipeline. The frontend stays read-only and dumb on purpose: Kisuke owns his data, the Shop just displays it. That separation means the same sanitization layer that strips sensitive data before it reaches cloud models also decides what's safe to put on a public dashboard — privacy enforced at the source, not in the UI.
Built with React + TypeScript + Vite on top of the existing FastAPI backend. It's the public half of a system I use every single day — which makes it the rare portfolio piece with real production data behind it instead of seeded demo rows.