# Fixxo — Brand Guidelines

**Version** 2.0 · September 2026
**Owner** Brand owner (CEO until a design lead is hired) · reviewed before any customer-facing asset ships.
**Companion files** `DESIGN.md` (the machine-readable system) · `FIXXO_V2_DESIGN_SYSTEM.html` (visual reference) · `assets/brand/*.svg` (logo files).

---

## 1 · The brand idea

**Fixxo is one accountable party for the home repair — run by AI, across every trade that enters a home.**

The category is broken in a specific way: marketplaces sell *leads*, so three to eight strangers call you, nobody owns the outcome, and the price is a surprise. Fixxo is the opposite shape. You describe the problem any way you like; AI diagnoses it, prices it fixed, and matches exactly one verified professional — with the reasoning shown. Money is held until you approve the work, and one party answers when something goes wrong.

Everything in this brand is downstream of that. It reads calm because the promise is calm. It reads precise because the promise is a number. It refuses decoration because decoration is what the lead-sellers use to cover the gap.

**Positioning line (internal):** the AI operator, not the directory.

**Customer-facing descriptor:** *The AI operator for home repair.*
**Primary line:** *Tell us what's wrong. We handle everything after.*
**Secondary line:** *One verified pro. One fixed price. Paid only when you approve.*

Never use: "empower", "unlock", "seamless", "effortless", "revolutionise", "transform", "the future of home services". Never say "AI-powered" on its own — always say what the AI does: it diagnoses, it prices, it matches.

---

## 2 · Name

**Fixxo** — one word, lowercase in the wordmark, capitalised in prose (`Fixxo`).

- Never `FixXo`, `FIXxo`, `FiXXo`, or `Fix xo`.
- Never pluralise or possessivise in a logo: not `Fixxo's`.
- The wordmark is set in Inter **700** at −0.045em, lowercase, in near-black. No serif, no italic, no alternates.
- Trademark: US clearance against `fixxo.in` (Bengaluru) is a **W0 blocker** before any brand spend. Tracked in the playbook §10.3.

**Domain and handles:** own `fixxo.com` and `fixxo.co`; reserve `getfixxo`, `fixxohome`. Handles must be identical across surfaces or the account is not created.

**Parked track — "Fixxo Her".** A women-first programme (women-delivered pilot, request-a-woman matching) was designed and is retained in `WOMEN_PILOT.md`. It is **not** the launch positioning and carries no public presence until reactivated. If reactivated, it ships under the same mark and palette — never a second identity, never a separate brand.

---

## 3 · Audience & promise

| Audience | What they are afraid of | What the brand must prove |
|---|---|---|
| Homeowner (default) | Being overcharged, being talked down to, a stranger in the house | The price before the visit; escrow; a verified name and photo |
| Homeowner (member) | Systems failing with no history | A home file, a plan, and a sensor that calls us first |
| Provider | Paying for leads that never convert | 82–85% of the job, no lead fees, paid 3–7 days after QC |

The promise is identical for every audience: **we are the one who is accountable.**

---

## 4 · Voice & tone

**Voice:** plain-spoken, specific, unhurried. A good tradesperson explaining what they found and what it costs. Never salesy, never chummy, never apologetic.

**Rules**
1. **Lead with the number or the fact.** "Your price is $312." Not "We're excited to help you with your project."
2. **Name the consequence.** "No money leaves your account until you approve the work."
3. **Say the hard thing plainly.** "That card was declined. Nothing was charged."
4. **Short sentences. No exclamation marks. No emoji.**
5. **Second person, active voice.** "You approve the work." Not "The work is approved."
6. **Never blame the user.** "The photo is too dark to price accurately." Not "Invalid image."
7. **Define a term the first time.** "Escrow — we hold the money until you approve."
8. **Delete 30%.** If a sentence survives without loss, it was never carrying weight.

**Banned words** (banned at build time by lint, not by memory): empower, unlock, seamless, effortlessly, revolutionise, transform, elevate, cutting-edge, next-generation, AI-powered, game-changing, future of, one-stop, hassle-free, curated, bespoke. Plus every emoji.

**Tone shifts by moment**

| Moment | Tone |
|---|---|
| Intake | Warm, brief, curious — one question at a time |
| Quote | Flat, factual, numeric |
| Payment | Reassuring and precise about money |
| In progress | Terse status. Times, names, ETAs |
| Error | Direct, then the fix. Never an apology before the remedy |
| Dispute | Calm, procedural, options not arguments |
| Provider | Peer-to-peer. Numbers first, no pep talk |

---

## 5 · Logo system

