Brand · v1 · Triangulation locked 2026-04-30

The Buildwise brand,
applied to itself.

Ten locked specs in Brain — mark, type, palette, surfaces, imagery, photography, motion graphics, page motion, geometric vocabulary, data viz. This page compiles the visual essentials you reach for on the job and links to the canonical spec when you need to drill in.

AudienceBWM delivery team
Surface systemTriangulation · System A
SupersedesBlack Gold (2026-04-27)
Source of truthbuildwise-brain/brand/
01 · Identity

Mark, wordmark, lockups.

Three points of evidence converging on a truth at the center. The mark depicts the methodology we run on every engagement — predict, observe, calibrate — resolving to a verdict at the centroid. The brand is the work, visualized.

Construction (V3 verdict-completed)

Geometry
Equilateral triangle, point-up, ~56% of 100-unit viewbox
Top vertex
(50, 22) · r=9 · metallic gradient
Base vertices
(22, 70) and (78, 70) · r=6.5 · flat #F0FF00
Verdict point
(50, 54) · r=3 · flat #F0FF00
Hairlines
stroke-width 1.4 · #7A8400 muted Y2 · round caps
Hierarchy
9 : 6.5 : 3 (primary : base : verdict)
Gradient
#FFFD58#F0FF00#C8D300

Open canonical spec →

Scale variants

ScaleTreatmentWhere
Hero · ≥120pxFull mark, metallic gradient, all linesWeb hero, monumental decks, video bumpers
Marketing · 56–120pxFull mark, metallic gradient, all linesSales decks, social profiles, email signatures
Dashboard · 32–56pxFlat #F0FF00 fill, lines optionalCommand UI sidebars, in-app loaders
Favicon · 16px4-dot constellation, no linesBrowser tab, app icon — hairlines blur at this scale

Lockup configurations

IDNameUse
AHorizontalMark left · stacked wordmark right — DEFAULT (headers, email signatures, business cards)
BVerticalMark above stacked wordmark — MONUMENTAL (hero sections, deck title slides, posters)
CInlineMark + single-line BUILDWISE·MEDIA — COMPACT (nav bars, footers, dashboards)
DMark onlyTriangulation alone — ICONIC (favicon, app icon, swag, watermarks)

Motion language (R010)

Static · default

The mark holds its form. 99% of contexts — footer, business card print, email signature, deck slides.

Active · ambient pulse

Verdict-dot breath: opacity 0.55 → 1.0 → 0.55, scale 1.0 → 1.3 → 1.0, 3.2s ease-in-out loop. App loaders idling, dashboards, system-on indicators.

Transition · state change

Loading: dots flicker in sequence. Drawing: lines draw in over ~1.6s, verdict pulses into existence at centroid. Settles into Active.


Talking points (drop-in)

  • “The logo IS the methodology.” — the foundational line.
  • “Predict, observe, calibrate.” — the three vertices.
  • “The verdict at the centroid.” — the methodology resolves to a truth.
  • “Five-thousand year geometry.” — the singularity test.
  • “A designed object, not a generated one.” — addresses the AI-era authenticity question.
02 · Type

Inter for everything. Mono for instruments.

One display + body typeface (Inter, full weight range), one micro typeface for labels and readouts (JetBrains Mono). Numerals carry the brand’s authority claim — oversized, condensed, weight 800. That’s P-06.

Hero numeral · P-06
75x.

Inter 800 · font-stretch: 75% · 80–110px · line-height 0.82–0.85 · letter-spacing −0.06em

Inter · display + body

UseSpec
Hero numeral800 · condensed · 80–110px · LH 0.82–0.85 · LS −0.06em
Hero headline800 · condensed · 64–88px
Section H2800 · 28–44px · LS −0.035em
Sub H3700 · 20–26px
Body400–500 · 14–16px · LH 1.55 · max 65–75ch
Dashboard numeral600 · standard · 22–24px · LS −0.02em

300 · 400 · 500 · 600 · 700 · 800 · 900

JetBrains Mono · micro

UseSpec
Eyebrow / kicker400 · 11–12px · UPPERCASE · LS 0.18em · muted
Status label500 · 10–11px · UPPERCASE · LS 0.16em · Y2 accent
Timestamp400 · 11px · tabular · muted
Version string400 · 10px · Y2-mute
Inline code400 · 13px · Y2-light on card

