Technology with a soft touch

This high profile product launch for Glossier "You Fleur" perfume featured a sophisticated interactive installation that I carefully crafted to make the technology almost disappear from sight.

Technology with a soft touch

The multi-day event in Paris was a huge success for our client: see it featured, with plenty of discussion of the "AI in retail" angle, on Vogue (in French), Forbes and of course on the website of Random Studio. The Fleur Pavilion installation I built was the centrepiece of the design, and it delighted visitors with just over 1500 LLM-generated poems over the course of 4 days.

Here it is, in all its subtle glory (is that a oxymoron?):

But behind all this was a symphony of hardware and software working together.

Hardware

  • Mac Mini
  • Weight sensor with ADC connected to an Arduino
  • 25K lumens projector
  • Logitech Brio webcam
  • 5 DMX fixtures (4 of them could pan/tilt)

A SvelteKit web application

Two main frontend routes, all TypeScript:

  • remotely-triggered webcam capture, communicating to a backend that in turn performed requests to OpenAI / ChatGPT
  • text-rendering and live audio-processing, which appeared on the fabric projection, but never really felt like a screen (or, for that matter, a browser tab)

Some custom Rust applications

  • A "soundscape" sequencer for loading and mixing audio files based on remote cues
  • An "ArtNet controller" that allowed us to design animated lighting scenes for the 5 DMX fixtures mounted around the space
  • A serial to Tether (MQTT) interface, for the weight sensor
  • A configurable custom "pavilion brain" with a GUI for loading config, running a state machine and handling all the sensor input (with auto calibration) / cue output (lights, sound, camera control, LLM generation, screen animations)

Some C++

The Arduino did some simple measurements from the weight/flex sensor and sent these via serial/USB.

...And some custom metrics

As usual, I hooked up Datadog, implemented some custom metrics (in the Rust code as well as the TypeScript/SvelteKit parts) to keep an eye on everything and provide reports.

Tags: