My French Husband

The MFH Brand Book

The brand, the site, the taxonomy, the tagging and the data. One book.

Version 11 · 26 October 2026

Download the book (PDF) A4 · print ready

Part one · The brand

The main logo. Hero of the site, top of every email, cover of every document.

My French Husband: the main logo

Three lines of type, a rule and a fleur-de-lis: “My” in Pinyon Script, in script blue #475C79, above FRENCH HUSBAND in Cormorant Garamond capitals, widely spaced, in ink, with a long blue rule and a fleur-de-lis beneath. No ring, no photograph. Use the file everywhere, the homepage included. The page header uses the one-line version below.

logo-premium.png · transparent, for cream or white grounds · 749×489. logo-wordmark.png is the same image, kept for older links and emails.

One line at the top of every page, set in live type and linked to the homepage: top left on site pages and the pitch deck, centred on the quizzes, tools, Ask and the guide. Same proportions everywhere. “My” in Pinyon Script, in blue; FRENCH HUSBAND in Cormorant Garamond capitals, letterspaced, in ink. No ring beside it: the fleur-de-lis is the small mark, kept for small sizes.

“My”Pinyon Script · 1.55× the name · script blue #475C79 · sits on the baseline, .22em before the F
FRENCH HUSBANDCormorant Garamond · 1.05rem · capitals · .22em spacing · --ink #2B2A27
Below 1000px.9rem, .14em spacing. Never drop the “My”.
On navyThe name in cream, the “My” in pale gold #D8BE86 (the menu drawer).
Where it lives.nav-brand in styles.css and site-chrome.css, .brand in quiz.css and ask.html, .gd-bar in guide.html, .bl-bar in bulletin.html.
Code<a class="nav-brand" href="index.html"><span class="my">My</span>French Husband</a>

Variants, and when to reach for them

Main logo
Main logo — always first
logo-premium.png
Header logo — top of every page, live type
.nav-brand
Fleur-de-lis mark — small sizes, stamps
brand/marks/monogram-mfh.svg
Portrait seal
Portrait seal — author card, About, social avatars
portrait-us.png
Favicon: the fleur-de-lis in blue-deep on page cream
Favicon — 16px and up, blue-deep #2E4457 (mist #9FB0BF on dark tabs)
favicon.svg

Clear space and minimum size

Logo shown with its clear space

Clear space: keep a margin equal to the height of the H in HUSBAND on every side. Nothing sits inside it — not type, not another mark, not the edge of the page.

Minimum size: 140px wide on screen, 30mm in print. Below that the script “My” stops reading — use the fleur-de-lis mark instead.

Do not

Seals

Two verdict marks with two different jobs. They never appear together.

MyFrenchHusband Approuvé seal

Approuvé

MFH Approved — the researched verdict on whether a brand is actually French. Dated, sourced, and never for sale.

Chic or Pas series badge

Chic or Pas

The series mark. His verdict on American things — fast, opinionated, no research. Corner of every episode, same position.

Colour

Defined once in styles.css under :root. Use the variable, not the hex.

--bg#FCFBF8Page background
--bg-deep#F1EDE2Bands, cards, deeper background
--blue#3E5A78Links, kickers, figures
(script blue)#475C79The script “My” only: logo, header, Passport
--blue-deep#2E4457Article banner, shop card, filled buttons
--ink#2B2A27Body text
--dim#6E6A60Secondary text, captions
--hair#E3DDCEHairlines, borders
(gold)#A98E52Seal, verdict stamps, marks
(gold light)#C9A96AGold on dark — CTA, banner rules
(gold pale)#D8BE86Kickers on dark backgrounds
(navy light)#3A536BTop of the navy band gradient
(navy dark)#263A4ABottom of the navy band gradient
(mist)#9FB0BFSmall print on navy
(wordmark blue)#475C79The script “My” of the header logo
(blue light)#46648ATop of the blue button gradient
(gold deep)#7E6530Small gold text on cream, where #A98E52 is too light to read
(error)#A65B52Form errors and wrong answers. Nowhere else.

Type

Three families, loaded from Google Fonts. Every weight listed is one already in use — adding another costs load time.

Pinyon Script · Script
An American wife. A French husband.

The “My” in the wordmark, a first-name signature, and the reader’s own “My” on result cards and My Passeport. See The script “My”.

Cormorant Garamond · 500 / 600 / 500 italic
An American wife. A French husband.

Headlines, H1–H3, big figures, verdict stamps.

Jost · 300 / 400 / 500
An American wife. A French husband.

Body copy, kickers, buttons, labels, tables.

Sizes

One scale for reading text. Set 25 Oct 2026 (releases 22ci to 22ck).

Article body

Jost 300, 16.8px, line height 1.8. The same on every article and on every page of running text.

Standfirst

Cormorant Garamond, 19.2px, under the title in the article banner. Section intros (.sub) are Jost 300, up to 18.4px.

14px minimum

Any sentence someone reads is at least 14px: dates, summaries, prices, store names, fine print, captions, the passport line. Shop prices are 15px. The one exception is a line in a fixed-width card that 14px would cut off.

Labels can be smaller

Jost 500 capitals with letter-spacing may stay at 9.5 to 12px: kickers, badges, tabs, buttons.

One H1 per page

The H1 is the title the reader sees first: the masthead on a landing page, the title on an article, the page heading on a tool. A title inside a card or a selector is an H2.

Capitals

Capitals are a tone of voice. Used everywhere they shout; kept to a few fixed places they read as the brand. Set 19 Oct 2026 (release 19w).

Capitals, only here

The wordmark

FRENCH HUSBAND, Cormorant, spaced .22em.

The menu

Top bar and drawer links.

A landing page’s masthead

The H1 of the home page, the Journal, the subject pages, Shop, Quizzes, About and Episodes. Cormorant, spaced .16em. Articles never get one.

Labels

Kickers, meta (8 min read, Cover story), tags, buttons, text links and block labels such as Sources. Jost 500, small, spaced .18–.3em, seven words at most.

Sentence case, everywhere else

Headlines

Article H1s, every H2 and H3, cover stories, card titles and section heads (Keep reading, Start here, Everything on Fashion and Beauty). Cormorant, no letter-spacing.