### The mark
A rounded frame — the home as the AI sees it — with a single offset point: the fault, found. One frame, one point, the way the product gives one pro, one price, one accountable party. Reversed white out of a purple squircle; a single-colour `currentColor` version exists for one-ink use.

**Why this and not the obvious thing.** Bolts, wrenches, houses, roofs, sparks, shields, checkmarks and letter monograms are the defaults every generated identity reaches for. A mark with a job to do — say what the product does in one glance — is a decision; an icon cliché is an absence of one. It also holds at 16px, embroideries, and in one colour.

### Files
| File | Use |
|---|---|
| `assets/brand/fixxo-mark.svg` | Mark on any surface; 32px grid |
| `assets/brand/fixxo-app-icon.svg` | Store listing + homescreen; 1024px, corner ratio 288 |
| `assets/brand/fixxo-favicon.svg` | 16–32px; thickened frame, enlarged point |
| `assets/brand/fixxo-mark-mono.svg` | One-colour version (`currentColor`) for print, embroidery, single-ink |
| `assets/brand/fixxo-lockup-horizontal.svg` | Mark + wordmark, default identity |

### Lockups
- **Horizontal** (default): mark + wordmark, gap = 0.5× mark height.
- **Stacked**: mark above wordmark, centred, gap = 0.4× mark height. For narrow formats.
- **Mark only**: app icon, favicon, avatar, van decal, uniform.
- **Wordmark only**: documents and footers where the mark already appears.

### Clear space & minimum size
- Clear space on all sides = **0.5× mark height** (never place text or a rule inside it).
- Minimum sizes — mark **16px**, horizontal lockup **88px wide**, stacked **56px wide**. Below that, use the mark alone.

### Misuse — never
Gradient on the mark · drop shadow · outline · rotation · a second purple · placing the mark on a photo without a solid chip behind it · recreating the wordmark in a non-Inter face · stretching · placing on a mid-tone without contrast check · adding "®" to the lockup (use prose only).

---

## 6 · Colour

Three hues. That is the whole palette.

| Role | Value | Use |
|---|---|---|
| **Purple** | `#6D28D9` | The accent. One use per view: the primary action, the active state, or the live marker |
| **Ink** | `#0D0D0F` | Body text, headings, completed states. Cool near-black, never `#000` |
| **Canvas** | `#FFFFFF` | The page. Pure white; recessed surfaces use `#F7F7F8` |

Supporting neutrals (cool): surface `#F7F7F8` recessed · line `#EAEAEC` hairline · ink-2 `#52525B` secondary · ink-3 `#A1A1AA` captions.

Purple ramp for tints and dark mode: 50 `#F5F3FF` · 100 `#EDE9FE` · 200 `#DDD6FE` · 300 `#A78BFA` · 400 `#8B5CF6` · 500 `#7C3AED` · 600 `#7C3AED` · **700 `#6D28D9`** · 800 `#5B21B6` hover · 900 `#4C1D95` press · 950 `#4C1D95`.

Semantic status (separate from brand): ok `#16A34A` · warn `#D97706` · bad `#DC2626`. **Never colour-only** — a 6px dot plus a label.

**Rules**
- Maximum three active hues in any view. Extend with tints, never new hues.
- **No gradients.** Not on buttons, backgrounds, charts, or hero type. This is absolute.
- Contrast is measured, not eyeballed: body ink on white clears AAA; `on-accent` on purple clears AA at every size.
- Dark mode is a warm **sibling** palette (canvas `#0B0B0D`, accent lifts to purple-300), not an inversion.

---

## 7 · Typography

**One typeface: Inter.** That is the whole system. It is the neutral grotesque the products we benchmark against use — Google Sans, Söhne, SF Pro all occupy the same silhouette family — and it means the brand reads as a software product, not as editorial stationery.

| Weight | Role |
|---|---|
| 400 | Body, paragraphs, chat |
| 500 | Controls, labels, table headers, nav |
| 600 | Headings, card titles, buttons |
| 700 | Display only — hero headlines, section openers |

**Numbers are tabular.** Every price, distance, percentage and rating uses `font-variant-numeric: tabular-nums` so figures align in columns and never jitter in a timeline.

Scale (px): 12 · 13 · 14 · **15 body** · 16 · 18 · 20 · 24 · 30 · 36 · 48. Tracking tightens as size grows: −0.011em at body → −0.02em at titles → −0.03em at display. Never set body below 15px. Measure 62–66 characters for prose and chat. Headings use `text-wrap: balance`, body `text-wrap: pretty`.

**No serif. No display face. No second sans. No monospace in the product UI.** JetBrains Mono appears only in documentation and code samples, never in a customer or provider screen.

