Logger
Several sensors per station, with logs sent home over GSM.
- 50+ stations
- 15+ years online
- 0.5B+ records
CTO at Neuroject. From sensor to AI: firmware, platforms and the teams that build them.
I started building websites as a freelancer in 2007, studied electrical engineering with a focus on control systems, and spent my university years building robots, including a 1st place at RoboCup IranOpen 2010.
Since then I’ve built for an electronics and IoT company, a grocery marketplace, an edtech company and a construction-tech company. Today I’m CTO at Neuroject, leading the platform that connects BIM, schedules, budgets and risks for construction enterprises, and bringing AI into it.
Along the way I’ve shipped apps to the App Store and Google Play, hardware that’s still logging data after 15 years, and fixes to open source projects like Gatsby and DefinitelyTyped.

June 2024 – Present
May 2026 – Present
February 2021 – June 2024
August 2020 – February 2021
October 2012 – August 2020
August 2007 – October 2012
Several sensors per station, with logs sent home over GSM.
Embedded hardware and firmware that hold pressure and flow at their setpoints.
Built on STM microcontrollers, for automation on a small footprint.
NFC, RFID, BLE and over-the-air updates. Wireless, with a battery that lasts about 16 months.
Bluetooth proximity check-in, updated over the air with DFU.
CAP 01The alignment layer for construction enterprises: one multi-tenant platform for BIM models, WBS, quantity take-off, bills of quantities, tenders, and 4D progress reports, now with AI for natural-language questions and early risk warnings. I lead it as CTO.
CAP 02AI-assisted R&D tax credit claims for the UK, Ireland, Australia, and South Africa. I work across the FastAPI and pgvector API, the SvelteKit app, and the TypeScript client SDK, and added its security gates: secret scanning, Semgrep, and Trivy on every pull request.
CAP 03Attendance monitoring live at universities in the UK and US. I wrote the firmware for the ESP32 card readers (NFC, RFID, BLE, over-the-air updates) and the nRF52840 Bluetooth beacons, and built the iOS and Android app, the staff dashboard, and a Canvas LTI app. At a single university, it has more than 200 devices online, covers over 100 classrooms and 10,000 classes, and has received over 3 million records in the past two years.
GSM weather stations that take several sensors each and send their logs home. The fleet has been online for over 15 years: more than 50 active stations and over half a billion records.
CAP 05An LMS with live exam proctoring and Azure Face identity checks. I built the user dashboard, an Office add-in that brings live polls and word clouds into PowerPoint and Word, and the product website.
A React Native app on both stores that helps students starting university get to know their course, campus, city, and career options.
Expo · React Native · TypeScripteducation.guide ↗App Store ↗Google Play ↗Online tutoring for every child: diagnostic tests, courses, quizzes, and 1-to-1 lessons over live video. I built the dashboard and the website.
Next.js · MUI · VideoSDK · Uppyschool.how ↗An electronic pressure and flow controller: embedded hardware and firmware that hold pressure and flow at their setpoints. In production.
Hardware · Firmware · Process controlA compact PLC controller built on STM microcontrollers: the board and firmware for automation on a small footprint. In production.
STM · Firmware · PLCAn opt-in flag I added to react-query-kit (31k weekly downloads) so a forgotten query argument fails at compile time instead of at runtime.
TypeScript · React QueryCode ↗Removed a deprecated uuid version from gatsby-cli and gatsby-plugin-sharp that could fall back to Math.random() and was flagged on every Gatsby install.
Node.js · SecurityCode ↗Device telemetry on plain shared PHP hosting: ingest, rollups, alarms with hysteresis, OTA firmware, and reports. No Composer, npm, or build step.
PHP 8 · Vanilla JS · OpenAPIA native macOS app that finds duplicate and look-alike photos by how they look. Fully offline, and nothing is ever deleted.
Swift · SwiftUI · VisionReads matrix keypads as a FreeRTOS task, with built-in debouncing and configurable layouts and pin maps. Portable across microcontrollers.
C · FreeRTOSCode ↗Fixed persisted data being wiped when the app was opened in a second tab, in a store used 82k times a week.
TypeScriptCode ↗The product website for Learning Kit, built for 0&1.
Next.js · AWS Amplifylearningkit.com ↗The product website for Exam Kit, an online exam monitoring system by 0&1.
Nuxt · Tailwind CSSexamkit.com ↗Packets merged into libraries downloaded more than 300k times a week.
| Time | Address | Data | Flags | Reach | Ack |
|---|---|---|---|---|---|
| 2022 | gatsbyjs/gatsby | Removed the deprecated uuid@3.4.0 from gatsby-cli and gatsby-plugin-sharp. That version can fall back to Math.random(), which is unsafe for IDs. npm flagged it on every install. | Security | ★ 56k 163k/wk | ACK ↗ |
| 2022 | nanostores/persistent | Synced storage events only for the store’s own key. Opening the app in a second tab wiped saved data. | Data loss | ★ 383 82k/wk | ACK ↗ |
| 2026 | HuolalaTech/react-query-kit | Opt-in strictVariables: typed query variables become required at the call site. A forgotten argument compiled fine and only failed at runtime. | Type safety | ★ 486 31k/wk | ACK ↗ |
| 2025 | DefinitelyTyped/DefinitelyTyped | Typed the optional RegExp filters on the Forge Viewer’s getPropertyHashes. Calls that Autodesk documents failed to type-check. | Type safety | ★ 51k 22k/wk | ACK ↗ |
| 2021 | microapps/gatsby-plugin-react-i18next | Added forwardRef support to the localized Link. Refs passed to localized links were silently dropped. | Bug | ★ 119 5.4k/wk | ACK ↗ |
At Neuroject I’m bringing AI into the platform construction enterprises plan with: natural-language access to project data, and early warning on schedule and cost risk, so problems surface weeks before they hit the site.
Before that, at SmartClaim, I worked on AI-assisted R&D tax claims built on FastAPI, OpenAI and pgvector.
The chart is illustrative, not client data.
Waiting for a rising edge. Write about a platform, a device or a team that needs building.
moe@babazadeh.dev