Title Case is for names

Products (The French Fashion Field Guide, Le Bulletin, My Passeport, Le Shop), quiz and tool names (How French Is Your Husband?), shop collections (Gift Guide, Fall Essentials), subjects (Fashion & Beauty), people and places.

Colons and questions

Lower case after a colon: “Roasted chestnuts in Paris: the paper cone, explained”. A question mark starts a new sentence: “Why are French people thin? The real answer is the schedule”.

Type it in sentence case

Write labels in normal case and let the CSS add the capitals. Never type capitals into the copy.

Where it is set: styles.css. h1.masthead keeps the capitals; the base h2 is sentence case; the “19w capitals rule” at the end of the file overrides older components.

The script “My”

The one piece of handwriting in the brand. It works because it is rare: one per screen, only for “My” or a first name.

MyFRENCH HUSBANDThe wordmark
ElizabethA signature
My PasseportMy Passeport cover
MyFRENCH HUSBANDOn gold: navy #2E4457

Use it for

The wordmark

Script “My” above FRENCH HUSBAND. Script blue #475C79 on light grounds, cream or pale gold on navy, navy #2E4457 on gold. This is its home.

Signatures

A first name under a personal note: the About page, the Field Guide, Le Bulletin, the welcome email. In email it is a small image with the name as alt text.

The reader’s own “My”

On things a reader keeps or shares: result cards (“My Paris is the 16th”, “My verdict: Parisienne”) and the cover of My Passeport. Only “My” is in script; the rest of the line is in the normal type.

A name the reader gave

Their first name on the holder line of My Passeport, or on a result card when they typed it in. Never a name we guessed.

Monogram on things

A script “My” alone on a Le Club label, tag or candle, where the product is the brand.

Sign-off frames

Reel end cards and Instagram highlight covers, always as the full wordmark.

Never

More than one per screen

If a signature and a script “My” meet on one screen or page, drop one. Rarity is the point.

Any other word

Only “My” or a first name. Never “Paris”, “Bonjour”, “Verdict” or a headline in script.

Running text or interface

Never body copy, buttons, menus, labels, captions or form fields.

Small sizes

Never below 18px on screen or 14pt in print. Favicons, stamps and avatars use the fleur-de-lis mark instead.

Live font in email

Email apps do not load it reliably. Use an image of the word, with alt text.

Effects

No capitals, letter-spacing, outlines, shadows or gradients, and no gold script on cream: it fails contrast.

Another script face

Pinyon Script only. No handwriting fonts, no faux signatures.

Voice

The hardest thing to hand over, and the easiest to get wrong.

Who we write for.A woman of 35 to 54, shopping for herself, her home and her mother.89.5% of followers are women; 65% are 35 to 54, and 39% are 45 or over. About half live outside the US: France, the UK, Canada, Australia (Instagram, 90 days to 23 Oct 2026). Write for her, never at her: French and European choices, not a man telling her what to buy.
The verdict comes first, the reason second.Nobody is romantic about Cristaline. That is the compliment.Say the judgement, then justify it. Never build up to it.
Short sentences. No exclamation marks.The chair? Pas. The price? Also pas.The humour is in the flatness. Punctuation cannot carry it.
Judge the thing, never the person who owns it.He judges America. America never sees it coming.Playful, not superior. The moment it sneers, it stops being funny.
She narrates. He only has verdicts.An American wife. A French husband who doesn’t know he’s the show.She sets the scene and names the series. He never announces anything.
Never explain the joke.De Paris, malgré lui.If a line needs a second line to land, cut both.
A ruling is three lines, not an essay.He has an opinion. Ask for it.On Ask My French Husband the answer is short, in his voice, and always marked as written by AI from the Journal.
First person is for notes, and notes are signed.This started with Elizabeth, not with me.The site narrates in the third person. A personal note is the exception: plain, true, signed with a first name.
Invite, never push.Free. Unsubscribe in one click.Every sign-up says what the reader gets and how to leave. No countdowns, no pop-ups, no capital letters.

Photography

What the pictures do, and the one rule that is not negotiable.

PortraitsCircular crop. The navy-and-gold ring belongs to the logo lockup only — never add it to an ordinary photograph.
Carousels4:5 portrait, faces in the upper third. A consistent crop across the set matters more than any single frame.
Article heroes3:2 landscape. A still from the reel beats a stock photograph every time, and keep the caption overlay — it is the hook.
ChildrenNever shown. Owen, Harry and Wells appear by first name only, and we ask coverage to follow the same rule.
Personal photographsReal ones, from the camera roll: the wedding, Paris, the silly ones. 4:5 portrait, rounded corners, a caption of five words or fewer that says only what the picture shows.
StockAvoid. A generic marble-countertop shot is the visual signature of content farms, and it undoes the thing the account is built on.

Illustration

The drawings carry the site now. Colour engravings, drawn in matching sheets, reused before anything new is made. Browse them all on the DAM.

French Recipes
Home & Table
Fashion & Beauty
French Parenting
Paris & Travel
Holidays
American Life
Pastry
Calendar
Article
Quiz
Season
Pastry
Article
Calendar
StyleColour engraving: fine ink hatching with flat, muted watercolour fills, like an old French print. One subject, no background, no text, no frame. Sophisticated, never cartoonish.
PaletteNavy, cream, a soft brick red, sage, butter yellow and a little gold. No neon, no gradients, no black fills.
Made in sheetsDrawn six at a time in the ChatGPT project “MFH drawings”, which holds the house brief and reference drawings, so a whole batch matches. Cut, cleaned and named here.
GroundTransparent, so the drawing sits directly on cream or on a white card. Never inside a coloured box, never with a drop shadow.
Namesillus-c-<article-slug>.webp for articles (-2 for a redraw), illus-s-<name> for seasons, calendar and pages, illus-p-<pastry> for pastries, home-<name> for the home set, fb-<name> for the fashion and beauty set, quiz-<quiz>-<question>.webp for quizzes.
SizesWebP, square: 400×400 for articles, 600×600 for quizzes. Shown 74–200px.
Reuse firstThe DAM lists every drawing by type and topic. Check it before asking for a new one; a new drawing is the exception.
Where they goOne per article, one per quiz question, tool or card, one per home section at most. If two drawings compete on a screen, remove one.
Never the social cardA drawing is never the og:image or the schema image of an article. Those are the og-<slug>.png cards and photographs.
Alt textDescribe what is drawn, plainly: “A wall clock above a folded napkin.” No keywords, never “Drawing of…”.
RetiredThe old pen-and-ink set (illus-b*), logo.png and the Paris map drawing are retired. They stay on the server only so old links work.