ALWAYS UPPERCASE · LETTER-SPACING 0.15–0.18em


Open BWM-Visual-Direction-Locked →

03 · Palette

Two systems, one brand.

Marketing surfaces keep the dual-yellow pure (System A). Product surfaces earn one orange for error states (System B). Three of four semantic tokens are shared; only error treatment differs by surface. The boundary is the surface, not the component.

Accent palette

Y2 HEX #F0FF00
RGB 240, 255, 0 Hero / hi-vis / warning · marketing accent
Y1 HEX #B8FF3A
RGB 184, 255, 58 Dashboard / chartreuse / success · product accent
Y2-light HEX #FFFD58
RGB 255, 253, 88 Metallic gradient top stop · primary mark vertex
Y2-deep HEX #C8D300
RGB 200, 211, 0 Metallic gradient bottom · functional sibling
Y2-mute HEX #7A8400
RGB 122, 132, 0 Mark connecting hairlines · muted Y2
O1 (System B only) HEX #C7400D
RGB 199, 64, 13 Minted error · product dashboards only · never marketing

Surface palette

BG HEX #050507 Canvas · cool near-black · never #000 or warm #07070c
Card HEX #0A0A0E Panel surface · 1 step up from canvas
Card-2 HEX #11111A Nested surface · 2 steps up
Line HEX #1A1A20 Default hairline · panels, table borders
FG HEX #ECECEC Body text · headlines · numerals
FG-2 HEX #B5B7C0 Secondary body · captions
Muted HEX #525560 Info status / quiet labels

Semantic tokens (surface-assigned)

TokenSystem A · MarketingSystem B · Product
SUCCESS#B8FF3A Y1 chartreuse#B8FF3A Y1 chartreuse
WARNING#F0FF00 Y2 hi-vis#F0FF00 Y2 hi-vis
ERRORWhite text + Y2 hairline rule — typographic, not chromatic#C7400D O1 minted orange
INFO#525560 mono#525560 mono