The single face is the decision: one family, four weights, and hierarchy carried entirely by size, weight and space. That is how the surfaces we are measured against do it.

---

## 8 · Iconography

- **Type and shape carry meaning first.** A state is a word plus a square marker, not a pictogram.
- Utility glyphs are single-stroke, 1.6px, 24px grid, `currentColor`, no fills or duotone.
- **No emoji, ever** — not in product, marketing, notifications, or support macros.
- Banned glyphs: bolt, wrench, house, roof, spark, shield-with-check, handshake, thumbs-up.
- The tab bar uses 16px outlined squares that fill when active. Status is a 6px dot plus a label.

---

## 9 · Imagery

**The product UI ships without photography.** This is a deliberate inversion of the previous direction, which used random stock photos and made every screen look generic.

- **Job photos are the customer's own uploads.** In mockups they appear as neutral placeholder frames, never as stock imagery.
- **Avatars are initials** on a soft purple field. Never a random face.
- **No stock photography, no random people, no generated images, no watermarked samples — anywhere in the product.**
- Where a marketing surface genuinely needs an image, it is a **commissioned shoot**: 1 day per pilot city, ~40 selects, model releases on file, real technicians and real homes in the markets we serve.
- **Treatment** — natural light, real working conditions, no heavy filter, no duotone, no purple tint. Alt text is mandatory.

If a screen needs an image to look complete, the layout is wrong. The companies we benchmark against prove that: their product surfaces are typography, layout, colour and content — not photography.

---

## 10 · Motion

One authored system. Motion only *explains state*; it never decorates.

- Durations: **120ms** (hover, press) · **200ms** (toggles) · **300ms** (sheets)
- Curve: `cubic-bezier(.22,1,.36,1)` — used everywhere, never a browser default
- **No fade-up-on-scroll.** No parallax. No ambient loops. A subtle press-scale on a button is allowed; a hover scale-and-shadow is not.
- Permitted: a 6px dot pulsing at 1.8s for a live state; the streaming caret; a skeleton that matches the layout it replaces.
- `prefers-reduced-motion: reduce` collapses everything to 0.01ms. Non-negotiable.

---

## 11 · Applications

| Surface | Spec |
|---|---|
| **App icon** | Purple squircle, white frame-and-point, 1024px master, corner ratio 288. No padding frame, no text |
| **Favicon** | `fixxo-favicon.svg` — thickened F on purple at 16px |
| **Social avatar** | Mark only, purple field, 12% padding |
| **Social post** | White field, Inter 700 headline, purple used once |
| **Van / uniform** | Mark only, in purple on white or near-black; never the lockup below 88px |
| **Receipt / statement** | Wordmark top-left, tabular figures for every amount, purple for the total only |
| **Email** | White background, Inter stack, no hero image, one CTA |
| **Proposal / deck** | 16:9, white field, Inter 600 section titles, purple for the single decision per slide |
| **Review card** | White, tabular rating figures, no badge graphics |

---

## 12 · Governance

- **Brand owner** reviews every customer-facing asset before it ships. At pilot scale this is the CEO.
- **Tokens are the law.** Colour, type, spacing and radius come from `design/v2/tokens.css` / `design/tokens.json`. Hard-coded hex, px, or font names in product code fail review.
- **The anti-slop ledger is enforced.** See `DESIGN.md` §9. A build that reintroduces a banned pattern is a defect, not a style preference.
- **Parked track.** "Fixxo Her" stays a working name only. No trademark, handle, or spend until the programme is reactivated.
- Review cadence: brand audit quarterly; token audit on every release.

---

## Appendix · The anti-slop ledger (summary)

| Dimension | The tell | Our decision |
|---|---|---|
| Palette | Purple→blue gradient, neon violet, pure `#fff`/`#000` | White canvas, warm ink, one purple. Zero gradients |
| Type | Inter / Roboto / system stack; default 3rem→1rem ladder | Inter + Sans + Inter; modular scale; per-size tracking |
| Layout | Centred hero, badge above H1, three equal cards, uniform `py-24` | Left-anchored, asymmetric, chat-led; section rhythm 60→120px |
| Surface | Gray 1px border on every card, `rounded-2xl`, `shadow-lg` | Borderless cards; tone shift before border; radius 2–4px |
| Motion | Fade-up on scroll, hover scale+shadow, 0.1s flat stagger | One authored curve set; motion only on state |
| Iconography | Bolt/wrench/house clichés, 48px icons above headings, emoji | Frame-and-point mark; type and shape carry meaning; no emoji |
| Craft | No `::selection`, no `:focus-visible`, no reduced-motion, inverted dark | All four authored; dark is a warm sibling palette |

Full detail in `DESIGN.md`.