Components

The building blocks every page is made from. Reuse these before inventing a new one.

Get the free guide

1 PrimaryNavy fill, cream text. Hover: lighter navy.

All episodes

2 SecondaryNavy outline. Hover: fills navy.

Read the Journal →

3 Text linkNavy caps, gold underline, an arrow. Hover: the underline turns navy.

Send me the letter

RegularAbout 48px tall. Page and band calls to action, forms.

Join

SmallAbout 36px. The menu, inline sign-ups, cards, tool rows, the floating button.

Keyboard focus

StatesFocus: a gold ring. Pressed: shrinks 2%. Busy or disabled: 55% opacity.

ButtonsOne system for every page, set once in styles.css. Pill, Jost 500, caps, letterspaced .18em. One primary per block; the second action is the outline; anything after that is a text link. Never a gold, gradient or square button, and never two primaries side by side. The email field next to a button takes the same pill shape. Chips and filters (the Journal subjects, Ask examples, Team France or America) are a separate component: they toggle, they do not send you anywhere.

ClassesPrimary: .btn, .bi-btn, .bl-btn, .hb-btn, .nav-cta, .cta.fill, .pantry-buy, .deck-fab, .dk-btn, .lt-dl (the guide download after a sign-up). Secondary: .btn.ghost, .cta, .dk-btn.ghost. On navy: .qp-btn, .r-share, .h-reveal, .h-cardsave. Text link: .go, .dk-go, .r-all, .jl-all, .pantry-read. A new button uses one of these, not a new class.

II  —  Read & Play

The videos, answered properly.

Section openerSmall label, hairline, then the heading. Home sections are numbered in Roman numerals; other pages use the label alone. The heading is short (one line on a desktop), in Cormorant, sentence case, never spaced capitals.

What is a goûter?The four o’clock snack that makes dinner at eight possible.Read →

CardWhite, hairline border, rounded. Drawing, title, one line, one gold call to action. Three across on desktop, stacked on phones.

SearchWhite pill, blue outline, magnifier. On the Journal it stays on screen while the reader scrolls.

III — Ask him

He has an opinion. Ask for it.

Ask him

Navy bandThe one loud block on a page: Ask, the mid-article quiz, the Start here card. Never two on one screen.

Free guide

The French Household Field Guide

First nameYour emailGet the free guide

Free. Unsubscribe in one click. Privacy.

Sign-upOne system (letter.js), one look on every page: a full-width navy band. Gold label, one Cormorant line naming the offer, then first name, email and a gold pill button (navy text, hover pale gold), then one line of small print. No paragraph, no social proof, no topic buttons. Content sits in the page column; the navy runs edge to edge. Stacks on phones. Inside articles it is a slim white card instead, so it never sits on the same screen as the navy quiz block. Readers who already joined see one line and a text link to the guide, or nothing inside articles. Offers in use: Free guide / The French Household Field Guide (or The French Fashion Field Guide on style pages); Early access / Elizabeth’s Black Friday picks, before the sales open.

Free · The Field Guide

Twenty rules he brought from Paris.

First nameYour emailWhat do you want more of?Send me the guide

Join boxThe navy sign-up for pages that had none (What’s for dinner, About). First name, email, one topic. Placed with data-join, filled by mfh-join.js. Sends the guide (SOURCE guide-*), adds the Wants tag, then thanks people who already joined instead of asking again.

01Don’t wait for “the talk”
02Answer our questions properly
03Know what to call us
04Master la bise

Tip cardsA numbered list as cards: gold Cormorant number, navy title, one or two lines. Two across, every other pair on cream; an odd last card spans the row. Use for tips and rules, never for steps in a recipe.

Keep readingAll Paris & Travel →
Paris & TravelWhy don’t French people make small talk?Paris & TravelYour first day in ParisQuizWhich Paris neighborhood are you?Home & TableWhat time do the French eat dinner?

Keep readingThe end of every article. A swipeable row of 8 or 9 cards: 5 to 7 from the same subject, up to 2 from another subject when they are close enough, and one quiz or tool, in navy, at position 3. Chosen by the words the articles share, not by hand; a few pins fix the quiz for a subject. Rebuilt every time an article is added. Replaces the old three-card Related row.

AllFrench RecipesHome & TableParis & Travel
Paris & TravelNewMy French boyfriendHolidaysIs Halloween a thing in France?

Latest, with subject tabsThe top of the Journal: newest first, six cards, tabs to filter by subject. A New badge for four days. A slider further down follows the tab. Placed with data-jl, filled by jl-latest.js from the cards already on the page: nothing to update by hand.

Le JournalMy French Boyfriend: Dating a FrenchmanMy French Husband

Share cardWhat a link shows on Messages, WhatsApp or Facebook: the article’s own picture or, when there is none, a navy card with the title. 1200×630. Never the logo alone, never a drawing of the children.

Back to topA small navy circle bottom right on articles, shown once the reader is well down the page. One tap returns to the title. Never covers the floating sign-up button.

SharkFlexStyle air stylerJ.CrewBarn jacket

Our Black Friday curationOne compact carousel that scrolls sideways, placed low so it never pushes the page down: on Le Shop, under every quiz result and on the two Black Friday articles. On the home page it leads the III — Shop rail instead of being a block of its own. Nine core picks plus top ShopMy picks, one per brand, shuffled on every visit. The subtitle follows the date: watch list, Black Friday, Cyber Monday, cyber week. bf.js; it removes itself on 5 December.

Share it as an image

Share as an imageUnder every quiz verdict. Draws a 1080×1920 story card of the reader’s own result on their phone (the drawing, the verdict, its line, the link) and opens the share sheet; on a computer it downloads the card. Nothing is uploaded. share-card.js.

