Hursh Javeri
I build AI systems that refuse to act until they are certain.
Third-year BSc Information Technology. Computer vision on the edge, safety guards that default to doing nothing, and pipelines that ship in shadow mode until the numbers earn the right to act.
| TS | FRAME | CLASS | CONF | FLOOR | ACTION |
|---|---|---|---|---|---|
| 14:32:07.412 | 8821 | EMPTY | .562 | .800 | refused |
| 14:32:07.445 | 8822 | EMPTY | .687 | .800 | refused |
| 14:32:07.478 | 8823 | CARGO | .685 | .800 | refused |
| 14:32:07.511 | 8824 | CARGO | .432 | .800 | refused |
| 14:32:07.544 | 8825 | HUMAN | .510 | .800 | refused |
| 14:32:07.577 | 8826 | HUMAN | .587 | .800 | refused |
| 14:32:07.610 | 8827 | HUMAN | .668 | .800 | refused |
| 14:32:07.643 | 8828 | MIXED | .537 | .800 | refused |
| 14:32:07.676 | 8829 | HUMAN | .880 | .800 | DISPATCH |
| 14:32:07.709 | 8830 | CARGO | .654 | .800 | refused |
| 14:32:07.742 | 8831 | CARGO | .752 | .800 | refused |
| 14:32:07.775 | 8832 | EMPTY | .589 | .800 | refused |
Available for part-time and full-time roles
01 — Work
Five systems, one argument
Each of these is defined by what it refuses to do without being certain.
010 dispatched · HELD
LiftSense
Vision-primary lift occupancy classifier with advisory elevator dispatch.
A wrong elevator call is a safety event, so the system is built to send nothing until it is certain — and even then, the certified lift controller decides.
- Classifies HUMAN, CARGO, MIXED, and EMPTY from a single USB camera feed
- Pipeline is camera → RF-DETR on TensorRT → centroid tracker → sliding-window median smoother → weighted-vote fusion → safety guards → dispatch adapter
- DISPATCH_MODE defaults to shadow, so no command reaches a lift until it is switched on deliberately
- Python
- TypeScript
- RF-DETR
- TensorRT
- NVIDIA Jetson Orin
- Postgres
- Mosquitto MQTT
- Grafana
- Docker Compose
Fig. 1.1 — Camera to dispatch: six stages and one gate, shown clearing the floor once. In shadow mode the row is written and nothing is sent Read the case studyPrivate repository
02shipped
No-Website Outreach Pipeline
A CLI that finds businesses without a website and drafts outreach that is legal to send.
A wrong send is a legal event, so the send stage is dry-run by default and every message must pass compliance checks before it can leave.
- Four stages — discover, draft, send, pipeline — each runnable on its own
- Uses a minimal X-Goog-FieldMask against the Google Places API (New) to find businesses with no websiteUri
- Drafts personalised outreach with the Claude API (claude-haiku-4-5)
- Python
- Google Places API (New)
- Claude API
- SMTP
Fig. 2.1 — Four stages, and a send stage that is dry-run until told otherwise Read the case studyPrivate repository
03active
TriAgentLoop
An open-source harness that runs Planner, Builder, and Reviewer agents as separate roles.
An unreviewed agent commit is a correctness event, so the roles are isolated by branch and no agent may approve its own work.
- Planner plans, Builder implements, Reviewer reviews — each in its own sandbox and on its own Git branch
- Handoffs are an append-only JSONL log, so the decision trail survives a session ending
- A build is merged only after a Reviewer record with approve status
- TypeScript
- Rust
- Git
Fig. 3.1 — One append-only record per role, and no merge without a review record 04active
TriAgentLoop Kanban Bot
A Discord bot that drives a GitHub Projects board, and refuses to write to it for anyone the allowlist has not cleared twice.
A bot with write access to someone else's board is an authorization problem before it is a Discord problem, so the role allowlist is enforced when the flow opens and re-checked at the moment of the write.
- Authenticates as a GitHub App with short-lived per-installation tokens; no personal access token is stored
- The role allowlist is enforced at the trigger and re-checked at write time
- A rapid double-submit creates at most one Issue — the first submit claims the flow and a concurrent second is refused
- Node.js
- discord.js
- GitHub Apps
- GraphQL
Fig. 5.1 — The role allowlist is checked when the flow opens and again at the moment of the write, and only then is an Issue created 05shipped
Discord Music Bot
A self-hosted Discord music bot whose audio path is built out of two external programs rather than a JavaScript extractor.
The audio path refuses to depend on anything that rots: yt-dlp resolves metadata only and ffmpeg reads the media URL itself, so when YouTube rotates its player, updating one pinned binary is the whole fix.
- Fourteen slash commands, and no Lavalink, no Java, no Python and no native Opus or sodium package — Node 22's aes-256-gcm covers voice encryption and ffmpeg does the Opus encoding
- The install script downloads the pinned binary and the SHA2-256SUMS file from the same release, verifies the checksum, and refuses to install a binary that does not match
- Preflight checks ffmpeg, the opus muxer, yt-dlp and the environment before the bot logs in
- Node.js
- discord.js
- @discordjs/voice
- yt-dlp
- ffmpeg
Fig. 6.1 — A pinned binary, its checksum from the same release, and a preflight that refuses to log in until ffmpeg, the opus muxer and yt-dlp all answer Read the case studyNo repository
02 — About
Restraint under consequence
I am a third-year BSc Information Technology student at Curtin University Dubai, and the through-line of everything I build is the same: work out what the cost of being wrong is, then design the system so it cannot pay that cost by accident.
In a lift, a wrong call is a safety event, so the classifier ships in shadow mode and the certified controller keeps the decision. In cold outreach, a wrong send is a legal event, so the sender is dry-run by default and a message that fails compliance never reaches the transport. In an agent harness, an unreviewed commit is a correctness event, so the roles are isolated and nothing merges without a review record.
The interesting engineering is rarely the model. It is the guard in front of it.
- Dubai, United Arab Emirates
- BSc Information Technology, Curtin University Dubai · 2025 — 2027
- English (Fluent) · Japanese (JLPT N5)
03 — Skills
What I actually use
Engineering
- Python
- Red Hat Linux
- AWS Cloud
Tools
- Figma
- Apollo
- Toggl
Working with people
- Client relationships
- Team leadership
- Conflict resolution
- Time management
- Situational analysis
- Communication
Languages
- English — Fluent
- Japanese — JLPT N5
04 — Credentials
Verifiable, or not listed
Where an issuer publishes a verification link, it is here. Where one does not exist, the entry says so rather than implying one.
AWS Academy Graduate — Cloud Foundations
Amazon Web Services · August 2026
A 20-hour programme covering core AWS services, cloud architecture, security, and pricing.
Red Hat System Administration
Red Hat · 2025
Hands-on Red Hat Enterprise Linux administration — users and permissions, services, storage, and networking.
Foundation Programme certificate
Middlesex University Dubai · 2023
Completed the foundation programme and graduated with Honours.
05 — Timeline
Where I have been
2025 — 2027education
BSc Information Technology
Curtin University Dubai
- In progress. Third year begins on 31 August 2026.
2025 — presentwork
Founder
LiftSenseAI
- Building a vision-primary lift occupancy classifier that advises elevator dispatch and defaults to sending nothing.
- Owning the whole path: detector on the edge, tracking and smoothing, the safety guards in front of dispatch, and the audit trail behind it.
2024 — 2026work
Head of Marketing
Appscreated
- Grew the company Instagram from 0 to 1,000 followers with daily code snippets and short informative posts.
- Acted as key point of contact for corporate clients and managed those relationships.
- Produced graphic design assets and ran the marketing calendar.
- Streamlined internal workflows and prospecting with Figma, Apollo, and Toggl.
2022 — 2023education
Foundation Programme
Middlesex University Dubai
- Graduated with Honours.
06 — Contact
Reach me directly
Email is the fastest route, and the address is written out below so it works whether or not your machine has a mail client set up.