Chakib Belgaid Explore garden

A living notebook

Chakib Belgaid

I’m a product engineer with a Ph.D. in software engineering. I build AI products and developer tools, with a long-running interest in how we measure the energy software uses.

Product engineer, Ph.D. AI products, developer tools, and how we measure the energy software uses.

Selected workExplore the gardenLow-end mode

Scroll to explore the garden and projects.

Whisperbook · Wattch Core

The notebook garden in autumn, with a reading pavilion, energy observatory, atelier, and greenhouse.

An idea, drawn and brought to life.

Selected work

The boundaries matter

An offline promise should be enforced by the app. An energy claim should lead back to its source data. Those choices shape the systems I build as much as the screens you can see.

An offline promise should be enforced by the app. An energy claim should lead back to its source data.

Recent projects and experiments

October 2026 · Applied AI, local inference, and reproducible evaluation.

Public project · offline OCR in the browser

BP Log · bp-tracker

A phone web app that reads a blood-pressure monitor’s display from a photo, then lets the user check and correct the values before saving. Image-processing rules handle the display layout; a 10,123-parameter CNN trained on synthetic digits runs in plain JavaScript with a 54 KB weights file.

Published evaluation: 91% complete readings on 55 photos from one monitor; 99.5% digit accuracy on 187 held-out digits. The full reading set guided pipeline development, so it is not an independent holdout. Median phone latency: 268 ms across three runs on an Android 10 phone.

Read project and evidence ↗

Professional work · demonstrator and funded proposal

AgentDiet

I conceived an agent-governance project at MCQ Scan: signed Biscuit tokens, attenuated delegations, and local Datalog checks for tool permissions. I built a Python/FastAPI demonstrator and prepared the technical proposal, market analysis, budget, and project plan. AgentDiet received a 2026 Hyper Open X grant funded by France 2030.

The demonstrator validates simulated authorizations; MCP/A2A integration is the project target.

Read project and evidence ↗

Professional work · structured-output evaluation

Store Chat

A clothing-shopping assistant with Llama 3.1 8B LoRA, local vLLM inference, and Pydantic business validation. I evaluated constrained-decoding tools and integrated LM Format Enforcer to enforce enum values. Internal evaluation separates 97% structurally valid, enum-compliant requests from 95% semantic accuracy per attribute.

These are internal evaluation results, not a public benchmark. My contribution was tool evaluation and integration, not a custom sampler.

Read project and evidence ↗

Public source · self-hosted audiobook studio

Whispbook · web studio

A React/FastAPI studio for importing and editing documents, assigning character voices, and generating chapter audio with Kokoro or Chatterbox. It exports M4B audiobooks, subtitles, and Python scripts that preserve the edited text and synthesis settings.

Separate from the Android app. The current web app does not integrate the separate model-based speaker-attribution experiment.

Read project and evidence ↗

Personal experiment · mobile diffusion inference

Z-Image-Turbo · Android

Porting image generation to Nothing Phone 3: 512×512 output, a comparison of 100 runtime/precision configurations, INT8/INT4 quantization, and a QNN w8a16 path on the Hexagon NPU. The work includes numerical checks, activation-saturation diagnosis, and calibration across all diffusion steps.

Experimental work described in my October dossier. Single-block timings do not establish an end-to-end generation speedup; no public repository is linked here.

Public benchmark · OnePlus 6T

Pocket TTS Android Benchmark

A pinned English INT8 Pocket TTS conversion running through sherpa-onnx on Android. On a OnePlus 6T with Android 11, CPU and two threads, the recorded real-time factors are 0.94, 1.01, and 1.06 for 2, 4, and 8 diffusion steps. Audio samples and machine-readable measurements are published.

One observed run per setting; not averages or a Whisperbook benchmark. RTF is generation time divided by audio duration.

Read project and evidence ↗

Public experiment · negative result documented

Speculative decoding · MLX

Compared Qwen3 4B with a Qwen3 0.6B draft model on 40 labeled speaker-classification samples. Both paths reached 97.5% accuracy, but speculative decoding was 28.3% slower in the recorded protocol.

Short outputs and model loading inside each timed call limit the conclusion. This is not a steady-state serving benchmark.

Read project and evidence ↗

Local AI on Android

Whisperbook

An Android app that narrates your EPUBs and PDFs on the device.

Android test APK · v0.1

I built Whisperbook so you can listen to your own EPUBs and PDFs on Android, follow the text as it plays, and give different speakers different voices. The book and its audio stay on the device.

Project status

Installable test build for Android 8+ on arm64. The public v0.1 APK is debug-signed for direct testing, not Play Store distribution.

The source has evolved since v0.1; the release notes describe the downloadable build.

Outcome

Book import, chapter playback, local narration, and MP3 export in one reading flow.

Performance evidence

On-device latency, narration speed, and peak RAM: no reproducible device benchmark is linked yet. The browser voice demo cannot establish these numbers.