Next: How Parisian are you?

Next stepEvery quiz, tool and article ends with one link to the next thing to do, so nobody hits a dead end. Outline button; on a navy background it switches to its on-dark version by itself (22by).

Marks

Fixed elements. These carry their own colour and are not recoloured.

divider-rule
brand/marks/divider-rule.svg
fleur-de-lis
brand/marks/fleur-de-lis.svg
monogram-mfh · the fleur-de-lis mark
brand/marks/monogram-mfh.svg
fleur-loading · shown in hairline #E3DDCE while a drawing loads
brand/marks/fleur-loading.svg
tricolore-bar
brand/marks/tricolore-bar.svg
MyFRENCHHUSBAND
wordmark
brand/marks/wordmark.svg

Icons

24×24 grid, 1.6 stroke, round caps, currentColor. Social, interface, MFH Approved categories, and the four verdict marks.

arrow-right
brand/icons/arrow-right.svg
cat-beaute
brand/icons/cat-beaute.svg
cat-boissons
brand/icons/cat-boissons.svg
cat-epicerie
brand/icons/cat-epicerie.svg
cat-hotels
brand/icons/cat-hotels.svg
cat-maison
brand/icons/cat-maison.svg
cat-restaurants
brand/icons/cat-restaurants.svg
chevron-down
brand/icons/chevron-down.svg
close
brand/icons/close.svg
email
brand/icons/email.svg
facebook
brand/icons/facebook.svg
instagram
brand/icons/instagram.svg
link
brand/icons/link.svg
menu
brand/icons/menu.svg
newsletter
brand/icons/newsletter.svg
pinterest
brand/icons/pinterest.svg
play
brand/icons/play.svg
search
brand/icons/search.svg
tiktok
brand/icons/tiktok.svg
verdict-approuve
brand/icons/verdict-approuve.svg
verdict-bof
brand/icons/verdict-bof.svg
verdict-imposteur
brand/icons/verdict-imposteur.svg
verdict-pas
brand/icons/verdict-pas.svg
x-twitter
brand/icons/x-twitter.svg
youtube
brand/icons/youtube.svg

Part two · The site

Site map

Five doors, and what is behind each.

DoorNameWhat it is
WatchEpisodesThe films. The latest twelve reels come straight from Instagram.
PlayYour turnQuizzes, tools and adventures. About a minute each.
AskAsk My French HusbandOne question, one short ruling. Written by AI from the Journal.
ReadLe JournalField notes on French and American life.
JoinLe BulletinOur letter. Comes with The French Household Field Guide. Door IV on the homepage.

Every page and its job

PageFileJob
Homeindex.htmlMonthly editions (now Édition 02). Hero with the guide, four doors (I Watch, II Read & Play, III Ask, IV Le Bulletin) that dock as a slim bar on scroll. Then Who we are (with the how-we-met and first-date reels), I Watch, II Read & Play (one seasonal carousel of articles and quizzes, re-sorted every visit by mfh-season.js, one rule per month), III Ask, IV Le Bulletin, Brands & press. The contact email lives in the footer only.
Aboutabout.htmlA signed note, six photographs, the two origin reels, then the longer story.
Episodesepisodes.htmlThe twelve latest reels from Instagram in a grid with a sort menu, then the archive by series.
Le Journalblog.htmlLatest first: a carousel of the twelve newest with subject tabs at the top and the sign-up box under it, then a carousel of every quiz, then every article by subject with filters and its own search.
Subject hubsseven pages, one per subjectLanding pages on the French Recipes template: a lead, articles grouped in reading order, the subject’s quizzes and tools.
Your turnquiz.htmlEvery quiz, tool and adventure. Results carry Share and Print.
Ask My French Husbandask.htmlOne question in, one short ruling out. A guide box sits under the answer.
My Passeportpassport.html, passport.jsThe reader’s stamps and rank. A guide box under the stamps.
Site searchsearch.js on every pageThe magnifier in the menu. Results in three columns: Articles, Recipes and dinners, Quizzes, tools and pages. Tabs on a phone.
The Field Guideguide.htmlThe sign-up page for the free guide.
Le Bulletinbulletin.htmlThe newsletter page.
What our readers saywhat-our-readers-say.phpVote results, once a question has twenty votes.
For brandspartnerships.html, press.htmlPartnerships and the press kit.
Pitch deckpitch-deck.htmlThe partnership deck, open to anyone with the link, with the PDF (My-French-Husband-Pitch-Deck.pdf) to download. Noindex, not in the menu or the sitemap; linked from Partnerships, Press and the homepage. Jump bar instead of the site menu. Built by build-deck-page.py; traction and audience numbers are live from stats.json. Collects no personal data. No in-talks brand is named.
Small printprivacy.html, disclosure.html, faq.htmlPrivacy, disclosure and common questions.
Digital Asset Management (DAM)image-inventory.htmlEvery drawing and photo on the server, filtered by type and topic. New uploads appear on their own. Not indexed.
Le Bulletin audienceaudience.phpPrivate dashboard behind a password: This week (Double down / Fix), Audience, Content (Page by page: what each page ranks for in Google and the next step, with a prompt for Claude; quiz drop-off by question; where sign-ups happen), Ideation (from search, next reels), Optimizations, Business (brand outreach by category, travel included, with a status per brand; Not a fit hides a brand). Every suggestion has a Mark done tick. Refresh and Export PDF sit in the sticky bar. Not indexed.
Measurement hubmeasurement.phpThe event plan and links to every report. Private.
This bookbrand.htmlNot indexed by search engines, but public to anyone with the link.

Taxonomy

Seven subjects. They organise the Journal, the hubs, the drawings and the quiz tags. 72 articles today.

SubjectArticlesHub pageSends readers to
French Recipes7french-recipes.htmlCould You Survive a French Dinner Party?then Your First Dinner with French In-Laws
Home & Table16french-american-food-culture.htmlHow American Are You?then Could You Survive a French Dinner Party?
Fashion & Beauty9french-fashion-and-beauty.htmlYour French Pharmacy Skincare Routinethen Is Your Closet French or American?
French Parenting14french-parenting.htmlDo You Parent French or American?then Were You a French or an American Teenager?
Paris & Travel8paris-and-travel.htmlHow Much Vacation Would You Have in France?then Your First Day in Paris
Holidays10french-vs-american-holidays.htmlHow American Is Your Halloween?then How French Is Your Thanksgiving?
American Life8american-life-through-french-eyes.htmlHow American Are You?then Your First Day in New York
One subject per article

