# Bible Song Pro — Brand Identity v1.0

**Status:** Foundation release · August 2026
**Owner:** Johnson Olakotan
**Scope:** Name, position, verbal identity, visual identity, motion, architecture, governance.

---

## 00 · What this is built on

Everything below is derived from what the product actually is, not from what the
category says it should be:

| Source | What it told us |
|---|---|
| `Johnbatey/bible-song-pro` (v2.1.0, GPL-3.0, 41★, 13 forks) | BSP was born as an **OBS browser source**. It grew up inside the stream, not beside it. |
| `Bible Song Pro Max` (Electron desktop app) | `ndi-service`, `obs-service`, `deck-service`, `stage-layouts-service`, `PreviewProgramView`, `AnimatedLowerThird`, `StagePanel`, `dockview` panels, 4px radius, `#111010` ground, `#FF5500` accent. This is **a live production console**, not a slide app. |
| Transcription stack (`mlx-whisper`, `whisper-onnx`, `deepgram`, `listen-with-fallback`) | Detection is **local-first with a cloud fallback** — a reliability decision, not a marketing feature. |
| `song-import-service`, `SongsPanel`, the name itself | Song is **equal weight** to scripture. Half the product is in the name and the category keeps forgetting it. |
| Johnson Olakotan brand guidelines v2 | "Bible Song Pro credited to Johnson, **not absorbed as a sub-brand**." BSP is an endorsed brand, not a house brand. |

---

## 01 · The competitive read

Four direct comparables — EasyVerse, Pewbeam, Loghema, Rhema — and they are all
saying **the same sentence**:

> "Pastors speak. Verses appear, instantly." — EasyVerse
> "Bring Scripture to Life, Instantly." — Pewbeam
> "Your Pastor speaks. Rhema finds the verse." — Rhema
> "Imagine a sermon experience where nothing interrupts the moment." — Loghema

They also share a visual language: white or near-white grounds, soft rounded
cards, a friendly sans, stock worship photography, three-tier pricing cards.

**Two conclusions.**

1. **Voice-detected scripture is table stakes, not a position.** When four
   companies claim the same mechanic in the same words, the mechanic stops
   selling. BSP has this feature and should *never lead with it.*
2. **Nobody in this category looks like broadcast.** They all look like SaaS.
   The people BSP is actually built for spend their Sunday inside OBS, vMix,
   Resolve, an ATEM panel — all of them dark, dense, and instrumented. The
   entire category is dressed for the wrong room.

That is the opening. BSP does not enter as a friendlier verse-finder. It enters
**a category above** them.

---

## 02 · Position

> **Bible Song Pro is the live production console for scripture and song.**

For the church media team that runs a real broadcast, Bible Song Pro is the only
worship presentation software built *inside* the streaming stack — OBS, vMix,
NDI — where every verse and every lyric is cued, previewed and taken to air like
any other source on the desk.

Unlike the AI verse-finders, BSP treats detection as **one instrument on the
console**, not the whole product.

**Category we are claiming:** live production console (worship).
**Category we are leaving:** AI scripture display.

### Positioning ladder

| Level | Statement |
|---|---|
| Functional | Cue, preview and take scripture, lyrics and media to air from one desk. |
| Operational | Nothing reaches the screen that the operator has not seen first. |
| Emotional | The service moves and no one thinks about the software. |
| Belief | The word deserves the same production standard as the music. |

---

## 03 · Pillars

**1. Broadcast-native.**
Preview/Program. NDI out. Lower thirds. OBS and vMix as first-class targets,
not exports. Born in the stream — the only one in the category that can say it,
because there is a public repo dated to prove it.

**2. Operator-first.**
Dark, dense, keyboard-driven, no surprises under pressure. The interface is
designed for someone who is also watching a camera feed, a chat, and a clock.
Every control does exactly what its label says and nothing else.

**3. Reverent.**
The software's ambition is to disappear. Scripture is quoted, never paraphrased.
No effect exists to show that an effect exists.

**4. Open at the root.**
The OBS/vMix plugin stays free and open source under GPL-3.0. Permanently. It is
where the trust was earned and it is not going behind a paywall to feed the
desktop app — and neither is the desktop app. Both ship free under GPL-3.0.

---

## 04 · Audience