Discipline

  • Marketing has no errors anyway. Form-validation errors get white text + 2px Y2 left rule. The brand refuses to panic; structure carries the signal.
  • The orange stays inside the product. Never on a sales page, ad creative, deck title, or social asset. Adding a third hue to outward-facing brand chrome dilutes Y1+Y2.
  • Errors register at attention velocity, not scan velocity. O1 is deep-by-default (#C7400D) — the dashboard never panics.
  • Info stays mono. Not blue. Blue does no other work in the brand — it pays no rent.
  • Bleed-through prevention (client sites). Y1 and Y2 are reserved for BWM-owned surfaces. Pre-deploy gate tools/check-no-bwm-bleed.sh fails if Y1/Y2 appear in a client repo.

Open BWM-Palette-System-Locked →

04 · Surface map

If you’re producing X, use register Y.

One table answers most production questions. Default to System A when classification is unclear — the brand is the primary asset; product UI inherits brand discipline upward, not downward.

SurfacePaletteImageryMotion
BWM marketing pages (buildwisemedia.com · /review · ad creative) System A · Y2 hero B isometric · A photography (human) Static · R010 chrome only
BWM product / Command UI (command.buildwisemedia.com · dashboards) System B · Y1 + O1 D generative textural · A in case-study cards State-driven instrumentation
BWM internal docs (this site · deck templates · partner pack) System A · Y2 hero B isometric for diagrams · still-life for detail Static · R010 mark only
Per-client websites (client-visual dominates) Per-client niche-design palette · BWM colors NEVER bleed Per-client direction · structural patterns inherit only Static · R017 marketing default

Open BWM-Surface-Library-Locked → Open Brand-System-Direction (North Star) →

05 · Imagery · R015

Three registers. Isometric leads.

B (Isometric Technical) is primary across every client-visible BWM surface. A (Atmospheric photography) is admitted only when a human is in frame. D (Generative Geometric) sits under B as textural ground — never standalone.

B · Isometric (primary)

Technical, hand-authored.

Capability diagrams, system maps, proof surfaces. Stage labels and percentages where dense. SVG only — hand-authored or code-generated. Never photographic.

DENSITY: granular for proof · sparse for chrome

A · Photography (humans only)

Editorial / cinematic. Real people.

Case studies, testimonials, about-page hero. Only when a human is the subject. Empty rooms route to cinematic-atmospheric under photography (Section 06), not here.

PRODUCTION: codex-exec (DALL-E primary) · Midjourney v6+ via frozen prompts

D · Generative (textural)

Under B, never standalone.

SVG patterns from the R014b primitives. 6–12% Y2 opacity. Wallpaper under a foreground B diagram; never alone as a hero or deck wall.

SCOPE: textural ground only

File path convention

~/bwm-brand-assets/imagery/<register>/<surface>/<concept>-vN.{svg,png,prompt.md}

register ∈ {b, a, d}
surface  ∈ {hero, capability, case-study, deck-chrome, deck-hero,
              ad, email-sig, tx-email, review, social}

Pre-ship validator parses register + surface from path and rejects mismatches against the surface assignment table.

Rejected

  • C documentary. Survey instruments, theodolites, archival USGS aesthetic. Wrong tribe.
  • F no-imagery / typography-only. Brand under-commits on proof surfaces.
  • D standalone. Generative triangle field as deck wallpaper without B foreground.
  • A on non-human surfaces. Atmospheric photography where no human is the subject — routes to Section 06.
  • Stock photography. Never. All imagery BWM-authored or BWM-prompted.

Open BWM-Imagery-Direction-Locked →

06 · Photography aesthetic · R018 + R018b

Real people read documentary. Empty rooms read cinematic.

Four registers across two axes (subject × purpose). The default register for each subject type carries the load; admitted registers handle launch, premium-signal, and detail surfaces.

AxisDefault registerAdmitted registerRejected
Human in frame Editorial journalism — Bloomberg/Time/NYT documentary, natural light, candid mid-action, medium DOF Cinematic film (hero / launch / about only) — A24/Anduril/Apple keynote register, cool grading desat 0.78 Cinematic film outside hero/launch — over-admitting dilutes signal
Environmental (no human) Cinematic atmospheric — A24/Anduril facility/Apple ad b-roll, cool dusk-blue desat 0.75, “operator just stepped away” mood Still-life composed (detail / premium-signal only) — Wallpaper/Knoll/Apple still-life, tight close-up, shallow macro DOF Editorial environmental — documentary register fights premium-monument tribe on empty scenes

Cross-surface scope

Same register travels across website + decks + social + ad + email + print. No per-surface variation. If a campaign needs cinematic-film for the hero, every cinematic asset in that campaign uses that register.

Production

codex-exec primitive (proven 2026-04-30 on R018). OAuth via ~/.codex/auth.json, no OPENAI_API_KEY required in env. Frozen prompt-library fragments per register live in the spec.

cat prompt.txt | codex exec --skip-git-repo-check

Path convention

~/bwm-brand-assets/photography/<subject>/<register>/<concept>-vN.png

subject  ∈ {human, environmental}
register ∈ {editorial, cinematic, atmospheric, still-life}

Filenames must include the register slug. Pre-ship validator rejects mismatches; editorial register on environmental subjects fails immediately.


Open BWM-Photography-Aesthetic-Locked →

07 · Motion graphics · R019 + R019b

Chrome stays still. Marketing tells stories. Product shows the system.

Three motion-graphics registers admitted by purpose. One register per asset. No half-cinematic-half-instrumentation. Stock motion and AfterEffects template packs are rejected across the board.

A · Static + R010 only

Chrome.

Brand bumpers (3s logo intro), email-broadcast GIF headers, footer/nav presence in baked video, deck chrome, static image ads. Surface itself is frozen; the R010 mark animates per its grammar.

B · Cinematic narrative

Marketing narrative.

Hero films, sales Reels/social, Meta ad video, case-study video, partner-pack reels. 6–8s clips per shot · 4-shot storyboard · slow lerp · cubic-bezier(0.22, 1, 0.36, 1) cinematic easing. Inherits R018 cinematic photography grading.

D-prod · Instrumentation cuts

Product / operational.

Product demos, Command UI tours, dashboard walkthroughs. 0.8–1.5s clips · hard cuts · data-driven cut points · cubic-bezier(0.65, 0, 0.35, 1) instrumentation easing · canvas #060810 (darker product). Numerals lead on every state change.

Surface assignment

AssetRegister
Homepage hero film · social Reel · Meta ad creative · case-study video · partner reelB · Cinematic narrative
Brand bumper · email-broadcast GIF · deck chrome · static image adA · Static + R010
Product demo · Command UI tour · dashboard walkthrough · feature revealD-prod · Instrumentation

Page-motion lock (R017)

Marketing pages don’t move; dashboards move when data changes.

  • Marketing surfaces (this site, buildwisemedia.com, /review). No scroll reveals, no entrance animations, no decorative motion. Hover = color/border shift only — no scale, no translate, no glow.
  • Command UI surfaces. State-driven cinematic: number updates lerp ~1.1s with brightness pulse, NO color shift on the number itself; alerts slide in 0.6s; threshold bars transition 1.1s; status dots run R010 ACTIVE pulse 3.2s.
  • Reduced motion. prefers-reduced-motion: reduce drops both surfaces to Static.

Production

codex-exec keyframe stills + Remotion video assembly. Pipeline at ~/bwm-video. Path convention:

~/bwm-brand-assets/motion/<register>/<surface>/<concept>-vN.{mp4,gif,webp}

register ∈ {static, cinematic, instrumentation}
surface  ∈ {hero, reel, ad, demo, bumper, email, deck, case-study}

Open BWM-Motion-Graphics-Locked → Open BWM-Page-Motion-Locked →

08 · Geometric vocabulary · R014b

Five primitives. No new atoms.

Every decorative shape across the brand resolves to one of five mark-native primitives. The vocabulary is closed — if a needed shape isn’t in this set, the answer is type, not a new decorative atom.

Filled vertex

Primary point. Y2 fill. Used for emphasis, callouts, primary point-of-mark scale.

Diagonal hairline

Section dividers. Short Y2 segment + long faded continuation. Stroke 1.4 in 100u viewbox.

Verdict dot

Inline ornament. Centroid resolution. Lists, quote accents, footer flourishes.

Hollow vertex

Secondary point. Hairline outline, no fill. Constellation accents, quote attribution.

90° hairline

Right-angle bracket. Card corners, callout brackets, technical annotation frames.

Anything else

Curves, swooshes, custom shapes, decorative arrows, blobs. Rejected. Closed vocabulary is the point.

Diagram archetypes

  • Vertex constellation. 3 small dots — 2 hollow + 1 filled — hairline-connected. Quote accents, attribution clusters.
  • Section divider. Short Y2 segment + long faded continuation. Between page sections.
  • Footer flourish. Hairline + verdict dots + faded continuation. Closing emphasis.
  • Inline ornament. Single verdict dot, vertically centered on x-height. Between word pairs.

Open BWM-Geometric-Vocabulary-Locked →

09 · Asset library

Where to grab files. How to produce new ones.

Marks, photography, prompt fragments, and pipeline commands. Asset registry lives at ~/bwm-brand-assets/; downloadable mirrors at R2 bwm-assets.

Mark exports

Triangulation V3 + lockup variants + scale-appropriate variants + banners.

  • ~/bwm-brand-assets/marks/triangulation-v3/svg/mark-v1.svg — canonical SVG
  • ~/bwm-brand-assets/marks/triangulation-v3/svg/mark-favicon-v1.svg — 16px constellation
  • ~/bwm-brand-assets/marks/triangulation-v3/svg/mark-on-canvas-v1.svg — on dark surface
  • ~/bwm-brand-assets/marks/triangulation-v3/exports/banner/og-1200x630-v2.png — OG image
  • R2 public: pub-85c635a2536e438b9927af5e6723b0f7.r2.dev/marks/triangulation-v3/

Photography

Working library — expand with codex-exec per the R018 prompt fragments.

  • ~/bwm-brand-assets/photography/human/<register>/
  • ~/bwm-brand-assets/photography/environmental/<register>/
  • register slugs: editorial, cinematic, atmospheric, still-life
  • Filenames MUST include the register slug; pre-ship validator rejects otherwise

Codex-exec primitive

Image + keyframe generation. OAuth via ~/.codex/auth.json — no API key in env.

cat prompt.txt | codex exec --skip-git-repo-check

Frozen prompt fragments per register live in the spec at BWM-Photography-Aesthetic-Locked.md. Reuse verbatim; do not paraphrase.

Remotion pipeline

Video assembly from codex-exec keyframes.

  • Repo: ~/bwm-video
  • One register per asset (no register mixing within a single video)
  • Outputs: MP4 (primary) · GIF (email/Slack) · WebP (web hero)

Surface production specs (email sig, business card, tx email) →

10 · Do / Don’t

Hard locks. Pre-ship gates fail builds on violation.

These checks run in tools/bwm-website-qa.sh on every FULL BUILD and PATCH. Below is the short list of what fails. Paste the grep one-liners into your terminal before shipping anything.

Voice

Do

Author = “the Buildwise team + our AI system.” Use “we” / “the team.” Speak to the overworked SMB owner doing way too much themselves.

Don’t

Use “I built” / “Robert designed.” Route comms to Robert personally. Name vendors (GHL, Cloudflare, Supabase, Resend, Cal.com) in client-visible copy.

Color

Do

Y2 #F0FF00 on marketing. Y1 #B8FF3A on product. O1 #C7400D on product errors only. Canvas #050507 (cool, never #000 or warm #07070c).

Don’t

Black Gold gold #D4A955. Warm canvas #07070c. Ultraviolet #B47EFF. Bootstrap defaults #10B981 / #EF4444 / #F59E0B / #3B82F6. Y1/Y2 on client sites (use the client’s niche-design palette).

Typography

Do

Inter (300/400/500/600/700/800/900). JetBrains Mono (300/400/500/700). Mono always uppercase, 0.15–0.18em tracked. Hero numerals Inter 800 condensed.

Don’t

Instrument Serif. Inter Tight. Manrope. Playfair. Tiempos. Söhne. GT America. DM Sans / DM Serif. Source Sans / Source Serif. Roboto. Open Sans. Helvetica.

Imagery / motion / page-motion

Do

B isometric primary across surfaces. A photography only with human in frame. Editorial-journalism for human-default, cinematic-atmospheric for environmental-default. Static page motion on marketing; state-driven on product.

Don’t

Stock photography (ever). C documentary register (theodolites, archival USGS). D generative standalone. Editorial register on environmental subjects. Hover transforms (scale/translate) on marketing. Scroll-driven reveals on marketing. Color-flash on Command UI numbers.

CTA copy (BWM-flagship)

Do

Primary: “See If We’re a Fit” (locked 2026-04-27). Secondary: “See the System”.

Don’t

“Get Started.” “Learn More.” “Click Here.” “Book a Strategy Call.” “See If I Qualify” (legacy — replaced by “See If We’re a Fit”).

Pre-ship grep gates (paste before shipping)

# Banned colors (hex form)
grep -rniE '#?(d4a955|07070c|b47eff|7e4ec4|0000ff|#000(\b|;|\s))' \
  --include='*.html' --include='*.css' --include='*.astro' . | head

# Banned colors (rgb decimal — catches Black Gold gradient residue)
grep -rniE 'rgba?\(\s*212\s*,\s*169\s*,\s*85|rgba?\(\s*7\s*,\s*7\s*,\s*12|rgba?\(\s*180\s*,\s*126\s*,\s*255' \
  --include='*.html' --include='*.css' --include='*.astro' . | head

# Banned typefaces
grep -rniE 'font-family:\s*["'"'"']?(Instrument Serif|Inter Tight|Manrope|Playfair|Tiempos|Söhne|GT America|DM Sans|DM Serif|Source Sans|Source Serif|Roboto|Open Sans|Helvetica)' \
  --include='*.html' --include='*.css' . | head

# Banned vendor names (client copy)
grep -rniE 'gohighlevel|\bghl\b|\bcloudflare\b|\bsupabase\b|\bresend\b|\bcal\.com\b' \
  --include='*.html' --exclude='privacy.html' --exclude='terms.html' . | head

# Banned CTAs (BWM-flagship)
grep -rniE '(get started|learn more|click here|book a strategy call|see if i qualify)' \
  --include='*.html' . | head

All five must return zero matches before the build tags ship. privacy.html and terms.html are exempt from the vendor-name gate (GDPR/CCPA require naming sub-processors in legal disclosures).