An article carries exactly one of the seven subjects. It decides the Journal filter, the hub page that lists it, and the drawing family.

Two links out of every article

A navy band mid-article points to the main quiz or tool for the topic; a smaller cream card at the end points to a second one. Both are written into the page as real links.

A new subject needs a hub

Do not add an eighth subject without a hub page, a filter button and at least five articles to fill it.

Quizzes use the same seven

Quiz and tool tags are the Journal subjects. A reader who filters by Fashion & Beauty sees the same word on the quiz hub.

Anatomy of an article

Top to bottom. Every article has these, in this order.

BlockWhat it does
Title, drawing, reading timeThe navy header: the drawing as a round cream medallion with a gold ring above the label (118px, 84px on a phone), then the title in Cormorant (the question a reader would type), the short line, and the byline with the date and minutes to read. The drawing is not repeated lower in the article.
Short answerThe answer in two or three lines before anything else, so a search engine or an AI can quote it.
ContentsLinks to each section.
Jump to the recipeRecipes only: a button above the fold that goes straight to the ingredients.
VoteOne question, two buttons (his side, hers), before the first section. No email.
Slim sign-upA white card mid-article. Hidden for readers who already joined.
Navy bandThe main quiz or tool for the topic.
Questions and answersFive or six real questions with short answers, marked up for search.
Ask boxAfter the questions: ask him your own.
Cream end cardA second, different quiz or tool. Smaller than the band.
Keep readingA swipeable row of 8 or 9 related cards, one quiz at position 3. Replaces the old Related row.
Up arrowBack to the top, once the reader is well down the page.
Behind the pageArticle, FAQ and breadcrumb markup, a 1200x630 social card, one subject.

Quizzes, tools and adventures

Everything behind the Play door.

KindTitles
QuizzesHow American Are You? · How Parisian Are You? · Were You a French or an American Teenager? · How American Is Your Halloween? · How French Is Your Thanksgiving? · How French Is Your Husband? · Could You Survive a French Dinner Party? · Do You Parent French or American? · Is Your Closet French or American? · How French Is Your Christmas? · How Good Is Your French? · What Would a French Person Judge You For? · Which Parisienne Are You? · Who Are You Shopping For? · City Mouse or Country Mouse? · French Zodiac Quiz · How French Is Your House?
AdventuresYour First Day in Paris · Your First Dinner with French In-Laws · Your First Day in New York · Chat Parisien or American Cat?
ToolsYour French Pharmacy Skincare Routine · Your French Makeup Look · Your French Hair Routine · What’s for Dinner? The French Way · French Grade Converter · How Much Do I Tip? · How Much Vacation Would You Have in France? · Where Is Your Paris?
My PasseportOne stamp for every quiz, tool and adventure finished (27 in all), ranks from Touriste to Citoyenne d’honneur. Kept in the reader’s browser; passport.html shows the identity page and every stamp.
About a minute

A quiz is short enough to finish in a queue. The result is a verdict, not a score sheet.

One drawing each

Every quiz, tool and adventure has its own square drawing, reused wherever it is promoted.

The result is shareable

The result screen is built to be screenshotted and sent. Tool results carry Share and Print buttons (result-actions.js): Share opens the phone’s share sheet or copies the link; Print gives a clean one-page version.

The email is asked once

At the result, with a line saying it also joins the letter. The email is the price of the result: the verdict is never shown before it.

Then one question

After the result: how it was (Loved it, Fine, Not for me), and why, when it was not Loved it. The answers become tags and decide which quizzes get shorter.

Part three · Data

Tagging

What is counted, what it is called, and the attribute that switches it on.

Events sent to Google Analytics

EventCarriesFires when
letter_viewsource, pageA sign-up form scrolls into view.
newsletter_signupsource, page, with_name, formSomeone joins Le Bulletin from that form. with_name says whether a first name was given; form is join-box for the navy box.
product_interestproduct, sourceThe topic picked in a join box, sent with the sign-up.
category_interestcategory, sourceA reader taps an interest chip above a form.
article_votearticle, sideA vote on an article question (his side or hers).
ask_promopage, positionA question is sent to Ask from a box elsewhere on the site.
quiz_promo_clickarticle, quiz, positionA click on any quiz or tool card or band.
home_ctactaA tracked link or button on the homepage: door-*, dock-* (the floating doors bar), home-who, hero-*, brands-deck.
deck_jumpsectionA section in the deck's Contents menu: show, values, brand, traction, audience, platform, signals, partners, roadmap, contact.
deck_clickctaA button in the deck: work (jumps to the contact form), brand (this page), pdf, pdf-bar (download the PDF), scroll.
deck_contacttopicThe deck's contact form was sent (partner-contact.php emails it and keeps a copy).
home_edition_vieweditionThe homepage is opened. Tells one monthly edition from the next.
site_search_openpageThe magnifier in the menu is opened.
site_searchsearch_term, resultsA search is typed (after a short pause).
site_search_clicksearch_term, urlA search result is opened.
result_sharetoolShare is tapped on a quiz or tool result.
result_printtoolPrint is tapped on a quiz or tool result.
episode_latest_clickreelA reel in the latest strip on Episodes.
journal_filtercategory, blockA subject tab or menu on the Journal is used.
journal_card_clickhrefA card in the Journal latest grid or slider is opened.
related_clickhref, position, kind, fromA card in Keep reading is opened. kind is article or quiz; position is 1 to 9.
back_to_topfromThe up arrow on an article is tapped.
signup_at_<place>pageA sign-up attempt, named by where the form sat: top, middle, end, gate, footer, passport, ask (or the box’s data-loc). Sent by search.js and mfh-join.js.
step_Nquiz or toolQuestion N of a quiz or tool was answered, once per play. Shows where people drop off.
quiz_rate_loved / _fine / _no, quiz_why_<reason>quizThe rating after a result, and the reason when it was not Loved it (long, easy, funny, topic, other).
passport_stampitem, stampsA stamp lands in the passport.
affiliate_clickproduct, pageAn Amazon link is opened (tag sachagoureau-20).
quiz_startquizA reader starts a quiz.
quiz_answerquiz, q, aAn answer is picked.
quiz_choicequiz, scene, choiceA pick in a story or a zodiac quiz.
quiz_backquiz, qThe back arrow on a question.
quiz_completequiz, scoreThe last question is answered.
quiz_gate_skippedquiz, has_emailA reader who already joined goes past the email step.
quiz_result_clickquiz, kind, toA link in a quiz result is opened.
quiz_next_stepquiz, toThe gold next-step button under the verdict.
quiz_sharequiz, tier, targetChallenge a friend (or the husband) is tapped.
quiz_share_landingquiz, tierSomeone opens a quiz from a shared challenge.
quiz_share_startquiz, tierThat person starts the quiz.
quiz_why_<reason>quizA reason is picked for liking the quiz.
quiz_feedbackquiz, stepA written note is sent after a quiz.
guide_downloadsourceThe guide is downloaded, from a quiz result or a form.
tool_next_steptool, toThe next-step button on a tool page.
article_next_steptoThe next-step button at the end of an article.
wants_selectwant, source, pageA reader picks what they want in a join box.
newsletter_errorsourceA sign-up fails.
guide_pickguide, readyA guide is picked on guide.html.
guide_toggleguideAnother guide is opened in the guide.html picker.
guide_linkguideguide.html is opened on a link to one guide.
guide_next_stepguide, toThe next-step button on guide.html.
guide_next_voteguideA vote for the next guide.
guide_preview_openpageA page of the guide preview is opened.
sticky_ctaguideThe button in the sticky bar on guide.html.
book_link—guide.html is opened on #book.
book_interestanswerAn answer to the book question.
book_pricebandA price band is picked for the book.

