2
2
Morocco
2+ years of experience
I build AI systems where the model reads and the code decides — and I publish the measurements, including the ones that did not work. Recent: a doorstep-scam protection on the Ring Partner API (261 tests, 48 mutations, the misses published next to the successes), a tamper-evident decision recorder for agents measured on NVIDIA Nemotron, and an interview analyser that tells a rehearsed answer from a spontaneous one at 0.89 balanced accuracy. Finalist at the KeeperHub Agent Economy hackathon. Engineering student in Casablanca, Beninese. I like problems where being wrong is expensive, because that is where measurement earns its keep.

A one-way video round is broken for the same reason it is convenient: the questions are fixed. They circulate, candidates rehearse, and a recruiter watches twenty takes of the same prepared speech. Probe writes one question in advance. Every question after it is made out of what the candidate just said - their own words quoted back, then a request for what only the person who lived it would know. Nothing can leak, because the interview does not exist until they speak. HOW IT DECIDES WHAT TO ASK After every answer, code measures four signals of delivery against the same candidate a minute earlier - their own warm-up, never other people. A frozen model turns those into one verdict and one instruction. The language model never sees the numbers and never chooses the instruction; it chooses the wording. The report shows that chain for every answer, checkable against the transcript. It is not a proctor and not a score. Under 45 words it reports a lean rather than a finding, and an interview that measured almost nothing says so rather than reading as a clean one. A flag is a question to ask, never a reason to reject. BUILT ON ASSEMBLYAI Two connections on one microphone: the Voice Agent API carries the conversation, Realtime Streaming carries the word-level timings the measurement rests on. Most projects keep the text and discard the timings; here they drive every decision. Turn detection is tuned in two directions - 2.2s after a sentence that landed, 9s after one that trailed off. Six questions, six languages, one link per candidate that works once. 178 tests.
30 Sep 2026

In a remote interview, a candidate can read an AI-written answer aloud and sound fluent. A transcript of a read answer looks exactly like a spoken one, so text detectors cannot help. Unscripted listens to how an answer is built. Speech made up on the spot repairs itself: "uh", repeated words, restarts, clauses run together. A text read aloud comes out finished, with longer words and longer stretches between pauses. Speechmatics' Realtime API gives the timing of every word and tags every hesitation as the candidate speaks, and that is what the detector reads. The interview opens with a warm-up nobody can prepare for, which captures how this candidate speaks when they cannot be reading. Every later answer is compared with it on four signals: long words, repairs, commas and runs of words between pauses. The recruiter gets a report with a chart of every answer and, for each flagged one, the signals that pushed it over the line. The detector was measured, not guessed. A first version judged rhythm alone; a real test showed it missing read answers. The operator then recorded sessions marking every answer as read or spontaneous. On sessions it had not seen, the new detector reached 0.89 balanced accuracy against 0.70 for the old one, and flagged none of the spontaneous answers. It is built so it cannot be used to reject someone. Remarks only say an answer is worth revisiting in a second interview. Short answers are not judged. The candidate never sees a score, audio is never stored, and reports sit behind a recruiter token. Honest limits: one speaker, 20 answers, signals chosen after looking at the data, no blind test yet. Every report says so. FastAPI, vanilla JavaScript and an AudioWorklet, Speechmatics Realtime API; 206 automated tests.
16 Sep 2026