Scope and limits

The browser passage is an illustration using your device’s voices; it is not the Android app’s narration engine.

What I built

I took it from the reading flow to the audio pipeline: importing books, finding chapters and speakers, assigning local voices, preparing narration, keeping playback in sync with the text, and exporting an MP3.

Inside Whisperbook

Four steps from a book to its audio.

  1. Book You import your own EPUB or PDF on the phone. Privacy holds at the system boundary: the app has no runtime network permission.
  2. Chapters Chapters and their speakers are found in the text. Audio is prepared in small segments, so the opening chapter plays while later ones are still being narrated.
  3. Voices Each speaker is given a different local voice, so a conversation reads as a cast. Narration runs on the device.
  4. Audio Playback follows the text as it plays, and the finished book can be exported as an MP3.

Read the source on GitHub ↗

The decision that shaped it

Privacy had to hold at the system boundary, so the Android app has no runtime network permission. It prepares finalized audio in small segments: you can start listening to the opening chapter while later ones are still being narrated.

Kotlin · Jetpack Compose · Supertonic 3 · Media3

Read Whisperbook on GitHub ↗
Hear a passage in your browser

Hear an excerpt in your browser’s local voice. Whisperbook uses its own on-device narration on Android.

Whisperbook's Android player showing the current chapter, the narrating voice, and playback controls
The player. Books and narration stay on the phone. View full screenshot

Systems and energy

Wattch Core

Linux energy traces for command-line, Python, and VS Code workflows.

Build from source

Wattch Core helps developers bring machine energy data into their workflow. A Rust daemon reads Linux hardware counters and makes the raw trace available to command-line, Python, and VS Code tools.

Project status

Source-available developer tooling. Build the daemon and clients locally; the documented VS Code setup runs in an Extension Development Host.

No GitHub release assets are published, and the project documentation does not link a Marketplace release. Checked 6 October 2026.

Outcome

A measurement daemon and clients that capture, validate, and replay raw energy traces.

Performance evidence

Daemon CPU, memory, and sampling overhead versus a native C RAPL reader: no reproducible comparison is linked yet. Synthetic traces validate the workflow only.

Scope and limits

The screenshot uses synthetic test data. The garden meter estimates this page’s rendering cost; it is not a Wattch hardware measurement.

What I built

I designed the acquisition boundary, protocol, and validation workflow, and developed the implementation with AI coding assistance. The Python client includes a pyJoules-compatible API, a profiler with explicitly labeled time-share attribution, and Energy Tests in VS Code.

The decision that shaped it

I wanted a result you could inspect later. The daemon collects data; clients interpret it. Raw traces remain replayable, and deterministic test data is marked as synthetic rather than presented as a hardware reading.

Rust · Linux RAPL · Python · VS Code

Read Wattch Core on GitHub ↗
Measure what drawing this page costs

Watch what drawing this page costs your device: CPU and GPU time, and the estimated carbon of that work. Enable the garden preview to measure it.

The Energy Tests panel in VS Code listing results from a deterministic test run
Energy Tests on a deterministic run. These synthetic values check the workflow, not real energy use. View full screenshot

Current work and background

I start with the question

Can a phone narrate a book without uploading it? What can an energy trace actually tell us? I work from questions like these through the interface, model or measurement system they need. I like making the whole thing usable, then checking whether it does what I claim.

How I work

Python is my strongest language. I build APIs and AI workflows with FastAPI, Django, Pydantic, React, and TypeScript, and deliver with Docker, GitHub Actions, and GCP.

My inference experience includes local vLLM, MLX on Apple Silicon, LoRA, quantization, and calibration. I distinguish that experimental work from specialist operation of GPU LLM servers in production.

I use AI coding assistants regularly and review and validate their output. Wattch’s Rust implementation was developed with AI assistance; my Rust skill is reading and understanding code, not Python-level fluency.

  1. 2024–now

    Lead AI engineer, MCQ Scan

    I lead a two-person technical team under the CTO, across multi-agent workflows, APIs, interfaces, and deployment. A dependency graph, smaller-model routing, and caching reduced end-to-end workflow processing time by 60% in internal measurements.

  2. 2022–2024

    Research engineer, Inria · ANR project with Qarnot Computing

    At Inria, on an ANR project with Qarnot Computing as the industrial partner, I contributed to deploying PowerAPI on Qarnot’s infrastructure and reduced its binary size by roughly 300×.

  3. 2018–2022

    Ph.D., University of Lille and Inria

    I studied how to measure and improve software energy use, grounding the work in experiments rather than assumptions.

  4. 2014–2018

    Co-founder and CTO, Funecs

    I co-founded a serious-games advertising startup, led six employees and two interns, and delivered two Unity games after winning Ooredoo T-Start in 2014. Our 2016 national campaign attracted more than 300,000 unique subscriber numbers.

Write to me

I’d like to hear what you’re building.

Email me

Back to the top ↑