Product engineer / AI, mobile, web

From idea to production.

AI, mobile and web products, from architecture to launch.

Abstract composition in cobalt blue and acid green acrylic on a black background
Build, measure, repeat.

10+ yearsbuilding products

1 appfounded, launched, sold

500kdaily active users at peak on Omada

From concept
to everyday use.

My approach spans architecture, interfaces, data and operations. Every decision should support a usable product with measurable results.

Selected work

Independent projects and products built at Luni, from architecture to real-world use.

01 / independent productApp sold

Plant Calendar

An iOS app, from idea to acquisition.

I founded and developed a plant care app, then sold it to a French consumer app company. From the watering engine to the paywall, I owned both the product and its implementation.

  • Figma
  • SwiftUI
  • GraphQL
  • MongoDB
5languages at launch

Design. Launch. Sell.

My role and technical decisions

The product

A watering engine that accounts for the pot, light, drainage, seasons, location and rainfall. The app includes plant identification, adaptive onboarding and contextual notifications.

The implementation

A native SwiftUI app with Core Data and Apollo GraphQL. A GraphQL and MongoDB Atlas backend, deployed on Docker Swarm with Ansible, Traefik and automated TLS. I also built the paywall and supported the product through its acquisition.

Built at LuniSocial gaming

Omada

At 7 a.m., betting opens.

A social sports prediction game with no real-money stakes. At Luni, I led backend development from the inception of Omada Game, later renamed Omada, and built its back offices.

  • TypeScript
  • Adonis
  • Vue.js
  • MySQL
500kdaily active users at peak

A daily spike when betting opens

My role and technical decisions

Handling the morning write traffic

Every morning at 7 a.m., the opening of betting brought a surge of players. The infrastructure had to support match browsing and the writes generated by their predictions. The product reached up to 500,000 daily active users.

From backend to business tools

I made technical decisions and developed the backend in TypeScript with Adonis and MySQL, alongside Vue.js back offices. Omada Game took over the Omada name after the original betting advice app, PronoFC, which had also been renamed Omada, was discontinued.

02 / built at LuniApplied AI

Fate

Keeping a story consistent across chapters.

I built Fate's AI storytelling engine: orchestrating multiple models, generating structured content and tracking narrative state.

  • Multi-LLM
  • Long context
  • Persistent state
Persistent
context.
characters, locations and chapters stay in context
My role and technical decisions

Orchestrating the story

I designed the workflow: author style, synopsis, characters, locations, chapter outlines, page generation and structured updates. The engine orchestrates models including Claude, GPT-4, Mistral, Llama and DeepSeek.

Understanding failures

To isolate repetition, omissions and invented details, I reproduced errors with the same parameters, then varied the context, temperature, model and system prompts.

03 / built at LuniVideo at scale

Shorts

Building a streaming platform at scale.

I built and scaled a streaming platform for short series: backend, video processing, recommendations and analytics. I continued to optimize costs and performance in production.

  • Node.js
  • Vue 3
  • QuestDB
  • AWS / HLS
~50kdaily active users

Nearly 50% less bandwidth

My role and technical decisions

Shipping, then scaling

I delivered the first content API in one day for a catalog of 20 series and 1,200 episodes. I then scaled the video pipeline with S3, AWS MediaConvert, multi-resolution encoding and HLS.

Measuring and improving

I compared several time-series databases before choosing QuestDB. The first recommendation system combined viewing events, trends and business rules, then evolved to use Recombee.

04 / personal projectEncrypted messaging

Cove

The server never sees the plaintext.

I built an end-to-end encrypted business messaging app, with a Rust/WASM core and a React interface. Encryption also shapes search, attachments and notifications.

  • MLS / OpenMLS
  • Rust / WASM
  • React
  • Tauri
10kconcurrent subscribers across 10,000 groups

In-memory load test

Client→Ciphertext→Client
My role and technical decisions

A shared core

An implementation built around MLS (RFC 9420) and OpenMLS: ordered commits, epoch convergence and replay protection. Clients access the Rust core through WASM and stable FFI interfaces.

A complete messaging system

A delivery service with total ordering and mailboxes, OIDC and SCIM, encrypted file storage, client-side full-text search and encryption-compatible notifications. The figure describes an in-memory test, not a production audience.