Attributes in the page

AttributeWhat it does
data-letter="KEY"Places a sign-up form. KEY becomes SOURCE in Mailchimp and source in GA4.
data-cta="name"Homepage link or button to count as home_cta.
data-edition="01"On the homepage main tag. The edition number, sent with home_edition_view.
data-quiz-promo="quiz" data-quiz-pos="where"Any link to a quiz or tool. Position is mid, end, home or journal.
data-ask-promo="where"A question box that hands off to the Ask page.
data-vote="slug"The vote card inside an article.
data-cat="Subject"The subject on a Journal card. Filters, counts and jl-latest.js read it.
data-join data-source="guide-KEY" data-topic="..."Places the navy join box (mfh-join.js). data-topic preselects the topic.
data-jl="grid|slider|feature"A Journal latest block (jl-latest.js). data-n, data-skip, data-filter="tabs|select", data-follow, data-more.
data-pos="3" data-kind="quiz"On each Keep reading card, sent with related_click.
data-loc="place"On a join box or form: names its place for signup_at_<place>. Without it, the place is worked out from the height on the page.
data-join data-compactThe one-line join box: email only, the guide opens at once.

Fields sent to Mailchimp

FieldWhat goes in it
EMAILThe address. The only thing a reader must give.
FNAMEFirst name. Asked on the Le Bulletin form and the join boxes, used to open the email.
INTERESTOne of five topics: French food & recipes, Home decor, Fashion & beauty, Parenting, Paris & travel. Decides the welcome branch; without one, people get Pick your letter.
WANTSWhat the reader asked for more of, in their words when they chose Other. Also added as a Wants: tag by mfh-api.php.
SOURCEWhich form: the KEY, with guide- in front when the form offers the guide and -ig at the end when the visit came from an Instagram DM link. Join boxes: guide-dinner, guide-about, guide-passport, guide-ask.
SRCPAGEThe page the form was on.
PRODUCTOptional interest chips the reader tapped.
Name the placement, not the page

A new form gets its own KEY so its conversion rate can be read on its own: guide-article-end, not article.

Lower case, underscores, no personal data

Event names are snake_case. No email or name ever goes into an event or a web address. Search terms are the one free text sent, and never contain a name we asked for.

Real links first, tracking second

The link works without JavaScript. The attribute only adds the count.

Data collection

What we collect, where it is kept, and whether it is tied to a person.

WhatWhere it is keptTied to a person?
Email sign-upMailchimpYes: email, form, page. If it came from a quiz: which quiz and the result.
Article votevotes-data.php on our serverNo. A count only. A one-way fingerprint stops repeat votes and is discarded at the end of the day.
Question to AskLog on our server; sent to the AI model to write the answerNo. The question text only, no name or email.
Email sign-up with a first nameMailchimpYes: the first name, if the reader gave it. Optional, never required.
Page views, clicks and searchesGoogle Analytics 4No. Aggregate: pages, country, device, search terms, the events above.
Joined / voted flagsThe reader’s own browserNo. Stays on the device so we do not ask twice.
Search Console and GA4 reportsgoogle-data.php, cached 6 hours in _bureau/google-cache.jsonNo. Aggregate pages, queries and events, read by a Viewer service account whose key stays in _bureau/.
Dashboard ticks_bureau/audience-done.jsonNo. Which suggested tasks were marked done, and the outreach status of each brand.
Passport stampsThe reader’s own browser; as “Stamp:” tags in Mailchimp once the reader is a subscriberOnly for subscribers, as tags.
Quiz ratings and reasonsMailchimp tags (Liked:, Liked why:) and GA4 eventsYes in Mailchimp, for subscribers; no in GA4.
Instagram comment-to-DMManyChatYes: the Instagram account that commented. The email is still asked only on our site.
Say it under the field

Every form that asks for an email states what arrives and how to stop, with a link to the privacy page.

Votes and questions never ask for an email

They are the low-effort way in. The email is asked for once, by a separate form that says so.

Publish results only with enough answers

A vote result appears on the reader data page once it has twenty votes.

Use it for content

Questions sent to Ask and vote splits decide what gets written next. They are never sold or shared with a brand.

No ad trackers

