B2B cosmetology · Content

B2B blog redesign

Expert articles rewritten to be readable and sourced — and a CMS the editors can sustain them from.

20261 mRenata, Alex, MaksA B2B cosmetology distributor

The problem

The blog carried real expertise — articles written by the brand's own cosmetologist — but the format buried it. Long unbroken paragraphs, no way to jump to a relevant section, no sourcing behind the claims. Behind the scenes it was worse: every article went through a single freeform HTML box, so formatting broke constantly and nothing could be reused. Expertise the company was already paying for wasn't reaching the reader.

What we built

Both sides of the problem: how an article reads, and how it gets published. On the page, a navigable structure with real heading hierarchy, advice organized by the variables that drive a recommendation, and numbered references. Behind it, a structured content model replacing the WYSIWYG editor, plus a script that turns the writer's Google Doc straight into a draft post.

Before / after

Same article, same author. The old version is a single wall of text with a manufacturer ranking and no citations. The new version opens with a table of contents and a disclaimer, and reorganizes the advice around how a reader actually decides — by age, by zone, by ingredient — backed by numbered sources.

Before

Mesoreal blog article — before

After

Mesoreal blog article — after

What it changed

01

The expertise is now findable on the page

A table of contents and real heading hierarchy mean a reader jumps to the section that answers their question instead of scrolling a single block of text.

02

Claims carry sources

Statements about ingredients and results link to the actual studies, which is what a professional audience checks before trusting a distributor.

03

Publishing no longer depends on hand-written HTML

Editors compose posts from reusable blocks, and an article arrives from Google Docs as a draft automatically — removing the copy-paste step and the formatting loss that came with it.

How it worksthe engineering detail

Written for the person your CTO forwards this to.

1

Structured content model, not a text box

Replaced the Summernote WYSIWYG editor with a ContentBlock model — text, image, video, and callout blocks, with rich text (including tables) authored in CKEditor5. Content stays structured enough to reuse later instead of being frozen into markup.

2

Bootstrap 3 → 5 migration

Migrated the site's front-end framework, updating deprecated markup along the way — the video embed block and the news carousel's data attributes both needed rework to match Bootstrap 5's conventions.

3

Scoped typography

Gave the blog its own type and color system inside .post-content, without touching the site-wide UI everywhere else.

4

Google Docs → draft, automatically

A script pulls an article straight from a Google Doc and creates a draft post in the admin panel, preserving structure that manual pasting used to destroy.

5

CDN for media

Blog media is served from a CDN provisioned separately from object storage, for faster asset delivery without changing how editors upload images.

Patterns — Structured content model · Scoped design tokens · Import pipeline

Stack

DjangoPostgreSQLCKEditor5Bootstrap 5Self-hosted on k3sCDN