# Bloom

> A multi-device employee engagement platform sold to companies as a white-label product: apps for employees on web, iOS and Android, and an HR workspace with analytics, surveys and reviews. I built it across the whole stack and was the single point of contact for the client companies.

- Author: [Jacopo Marcolini](https://www.jacopomarcolini.com), Deployment Strategist & Product Design Lead
- Role: Fullstack Developer & Client Lead
- Year: 2021
- Area: Product Design
- Tags: Web App, Mobile App, HR Tech, B2B
- Web page: https://www.jacopomarcolini.com/case-studies/bloom

![The word bloom with its two o's opening into orange and teal flowers, next to a tablet and a phone showing an employee profile and notifications, among flat flowers on a cream background](https://www.jacopomarcolini.com/images/case-studies/bloom/hero.jpg)

## Engagement you can measure

Large companies want to know how their people feel, help them grow and thank them for good work, but these things usually live in separate tools, yearly surveys and email threads. Bloom brings them into one place: a social feed, peer rewards, growth challenges, surveys, objectives and a company wiki for employees, and a workspace where HR and managers see what is happening and act on it.

Bloom is sold to companies as a white-label product, so each client gets its own workspace with its colours, its logo and the modules it needs, and its people use it on the web and on their phones.

## One platform, many companies

Each client company is different: a few hundred office workers in one case, shift workers spread across many sites in another. The platform had to:

- **Mirror the real organisation**, with teams nested inside teams, managers who see their own branch and HR who sees everything.
- **Make engagement part of the day**, with small actions such as thanking a colleague, updating a challenge or answering a pulse survey.
- **Turn activity into analytics** HR can read: adoption, engagement, sentiment and how teams work together.
- **Run reviews and surveys** without a separate tool for each campaign.
- **Adapt to each client** with its own brand and modules, without a separate codebase.
- **Fit company IT**: Microsoft single sign-on, directory sync and bulk user imports.

![Isometric grid of twenty light dashboard screens on a cream background with flat flowers: profiles, feed, challenges, OKRs, wiki, HR analytics, network graph, surveys, reviews and workspace settings](https://www.jacopomarcolini.com/images/case-studies/bloom/showcase.webp)

*Every module of the platform, for employees and for HR.*

## What employees see

Every employee has a profile with a skills map against the targets of their role, the badges they earned and a summary of their activity. From there they move between the modules their company turned on: a feed organised in channels with reactions and comments, rewards to thank a colleague and link the thanks to a skill, growth challenges agreed with their manager and followed through checkpoints with progress and mood, surveys and suggestions, company and team objectives, and a wiki with an AI assistant that answers from the company's own articles. The phone apps cover the same ground with push notifications.

![Phone home screen with a greeting card, two challenges with progress bars and a news post with reactions](https://www.jacopomarcolini.com/images/case-studies/bloom/phone-home.webp)

*Home*

![Phone growth screen in a navy workspace with a watering can illustration, three challenges and a request button](https://www.jacopomarcolini.com/images/case-studies/bloom/phone-growth.webp)

*Growth*

![Phone survey question with four agreement options shown as faces and an anonymity note](https://www.jacopomarcolini.com/images/case-studies/bloom/phone-survey.webp)

*Pulse survey*

![Phone wiki screen with a search field, popular articles and the last published article](https://www.jacopomarcolini.com/images/case-studies/bloom/phone-wiki.webp)

*Wiki*

![Phone chat with the wiki AI assistant answering a question about the training budget and citing an article](https://www.jacopomarcolini.com/images/case-studies/bloom/phone-chat.webp)

*AI assistant*

## What HR and managers see

HR works in an admin workspace. The home shows adoption over time, recent activity, colleagues who have been inactive for a while and shortcuts to create a challenge, a news post, a survey or a special badge. Analytics go deeper: adoption and engagement indexes, when people use the platform and on which device, the words that come up most in open answers and their sentiment, and an organisational network built from rewards, feedback and challenges that shows how teams actually work together. Managers see the same views limited to their own branch of the organisation.

![HR analytics with adoption and engagement indexes, a six-month trend chart, hourly access bars and an app versus web donut](https://www.jacopomarcolini.com/images/case-studies/bloom/analytics.webp)

*Usage analytics for HR.*

![Voice analytics with survey counts, a word cloud, a sentiment bar and an organisational network graph coloured by team](https://www.jacopomarcolini.com/images/case-studies/bloom/voice-network.webp)

*What people say, and who works with whom.*

## Surveys and reviews

Two campaign tools run inside the same platform. HR builds a survey from open and closed questions, assigns it to the whole company or to some teams, shares a link and downloads the answers. Reviews follow the company's skills model: the employee fills in a self-evaluation, the manager rates each skill on a four-step scale with notes, and the review ends with an overall rating, a development plan and career goals, ready to print as a PDF.

![Survey builder with a title card, a closed question with four agreement options, an open question and an assignment panel](https://www.jacopomarcolini.com/images/case-studies/bloom/survey-builder.webp)

*Survey builder.*

![Manager review form with two skills rated on a four-step scale, notes, a development plan and an overall rating ring](https://www.jacopomarcolini.com/images/case-studies/bloom/review-form.webp)

*A manager review.*

![Review cycle page with completion bars and rows of people with employee and manager status badges and view, link and PDF actions](https://www.jacopomarcolini.com/images/case-studies/bloom/reviews.webp)

*Following a review cycle.*

## A workspace for each company

Every client company is a workspace. When I set one up, I chose its primary colour and logo, its sign-in method and privacy policy, and switched on the modules it had bought: rewards, growth, voice, OKRs, analytics, the social feed, manager evaluations, the wiki. The apps pick up the changes in real time, so an employee opening the app sees their own company's colours and only the sections their company uses. Underneath, the teams form a tree that copies the client's hierarchy, which decides what each manager can see.

![Workspace setup screen for a logistics company with a navy colour, logo and module toggles, next to two phones showing the app in orange and teal workspaces](https://www.jacopomarcolini.com/images/case-studies/bloom/white-label.webp)

*One product, each company's colours: workspace setup and the same app in two other workspaces.*

## How I built it

I worked across the whole stack, from the database to the phone apps, and kept the platform running in the cloud.

### Back end

The core platform runs on PHP and Symfony with Doctrine, Twig and MySQL, with Redis queues for notifications and emails. Newer services use NestJS with Drizzle and Python with FastAPI, SQLAlchemy and Strawberry, exposed through REST and GraphQL APIs.

### Web apps

The employee web app and the HR workspace mix the original Twig and jQuery pages, with Chart.js, d3 and Cytoscape for analytics and the network graph, and newer Next.js, React and TypeScript apps built with Tailwind, shadcn/ui and Apollo GraphQL.

### Mobile

Apps for iOS and Android, first in Flutter and then in React Native with Expo and NativeWind, with Microsoft sign-in and push notifications through OneSignal.

### Data and AI

An analytics engine on PostgreSQL and MongoDB feeds the HR dashboards. The wiki assistant answers with OpenAI models grounded in the company's own articles.

### Cloud and integrations

Docker on AWS (ECS, ECR, S3, CloudFront, Cognito, SES, CloudWatch), deployed with GitHub Actions. Azure Active Directory for single sign-on and directory sync, SendGrid and SES for email, Cypress and k6 for end-to-end and load tests.

### Design

I turned new requests into flows and screens on top of the platform's design system, so every module and every workspace kept the same components.

## Working with client companies

I was the single point of contact for the client companies, from the first setup to the requests that came in once their people were using the platform.

### 1. Map the organisation

With HR, we listed teams, roles, seniority levels and the skills each role requires, and decided who sees what.

### 2. Set up the workspace

I configured brand, sign-in, privacy and modules, and imported the users from CSV files or synced them from the company directory.

### 3. Launch the first programs

Together with HR, we created the first reward programs, challenges and surveys, so people found something to do on day one.

### 4. Support and listen

I answered questions from HR and managers, tracked bugs and collected requests for new features.

### 5. Build what was missing

Requests that made sense for more than one company went into the product for everyone, behind a module switch when only some clients needed them.

## Why it works

### Goal-Gradient Effect

People speed up as they get closer to a goal. Challenges show progress at every checkpoint and the reward waiting at the end, so the last steps feel within reach.

### Jakob's Law

Users spend most of their time on other apps. The feed works like the social networks people already know, with channels, reactions and comments, so nobody needs a tutorial.

### Peak-End Rule

People remember the most intense moment and the end of an experience. A reward arrives with a personal comment, can be shared in the feed and stays on the profile as a badge.

## A platform in daily use

Bloom runs as one platform for several client companies, each in its own workspace with its own colours, modules and hierarchy. Employees use it on the web and on their phones to thank colleagues, follow their challenges and answer surveys, and HR uses the same data to plan programs, run reviews and see how teams work together.