No advertising pixels, no retargeting, no sold lists. The privacy page lists every place data is collected and must be updated with each new one.

How the site gets found, and how its own AI behaves.

Answer first

Each article opens with the short answer. That is what gets quoted by search engines and AI assistants.

One hub per subject

Seven hub pages link every article in a subject, so nothing is more than two clicks from the homepage.

Search on every page

search-index.json lists every article, recipe, dinner, quiz, tool and page with its drawing. It is rebuilt by build-search.py whenever something is published.

A page for machines

llms.txt lists what the site is and where the best answers are. sitemap.xml and feed.xml are kept current with every new page.

Our own data

What our readers say publishes vote results. Original numbers are what other sites link to.

Ask is built on the Journal

An answer is written only from our own articles, in his voice, kept short and marked as AI. There is a daily limit per visitor.

Questions become articles

What people ask is logged, without names, and read when planning what to write.

Email and the guide

What a reader receives after signing up.

One welcome email

The same for everyone: the wordmark, our garden photo and how it started, three quizzes (Parisian lips, American coffee, dinner wine), Ask, and New this month. Short.

New this month

Three articles that fit the month, swapped at the start of each month alongside the homepage edition.

Only site images

Every image in an email is a file already live on the site, linked with its full address. No email-only copies to forget to upload.

The guide email

A sign-up from a form that offers the guide gets the guide email instead. Mailchimp decides from SOURCE.

The Field Guide

The French Household Field Guide, a PDF. The version number is on the cover so copies can be told apart. Currently 2.0: rewritten in Elizabeth’s voice, with the current drawings. Built from guide_content.py by build-guide-pdf.py.

The guide’s voice

Elizabeth’s voice, in the first person: funny, sweet and lighthearted. A little snapshot for now, meant to grow into something much bigger for everyone craving more France. Warmer than the Journal, never a lecture, and never a made-up story about us.

Le Bulletin

Our letters. Plain, written by her, approved by him. Opens with the first name when we have it.

In every email

An unsubscribe link and a postal address.

Part four · Keeping it straight

Usage

The parts that are easy to get wrong.

The seal is never sold

The Approuvé seal marks editorial verdicts only. It never appears on an affiliate link, a sponsored placement or a brand’s own packaging. The moment a verdict can be bought, the seal is worth nothing.

Two verdict systems, kept apart

MFH Approved answers “is this actually French?” — researched, dated, sourced. Chic or Pas answers “does he like it?” — fast and opinionated. They never share a mark.

Icons inherit their colour

Every icon is stroked with currentColor, so it takes the colour of whatever contains it. Never edit a colour into an icon file — set it on the parent.

One accent at a time

Gold is the accent. On any given block, one element gets it. Two gold elements competing is the fastest way to make a page look cheap.

Gold on dark, blue on light

Gold text needs a dark ground to pass contrast. On cream, use blue for text and keep gold for rules, borders and stamps.

AI is always labelled

Anything written by a model says so next to the answer: “Written by AI from our Journal, in his voice.” It never invents a quote, an anecdote or a fact about the family.

Drawings are not social cards

An illustration decorates a page. It is never the og:image or the schema image of an article — those are the og-<slug>.png cards.

One line under every email field

Each form that asks for an email says what arrives and how to stop it, with a link to the privacy page. Votes and questions to Ask never ask for an email.

Bump the version when a file changes

Images and scripts are linked with a version tag (?v=2026100701). Change the file, change the tag, or returning readers keep the old one.

Rows are carousels

A row of articles or quizzes is a swipeable carousel: arrows on a desktop, swipe on a phone, cards the same height. The homepage has no filter toggles. Le Journal keeps its subject tabs because each one is a link to a subject page.

Sections touch

Homepage sections sit edge to edge, each on its own ground, never the same ground twice in a row. The space lives inside a section (about 50px top and bottom on a desktop, 42px on a phone), never as a gap between two.

One picture at the top of a page

An article shows its drawing once, in the header medallion. The same drawing is never repeated in the body, and the header never pushes the text down more than the old gold rule did.

Say it once

Contact details, links and calls to action appear once on a page. The email address lives in the footer; a section does not repeat it.

The free guide pop-up is polite

It opens once, after 5 seconds, on exit intent or at 30% of the page. Never for subscribers. Closing it snoozes it for 14 days and leaves a small tab. Every step is tracked in GA4 and L’Audience.

The homepage follows the season

The Read & Play carousel has one rule per month, with next month’s first two picks from the 22nd, then evergreen pages. At least three quizzes or tools in ten cards.

French for names, English for navigation

Nav and section labels are English. French is kept for proper names — Malgré Lui, Le Bulletin, La Tribune — and for editorial furniture inside articles: En bref, Les faits.

Built with AI

What was made with AI, which tool made it, and the rules we hold it to.

WhatMade withWhat it does
Ask My French HusbandClaude, on our serverThe one place a reader meets AI. A short ruling written from our own Journal articles, in his voice, labelled as AI.
The site workbenchClaude agentBuilds and edits articles, the homepage, hubs, menu, footer, forms, votes and this book. Works on a copy, tests at phone and desktop width, hands back a zip.
The quiz workbenchClaude agentA second agent that builds the quizzes, tools and adventures. The two never edit each other’s files.
Build scriptsWritten by the agentsSmall Python scripts that stamp the menu, footer, article blocks, social cards, hubs and sitemap into every page, so one change reaches the whole site.
ArticlesClaude, then usResearched and drafted from our videos, notes and reader questions, then read, corrected and approved by us before publishing.
DrawingsChatGPT project “MFH drawings”, then ClaudeDrawn as sheets of six in one house style from a standing brief, then cut, cleaned to a transparent background and named by Claude.
Digital Asset Management (DAM)Claude, by scriptA page listing every image on the server by type and topic, so drawings are reused before new ones are asked for.
Site searchClaude, by scriptThe search index and the three-column results, rebuilt with every publish.
MFH StudioClaude skillPost-production producer for the reels: hooks, edit lists, rough cuts, captions and variants from raw footage.
Site checksClaude skillBefore each upload: titles, descriptions, search markup, broken links, missing alt text, sitemap.
The Field Guide and this bookGenerated by scriptBoth PDFs are rebuilt from source, so a new version is one command.
Reader insightClaudeReads the audience export, the vote splits and the questions sent to Ask, and turns them into the next articles and quizzes.
Welcome emailClaudeDesigned and coded in the site’s look, from images already on the site. New this month is swapped monthly.
AI builds, we approve