**Primary — The Operator.** Runs the booth on Sunday. Often a volunteer, often
technically sharp, usually under-supported. Judges software in the first 90
seconds by whether the shortcuts make sense. Buys on control and reliability.
Fears one thing above all: the wrong thing on the big screen.

**Secondary — The Media Director.** Owns the stack across campuses, signs off
budget, cares about NDI routing, multi-output, standardisation and whether the
volunteer can be trained in an afternoon.

**Tertiary — The Pastor.** Never opens the app. Notices only when scripture is
late, wrong, or ugly. The brand should never be sold *to* them, only felt.

We do not design for "the church" as an abstraction. We design for one person in
a dark room with four screens and eight minutes before doors.

---

## 05 · Name & architecture

**Master brand:** `Bible Song Pro` — full name in all first references.
**Short form:** `BSP` — permitted in product chrome, filenames, docs, community
and the badge lockup. Already in the wild (`BSP_display.html`), so it is real
equity, not an invention. Never `B.S.P.`, never `bsp` in prose.

### Product lines

```
Bible Song Pro                        the master brand
├── Bible Song Pro for OBS & vMix     free · open source · GPL-3.0 · forever
│                                     the doorway. Never called "Lite".
└── Bible Song Pro ˢᵗᵘᵈⁱᵒ             the desktop console (macOS, Windows, Linux)
                                      free · open source · GPL-3.0
```

**There is no edition ladder.** The whole console ships free and open, so the
name has exactly one job: tell the two products apart. No Free/Pro/Studio, no
licence key, no seat count, no trial. Every direct comparable sells three
pricing cards; having none is a position, not a gap, and the licence is what
lets it hold.

### The Studio superscript

`Studio` is set as a **superscript on the master brand** — Signal face,
uppercase, `0.10em` tracking, **monochrome**, ~44% of the wordmark's size with a
10px floor, offset `0.36em`. The plugin keeps the plain wordmark. Chrome that
covers both products — a website nav, a footer — carries the master brand alone.

This supersedes the earlier rule that edition names sit after the product name.
`Bible Song Pro — Studio` reads like a tier with siblings, and there are no
siblings. A superscript reads like a variant, which is what it is. The rule it
does **not** relax: the superscript is never coloured. The mark carries the
orange; no part of the wordmark does.

**Recommendation on "Max":** keep it internal. Publicly the app is simply
*Bible Song Pro* — Apple already owns "Max" as a tier signifier and it reads as
hardware. Your call, but shipping "Bible Song Pro Max" costs you the clean master
brand you already have, and the Studio superscript already does the work "Max"
was reaching for.

### Endorsement

`Bible Song Pro` is an **endorsed brand**. Johnson Olakotan appears as the maker,
not the parent:

> **Built by Johnson Olakotan** — Johnson's Signal Mark, white or ink only,
> footer and About page only.

Hard rule from the personal guidelines, carried over: BSP is credited *to*
Johnson and never absorbed *into* him. Practically:

- Johnson's Signal Amber `#D98A3D` and BSP's Signal Orange `#FF5500` **never
  appear in the same composition.**
- Fraunces never appears in a BSP surface. Source Serif 4 never appears in a
  Johnson surface.
- The one legal shared surface is the endorsement lockup, which is monochrome.

The relationship is structural, not cosmetic — both systems run *voice /
interface / signal* as their three type roles. Same discipline, different faces.
Siblings, not twins.

---

## 06 · Verbal identity

### Brand line

> **The word, on cue.**

Two readings, both true: the broadcast cue, and scripture arriving exactly when
it is needed. It refuses the category's shared sentence and claims the console
instead. Set in Inter 600 or Source Serif 4 — never both, never stacked.

### Descriptor (always available, used where the line alone is too oblique)

> The live production console for scripture and song.

### Supporting lines (approved)

- Cue it. See it. Take it to air.
- Nothing reaches the screen you haven't seen.
- Built inside the stream, not beside it.
- Preview is green. Program is orange. That's the whole system.
- Free and open source in OBS since 2024. Still is.

### Voice principles

**Say the number.** "312 ms from utterance to on-air." Never "lightning fast."
Numbers are the vocabulary of people who run live events.

**Lead with the operator's verb.** Cue, preview, take, clear, arm, route, hold.
These are the words spoken in a real gallery. Using them correctly signals we
have stood in one.

