Explore
hamdi.bz@proton.me
Proof of Work

Built around the problem.

Every project below is either live in production for a real business, or a working prototype built to test a real idea.

RentMage

Built for a Montréal apartment business: one system for the data, the website, the listings and the bookings.

Solution

Landlord spreadsheets are imported once and cleaned into units, prices, promotions and photos. From that one source, the system builds the public rental pages, the listings handed to the Muse marketplace agent, and the booking links. A renter answers five questions, picks a viewing time and books, so the only thing left for the agent is to show up.

Business Impact

A new spreadsheet no longer means rebuilding each apartment in several tools. Prices, photos and links stay in sync, visitors book their own viewings, and the street address is shared only once a viewing is confirmed.

Technologies

An XLS data collector and a photo collector feed a Python and Flask rental poster. A Muse API, described with OpenAPI, serves the listings, and a Cloudflare Worker with D1 and R2 runs the public site and the booking. I build it with RAT, an internal agent orchestrator that is still evolving, and I am integrating JEV, a small decision layer whose API access is validated. The map world and its characters are a prototype in progress, made with Blender, Meshy and Rive.

Problem, approach & technical stack
The Problem

Every new landlord workbook meant the same work again: units, prices and promotions copied into listings, photos matched by hand, and each apartment rebuilt on a website and on a marketplace. Booking a viewing was a back-and-forth of messages.

Why the Old Workflow Failed

The same apartment lived in several tools, so one change meant several edits. Visitors could not book on their own, and the street address was either handed out too early or kept from people who needed it.

How it works
  1. 01 · CollectOne source of truth

    The poster imports the workbooks, keeps every version, and matches photo sets to units.

  2. 02 · PublishPages, listings, links

    A signed full snapshot updates the public site. The site returns a link for each unit, and that link goes into the listing copy.

  3. 03 · BookFive questions, a time

    The renter gets a match score, picks a slot, and the viewing lands in the owner's calendar.

The world and the characters

Around the working site I am building a map of Montréal districts with characters that live in it. Raat is the first, a rat who shows up at the key moments of the live site in pixel art. The map and the character animation are prototypes still in progress.

Doc Chaser

Designed and deployed for a residential leasing agency in Montreal.

Solution

A tablet/phone-first web app that captures a client's info, ID, and signature on the spot (a QR-code handoff covers the desktop case, since a PC has no camera), auto-detects which legal form the building requires, fills it, creates a named Google Drive folder, and emails the client anything that couldn't be collected in person.

Business Impact

What used to be a multi-day email chase becomes a same-visit close. The client finishes cleanly while the decision still feels good, instead of sitting with an unfinished application and enough time to change their mind.

Problem, approach & technical stack
The Problem

The slowest part of closing a lease is all the paperwork. An agent emails a document checklist and waits days for scattered replies, while the client has time to keep browsing other units and talk themselves out of the one they just saw.

Why the Old Workflow Failed

Every building requires one of three different legal rental-application forms, and every applicant or guarantor on a lease needs their own filled copy. Selecting the right form, filling it correctly, and organizing the resulting files was manual work an agent repeated after every single visit.

Built With

Python, Flask, Google Drive/Docs/Gmail APIs, automated PDF form-filling, deployed and running in production on its own VPS and domain.

RecruiterAI

Solution

A tool that takes a job description and a stack of resumes and produces a grounded, quarter-by-quarter projection of how each candidate's first year might unfold, plus sharp interview questions, deliberately with no score and no ranking, just material to reason with.

Business Impact

Turns hiring from a leaderboard exercise into an actual profiling process, judgment support a manager can explain and defend later on.

Problem, approach & technical stack
The Problem

A hiring manager is judged on whether the person they picked actually works out. A resume alone doesn't show that.

Why the Old Workflow Failed

Existing screening tools either rank candidates behind an opaque score, or leave the manager to imagine unaided how someone will actually perform. Neither gives a defensible basis for the decision.

Built With

Python, Flask, OpenAI API, PDF resume parsing.

Listing Photo Pipeline

Solution

A script that runs each raw photo through an AI image model with a fixed editing instruction and returns a polished, listing-ready image automatically.

Business Impact

Editing time per photo drops from minutes to seconds, at roughly six cents a photo, the first AI system put into live, daily use at work.

~6¢
Per photo, edited
Minutes → seconds
Editing time, per photo
1st
Live AI system shipped at work
Problem, approach & technical stack
The Problem

Every rental listing needs photos that look professional, but editing raw phone photos by hand is slow, and it repeats for every unit, every listing, every week.

Why the Old Workflow Failed

Manual editing in an external app cost real minutes per photo, time that scales directly with how many units are on the market at once.

Built With

Python, OpenAI's image API.

AskSQL

Solution

A tool that takes a plain-English question, writes the real SQL, runs it against the actual leasing database, and answers in plain English, always showing the underlying query so the answer stays checkable.

Business Impact

Anyone on the team gets a straight, verifiable answer from real data in seconds, without learning SQL or waiting on whoever normally runs the reports.

Example query

Which buildings have a 1 bedroom under $1,600?

SELECT name, price_1bed
FROM buildings
WHERE price_1bed < 1600;

The answer stays checkable. The underlying SQL is shown alongside it.

Problem, approach & technical stack
The Problem

Answering a simple business question, "which units rent under $1,600," "how many deals has this agent closed", means opening a spreadsheet or a CRM and digging.

Why the Old Workflow Failed

Structured business data is only useful to whoever already knows how to query it. Everyone else waits on that person, or guesses.

Built With

Python, OpenAI's API (or a fully local Ollama model), SQLite.