Nothing goes live until one of us has read it. Facts that could be wrong are checked or cut.

It never invents us

No made-up quotes, anecdotes or family details. A personal note is written by the person who signs it.

Labelled where a reader meets it

Ask says it is written by AI, next to every answer.

One job per agent

Each agent owns its files. Work crosses between them as written instructions, not as edits to the other’s pages.

Keys stay out of the conversation

API keys and passwords are typed into the server or the service itself, never pasted into a chat.

The voice is the test

If a line sounds like a machine wrote it, it is rewritten. The verdict comes first, the sentences are short, and nobody explains the joke.

How it is built

The working rules behind every change.

Hand-built, no CMS

Static HTML on shared hosting. Scripts stamp the shared parts (menu, footer, forms, article blocks) into each page.

Change the source, then re-stamp

Menu, footer and article blocks are edited in their script, never page by page.

Everything at the root

No new folders. A new page or image goes beside the others.

Two workbenches

Quizzes, tools and the quiz hub are built separately from articles and the rest of the site. Neither overwrites the other’s files.

Check before upload

Read before editing, confirm each replacement matched once, test at 390px and 1280px, audit links.

Compare with live first

Before a page is replaced, the live copy is checked against the last known version, so an edit made on the server is never overwritten.

Reuse images first

Check the DAM before asking for a drawing. A new one is made only when nothing on the server fits.

The homepage changes monthly

Each edition gets a number on the page and in GA4. What changed and why goes in the editions log.

Keys stay on the server

API keys and passwords live in a server file that is never put in a zip, an email or a chat.

First paint stays in the page

Each page carries the CSS for what shows first (header, banner, contents) in <style id="crit">; styles.css loads after it. Do not move those blocks into styles.css, or the header paints late.

One copy of each component

A shared block is identical on every page that has it. When it changes, every copy changes in the same release. A scan of repeated blocks checks for drift.

New file, new version

Scripts and styles are cached for 30 days, so a changed file gets a new ?v=. nav.js loads search.js, which loads passport.js: a change to passport.js means a new version in search.js, in nav.js and on every page.

Colours are tokens

Every colour, including the extra shades, is named in :root of styles.css (--gold, --gold-deep, --navy-light, --wordmark…). New CSS uses the token, not the hex.

Current versions

WhatVersion
Stylesheetstyles.css?v=2026101905
Menunav.js 2026102501
Forms, votes, Ask handoffletter.js 2026102411
Field Guide2.0 · 8 October 2026
Site search, and where sign-ups happensearch.js 2026102501
Passportpassport.js 2026102501 (27 stamps)
Quizzesquiz.js 2026102602 (17 older pages still ask for 2026102502) · quiz.css 2026102604
Next-step buttons on toolsnext-step.js 2026102501
Share as an imageshare-card.js 2026102501
Black Friday curationbf.js 2026102508 (until 5 December)
Le Shop picksshop-picks.js 2026102301
Join boxmfh-join.js 2026101301
Journal latestjl-latest.js 2026101601
Keep readingrx 2026-10-11
HomepageÉdition 02 · 14 October 2026 (mfh-season.js 2026102501)
Free guide pop-upmfh-popup.js 2026101901
Welcome emailv18
This book11 · 26 October 2026

Files

Everything lives in the site root, so paths stay simple.

AssetPathFormat
Main logologo-premium.png (copy: logo-wordmark.png)PNG, transparent, 749×489Download
Portrait of usportrait-us.png, hero-portrait.pngPNG, circular cropDownload .zip
Favicon setfavicon.svg, favicon-16/32/180/192.pngSVG + PNGDownload .zip
Approuvé sealapprouve-seal.pngPNG 600×600, transparentDownload
Chic or Pas badgechic-or-pas-badge.pngPNG 480×480, transparentDownload
Icon librarybrand/icons/*.svgSVG, currentColorDownload .zip
Brand marksbrand/marks/*.svgSVG, brand colourDownload .zip
Article social cardsog-<slug>.pngPNG 1200×630Download .zip
Article drawingsillus-c-<slug>.webpWebP 400×400, transparentDownload .zip
Season, calendar and page drawingsillus-s-<name>.webpWebP, transparent, squareDownload .zip
Pastry drawingsillus-p-<pastry>.webpWebP, transparent, squareDownload .zip
Home drawingshome-<name>.webpWebP 400×400, transparentDownload .zip
Fashion and beauty drawingsfb-<name>.webpWebP 400×400, transparent. Evergreen, reused across Fashion & BeautyDownload .zip
Quiz and tool drawingsquiz-<name>.webp, quiz-<quiz>-<question>.webpWebP 600×600, transparentDownload .zip
Digital Asset Management (DAM)image-inventory.html, image-inventory-files.phpEvery image on the server, by type and topicOpen
Site searchsearch.js, search-index.jsonScript + index, rebuilt by build-search.pyDownload .zip
Result buttonsresult-actions.jsShare and Print on quiz and tool resultsDownload
About photographsabout-<name>.webpWebP 720×900Download .zip
Field Guidethe-french-household-field-guide.pdf, guide-cover.jpgPDF + cover imageDownload .zip
Welcome emaillogo-wordmark.png (the main logo) and site imagesFull web addresses, no email-only files
This bookMyFrenchHusband_BrandBook.pdfPDFDownload

Download the book (PDF)

Two assets are raster, not vector. The portrait and the Approuvé seal are photographic illustrations, so they exist only as PNG. They are fine at current sizes, but cannot be scaled to signage, print or embroidery without an illustrator redrawing them. Everything else here is vector and scales without limit.
To regenerate. make-brand-assets.py writes the SVGs, make-favicons.py the favicon set, make-brand-book.py this page and make-brand-pdf.py the PDF. All read the same source files, so the book cannot drift from the assets. The taxonomy, tagging and data tables live in brand_data.py, read by both the page and the PDF.