**Reverent about the message, matter-of-fact about the machine.** Scripture is
quoted with reference and translation, never trimmed to fit a headline. The
software is described plainly. The two registers never blend.

**Never say magic.** Never "AI-powered" as a headline. Never "revolutionary,"
"seamless," "effortless," "game-changing," "empower." Never an exclamation mark.

**Errors tell the truth and the fix.** Not "Oops! Something went wrong." Instead:
`No audio on Input 2. Select a device in Settings → Audio.`

### Tone by surface

| Surface | Register |
|---|---|
| Website hero | Confident, short, declarative. One idea. |
| Feature copy | Technical and specific. Names the protocol. |
| App UI | Terse. Verb-first. Never chatty, never apologetic. |
| Release notes | Plain, dated, honest about what broke. |
| Community / issues | Direct and generous. This is where the trust lives. |
| Motion / video | Almost silent. Let the product move. |

### Vocabulary

| Use | Not |
|---|---|
| console, desk | dashboard |
| take to air, on screen | project, cast |
| cue, arm | queue up, get ready |
| operator | user |
| output, surface | screen 2 |
| detection | AI, magic, smart |
| scripture and song | content |

---

## 07 · Visual identity

### The Verse Mark

Six rectangles on a 32-unit grid. Reading left to right: **three waveform bars
resolve into three lines of set text.** Utterance becomes scripture. The centre
line — the live verse — is the only element carrying Signal Orange.

It is a diagram of the product, drawn in the smallest number of marks that still
says it. Every competitor uses a book, a dove, a beam or a cross. This uses the
one image none of them can: the moment sound becomes type.

**Construction (viewBox 0 0 32 32, all values fixed):**

| Element | x | y | w | h |
|---|---|---|---|---|
| Utterance 1 | 4 | 11 | 2.5 | 10 |
| Utterance 2 | 8.5 | 5 | 2.5 | 22 |
| Utterance 3 | 13 | 9.5 | 2.5 | 13 |
| Line 1 | 17.5 | 8.5 | 10.5 | 2.5 |
| **Line 2 — live** | 17.5 | 14.75 | 10.5 | 2.5 |
| Line 3 | 17.5 | 21 | 6.5 | 2.5 |

Ends are **square**. The rounded waveform is the most-drawn logo of the last
decade; ours is cut, not blown. The 2-unit gutter between the utterance group and
the scripture group is identical to the gutter between bars — the mark is one
object, not two.

**Rules**
- Clear space on all sides = the height of the tallest bar ÷ 2 (11 units).
- Never rotate, stretch, outline, gradient-fill, or add a container other than
  the approved app-icon squircle.
- Never animate the mark on a live output surface. It is a brand asset, not a bug.

**The small cut — mandatory below 48px.** The six-element mark does not survive at
icon sizes: at 16px each 2.5-unit bar lands on well under a pixel and the whole thing
collapses into a blob. Below 48px use the four-element cut instead — two utterance
bars, two scripture lines, thicker strokes, scaled to **72%** of the container rather
than 62.5%, with the tally glow dropped.

| Element | x | y | w | h |
|---|---|---|---|---|
| Utterance 1 | 4.5 | 8 | 3.5 | 16 |
| Utterance 2 | 10 | 3.5 | 3.5 | 25 |
| Line 1 | 17 | 8.75 | 10.5 | 3.5 |
| **Line 2 — live** | 17 | 19.75 | 10.5 | 3.5 |

This is not a compromise to apologise for — it is the same discipline Apple and Adobe
apply to their own icons. The gesture survives; the detail is what goes.

**Platform geometry.** macOS expects artwork to occupy **824 of a 1024 canvas**; a
full-bleed icon sits visibly larger than native apps in the Dock. Windows and Linux
want full-bleed. That is four source files, not one — see `brand/assets/`.

The squircle is a **superellipse, n = 5**, not a rounded rectangle. Do not substitute
`rx`/`ry` — the corner curvature is the difference between an icon that looks native
and one that does not.

### Wordmark

`Bible Song Pro` — Inter 600, tracking `-0.02em`, sentence case.

**Monochrome, always.** No coloured word, no coloured "Pro". The mark carries the
orange; the wordmark never does. This is the discipline that reads as premium in
a category that colours one word in every logo.

