Selected work
Stuff that exists because of me.
Binyan Studios — Digital Experience Suite
Used on property sales globally. Can't show the imagery yet (NDAs are fun) — my LinkedIn has campaign context if you want the full picture.
Explore a building that doesn't exist yet. In full detail.
Lens turns architectural renders into interactive digital twins — buyers walk through a development before a single brick is laid. Used on multi-million-dollar sales campaigns globally where a physical display suite isn't an option.
WebGLReactTypeScriptAWSC#/.NET
A guided walkthrough of a building that hasn't been built.
Sales teams guide prospects through a development in real time — high-fidelity virtual walkthroughs with branching paths and configurable materials. Like a show apartment, minus the apartment.
ReactTypeScriptWebRTCAWS CloudFront
Configure your future apartment in real time. On a giant touchscreen.
Spatial configurator for on-site sales suites — prospects walk through a rendered apartment and swap finishes, furniture, and layouts on the spot. Built for tablet and large-format touchscreens, because size matters in a sales suite.
WebGLReactTypeScriptThree.js
Personal projects
SaaS meets hardware. Construction sites, time-lapse, the works.
Custom hardware devices paired with a cloud SaaS backend for automated time-lapse capture on construction and mining sites. Handles device provisioning, remote configuration, and image delivery to client dashboards. Yes, I built the physical thing too.
Node.jsReactAWS IoTS3Lambda
Configure a yacht you probably can't afford. In real-time. In a browser.
Real-time 3D configurator letting buyers explore material and colour options across Maritimo's luxury motor yacht range. High-fidelity WebGL rendering in the browser, integrated directly into the Maritimo sales workflow.
Three.jsWebGLReactTypeScript
One update. Automatically rewritten for everyone who needs to hear it differently.
Takes a broad project status update and generates tailored stakeholder communications — trimmed to what each person actually cares about, in their preferred format. Built because I got tired of rewriting the same update six times. Currently in progress.
Next.jsTypeScriptOpenAI APIVercel