From the beginning, at Luni.

Consumer apps and internal tools: technical decisions, backends and the interfaces that keep products running.

The Coach suite

Four apps. A back office for each.

Fitness Coach, Running Coach, Yoga Coach and Meditation Nest: I made technical decisions from their inception at Luni. As lead backend developer, I also built the content management interfaces for each project.

  • Laravel
  • Vue.js
  • MySQL
  • FFmpeg
  • AWS Elastic Transcoder

Fitness Coach

Fitness programs tailored to goals and ability, with progress tracking.

Fitness Coach, image from the App Store listingApp Store ↗

Running Coach

Running and walking, GPS route tracking and activity statistics.

Running Coach, image from the App Store listingApp Store ↗

Yoga Coach

Guided video sessions tailored to ability, available time and goals.

Yoga Coach, image from the App Store listingApp Store ↗

Meditation Nest

Meditation audio and bedtime stories.

Meditation Nest, image from the App Store listingApp Store ↗
My role and technical decisions

Tools tailored to each team

As home workouts grew during Covid, each app had its own content needs. The back offices let teams enter and organize that content, with features tailored to their business requirements.

Content and media

Laravel and MySQL powered the backend, Vue.js the interfaces, and FFmpeg and AWS Elastic Transcoder handled media processing. Each project had its own back office.

TinyBoard

  • Laravel
  • Vue.js
  • MySQL
  • App Store
  • Search Ads

The data behind marketing decisions.

I built the tool used by Luni's entire marketing team, from data collection systems to the interface. TinyBoard brought together revenue, advertising spend and App Store competitor analysis.

My role and technical decisions

Bringing revenue and spend together

Revenue came from Apple reports and later Google APIs. Spend from Meta Ads, Google Ads, TikTok Ads, Snapchat Ads, Search Ads and other platforms was unified by app, country and day, with drill-down from campaigns to creatives.

Exploring keywords and competitors

Crawling started with App Store search suggestions, then collected the top seven apps for each keyword. The team could explore a competitor's keywords or add competitors from a keyword. Search Ads tracking completed the tool, which began in 2018 when that channel played a major role in the business.

StepUp

  • TypeScript
  • Amazon Timestream

A race powered by your steps.

A race with friends where phone-tracked steps move players forward. Each lap corresponded to 5,000 steps: whoever went furthest won. Bonuses and penalties let players gain an advantage or slow their opponents down.

My role and technical decisions

Technical decisions from the start

I was involved from StepUp's inception at Luni and made its technical decisions. Development used TypeScript and my own backend framework, with Amazon Timestream storing step history.

Magic Avatars

  • TypeScript
  • Stable Diffusion
  • DreamBooth

From selfies to AI-generated avatars.

As lead backend developer from the project's inception at Luni, I built the backend for this portrait generation app in TypeScript, using my own framework.

My role and technical decisions

Choosing what to maintain

Generation initially relied on Stable Diffusion and DreamBooth. We later chose a SaaS provider to avoid maintaining that generation infrastructure.

PronoFC / Omada

  • React Native

Analysis to inform betting decisions.

I developed the entire React Native app at Luni and made technical decisions from its inception. Each day, it offered four or five matches, with an analysis and an estimated winner.

My role and technical decisions

Two products and a shared name

PronoFC was first renamed Omada. We then created a separate product, Omada Game. After the betting advice app was discontinued, the game took over the Omada name.

Experience

An approach spanning
the whole product.

Architecture, backend, interfaces, analytics and operations: technical decisions stay grounded in real-world use.

Based in Bordeaux, I work on AI products, mobile apps and web services. I also founded Sensitive, an independent product development business.

  1. Since 2018

    Luni

    Founding Engineer. Consumer products, AI, streaming, real-time systems and wellness apps.

  2. Since 2024

    Sensitive

    Founder and Product Engineer. Scoping, designing, launching and developing web and mobile products.

  3. 2015-2017

    Green Panda Games

    Lead Web Developer. Games, consumer services and mobile data analytics tools.

What's next

Let's talk about
your product.

dayotedwin@gmail.com

Bordeaux, remote, French and English.