Chrome cut (title bars, video outros, footers, badges):
`BIBLE SONG PRO` in Geist Mono 400, `0.14em` tracking, uppercase, never above 13px.

Clear space around the full lockup = the cap-height of the "B".
Minimum lockup width 96px; below that, mark only.

### Colour

**Signal Orange `#FF5500`** is inherited from the shipping app and kept
deliberately — it is already on real machines, in the splash, in the tokens.
Brand work here is systematising it, not repainting it.

Why orange survives scrutiny: it is the tally colour, it reads warm and lamp-lit
rather than cold-tech, and it is the single hue the entire competitive set has
left on the table (they are all blue, white or purple). It is also clearly
distinct from Johnson's golden amber.

| Token | Hex | Role |
|---|---|---|
| Booth | `#0C0B0B` | Web ground, deepest surface |
| Ground | `#111010` | App frame |
| Surface | `#161414` | Panels, cards, blocks |
| Raised | `#1D1B1C` | Controls, inputs |
| Active | `#232221` | Hover, pressed, selected |
| Edge | `#262628` | Borders, gutters, rules |
| Dim | `#A8A2A0` | Secondary text |
| Screen | `#FFFFFF` | Primary text on dark |
| Paper | `#F4F2EF` | Light surfaces — print, docs |
| **Signal** | **`#FF5500`** | **Accent + Program** |
| Signal Lift | `#FF7728` | Hover, focus |
| Signal Deep | `#B23E00` | Signal on light surfaces only |

Neutrals are warm-shifted toward the accent. A blue-grey neutral would make the
orange look bolted on; these make it look native.

**Contrast, verified:**
`#FF5500` on `#111010` = **5.9:1** ✓ AA · `#FFFFFF` on `#111010` = **18.4:1** ✓ AAA
`#FF5500` on `#F4F2EF` = **2.8:1** ✗ — use `#B23E00` = **5.2:1** ✓ AA

### The Tally system

The brand's best idea, because it is functional and already half-built in the
product (`PreviewProgramView`):

| State | Colour | Meaning |
|---|---|---|
| **Program** | Signal `#FF5500` | On screen. Live to the room and the stream. |
| **Preview** | `#22C55E` | Cued and safe to edit. |
| **Hold** | `#6E6968` | Cleared, black, standby. |
| **Fault** | `#EF4444` | Source dropped, no signal, no audio. |
| **Link** | `#3B82F6` | Remote or networked device attached. |

**The rule an operator learns in one service: if it's orange, it's on screen.**

That single sentence is the accent-colour rationale, the UI convention, and a
marketing line simultaneously. Signal is therefore never used decoratively on a
surface that also shows live state — colour must never lie about what is on air.

### Radius — the instrument rule

**Nothing exceeds 6px.** Default 4px. Two exemptions and only two: the app icon
squircle (platform requirement) and the tally dot (round because it is a lamp).

The category is built on 12–24px rounded cards. Hardware is not. This one
constraint does more differentiating work than any illustration could.

### Typography

Three roles, mirroring the discipline of the personal brand without borrowing a
single face:

| Role | Face | Use |
|---|---|---|
| **Voice** | Source Serif 4 | Scripture, and exactly one hero line per surface |
| **Interface** | Inter (variable) | All UI, all body copy, all navigation |
| **Signal** | Geist Mono | Labels, timecode, latency, versions, shortcuts, tally |

**Source Serif 4** is a reading face, not a display face. Setting scripture in a
book serif — the way scripture is actually set — is the quieter, more literate
choice than the display serifs the category reaches for. At hero size with tight
leading and `-0.022em` tracking it has real weight without theatre.

**Inter** is kept because the app already ships `InterVariable.woff2` and it is
the correct face for a dense operator console. No churn, no cost.

**Geist Mono** carries the technical layer — squared, engineered, and clearly not
IBM Plex Mono, which belongs to the personal brand.

**Rules**
- One Voice line per surface. Cut the copy before adding a second.
- Voice never below 24px, never in UI, never bold, never uppercase.
- Signal is uppercase only, `0.14em` tracking, never above 13px, never body copy.
- Body measure ~65 characters. `tabular-nums` wherever digits stack.

### Imagery

**Shoot the booth, not the congregation.**

The whole category runs the same photograph: hands raised, backlit haze, shallow
depth. It is a stock image of worship. Ours is the room next door — monitors,
patch cables, a fader wall, the orange glow of a tally on someone's face, hands
on a keyboard in the dark. Warm, high-contrast, practical light only.

**The signature inversion:** the operator is in focus; the congregation is the
bokeh behind them. That single framing rule states the position in one image, and
it happens to be exactly what Johnson already shoots.

Product shots: real rooms, at an angle, screens legible. Never a floating
perspective mockup on a gradient.

**Never:** stock worship photography, lens flares, dove/beam/light-ray graphics,
generic AI-brain motifs, gradient mesh backgrounds, 3D glass shapes, illustrated
characters.

### Motion

Broadcast motion has one rule the software world forgets: **nothing overshoots.**
A lower third that bounces looks amateur on air, so nothing in this brand bounces.

- House curve: `cubic-bezier(0.16, 1, 0.30, 1)`. Symmetrical moves use
  `cubic-bezier(0.65, 0, 0.35, 1)`.
- Durations: `120ms` state · `240ms` panel · `400ms` to-air · `800ms` brand.
- **Signature transition — the Cue Wipe.** Content enters behind a hard-edged
  Signal bar that sweeps across and dissolves, leaving the content set. It is the
  Verse Mark's live line, moving. Used on the splash, lower-third reveals, section
  transitions in video, and website hero.
- **Mark animation (brand only, 800ms):** the three utterance bars settle from a
  live waveform into rest, and the three scripture lines set left-to-right. Ends
  on the static mark. Never loops.
- Everything honours `prefers-reduced-motion`.

---

## 08 · Governance

### Do

- One Voice line per surface, one accent per composition.
- Quote scripture with book, chapter, verse and translation.
- Cite live repo facts — version, stars, licence — never remembered ones.
- Keep the OBS plugin free, open, and prominently linked. It is the proof.
- Let the mark be small. Let the product be the loud thing.

### Don't

- **Don't lead with AI detection.** Four competitors own that sentence; joining
  them makes BSP the fourth-best version of somebody else's pitch.
- **Don't put Signal Orange next to Johnson's Signal Amber.** Ever.
- **Don't colour a word in the wordmark.**
- **Don't exceed 6px radius** outside the two exemptions.
- **Don't use Signal decoratively on a surface showing live state.** Colour must
  never lie about what is on air.
- **Don't invent testimonials, church names, or download counts.**
- **Don't call the free plugin "Lite", "Basic" or "Community".** It is
  *Bible Song Pro for OBS & vMix*, and it is the front door.
- **Don't reintroduce a price ladder or a locked feature.** Both products are
  free and GPL-3.0. A "Pro" tier on compilable software invites an argument you
  cannot win, and the absence of one is doing real positioning work.
- **Don't colour the Studio superscript**, and don't set it in Inter. It is
  Signal face, monochrome, superscript — or it is not the Studio lockup.
- **Don't use the light palette as a default.** BSP is dark-first; paper is for
  print, docs and invoices.

---

## 09 · Files

```
brand/
├── BRAND.md                    this document
├── tokens.css                  the design tokens — single source of truth
├── identity.html               the visual brand book
├── assets/
│   ├── verse-mark.svg          two-colour, live line in Signal
│   ├── verse-mark-mono.svg     single colour, currentColor — print
│   ├── lockup-horizontal.svg   mark + wordmark (text live; outline for print)
│   ├── app-icon.svg            512 / 496 full-bleed — Windows, Linux
│   ├── app-icon-macos.svg      1024 / 824 Apple grid — macOS
│   ├── app-icon-small.svg      simplified cut, full-bleed — .ico 16–32
│   └── app-icon-small-macos.svg  simplified cut, Apple grid — .icns 16–32
└── fonts/
    ├── SourceSerif4-latin-var.woff2
    ├── Inter-latin-var.woff2
    └── GeistMono-latin-400.woff2
```

Raster exports are built, not committed here — `node scripts/build-icons.cjs` in the
desktop repo regenerates `.icns`, `.ico` and `.png` from these four sources using
`sips` and `iconutil`. The `.ico` writer lives in that script; macOS has no tool for it.

**Still open (not blockers, flagged honestly):**
Wordmark converted to outlines for print; a two-line stacked lockup; social avatar and
OG templates; the Cue Wipe as a shipped motion template. All follow from the system
above and none of them change it.
