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.
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 ·
#7A8400muted Y2 · round caps - Hierarchy
- 9 : 6.5 : 3 (primary : base : verdict)
- Gradient
#FFFD58→#F0FF00→#C8D300
Scale variants
| Scale | Treatment | Where |
|---|---|---|
| Hero · ≥120px | Full mark, metallic gradient, all lines | Web hero, monumental decks, video bumpers |
| Marketing · 56–120px | Full mark, metallic gradient, all lines | Sales decks, social profiles, email signatures |
| Dashboard · 32–56px | Flat #F0FF00 fill, lines optional | Command UI sidebars, in-app loaders |
| Favicon · 16px | 4-dot constellation, no lines | Browser tab, app icon — hairlines blur at this scale |
Lockup configurations
| ID | Name | Use |
|---|---|---|
| A | Horizontal | Mark left · stacked wordmark right — DEFAULT (headers, email signatures, business cards) |
| B | Vertical | Mark above stacked wordmark — MONUMENTAL (hero sections, deck title slides, posters) |
| C | Inline | Mark + single-line BUILDWISE·MEDIA — COMPACT (nav bars, footers, dashboards) |
| D | Mark only | Triangulation alone — ICONIC (favicon, app icon, swag, watermarks) |
Motion language (R010)
The mark holds its form. 99% of contexts — footer, business card print, email signature, deck slides.
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.
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.
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.
Inter 800 · font-stretch: 75% · 80–110px · line-height 0.82–0.85 ·
letter-spacing −0.06em
Inter · display + body
| Use | Spec |
|---|---|
| Hero numeral | 800 · condensed · 80–110px · LH 0.82–0.85 · LS −0.06em |
| Hero headline | 800 · condensed · 64–88px |
| Section H2 | 800 · 28–44px · LS −0.035em |
| Sub H3 | 700 · 20–26px |
| Body | 400–500 · 14–16px · LH 1.55 · max 65–75ch |
| Dashboard numeral | 600 · standard · 22–24px · LS −0.02em |
300 · 400 · 500 · 600 · 700 · 800 · 900
JetBrains Mono · micro
| Use | Spec |
|---|---|
| Eyebrow / kicker | 400 · 11–12px · UPPERCASE · LS 0.18em · muted |
| Status label | 500 · 10–11px · UPPERCASE · LS 0.16em · Y2 accent |
| Timestamp | 400 · 11px · tabular · muted |
| Version string | 400 · 10px · Y2-mute |
| Inline code | 400 · 13px · Y2-light on card |
ALWAYS UPPERCASE · LETTER-SPACING 0.15–0.18em
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
Surface palette
Semantic tokens (surface-assigned)
| Token | System A · Marketing | System B · Product |
|---|---|---|
| SUCCESS | #B8FF3A Y1 chartreuse | #B8FF3A Y1 chartreuse |
| WARNING | #F0FF00 Y2 hi-vis | #F0FF00 Y2 hi-vis |
| ERROR | White 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.shfails if Y1/Y2 appear in a client repo.
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.
| Surface | Palette | Imagery | Motion |
|---|---|---|---|
| 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) →
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.
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
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
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.
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.
| Axis | Default register | Admitted register | Rejected |
|---|---|---|---|
| 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.
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.
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.
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.
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
| Asset | Register |
|---|---|
| Homepage hero film · social Reel · Meta ad creative · case-study video · partner reel | B · Cinematic narrative |
| Brand bumper · email-broadcast GIF · deck chrome · static image ad | A · Static + R010 |
| Product demo · Command UI tour · dashboard walkthrough · feature reveal | D-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: reducedrops 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 →
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.
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) →
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
Author = “the Buildwise team + our AI system.” Use “we” / “the team.” Speak to the overworked SMB owner doing way too much themselves.
Use “I built” / “Robert designed.” Route comms to Robert personally. Name vendors (GHL, Cloudflare, Supabase, Resend, Cal.com) in client-visible copy.
Color
Y2 #F0FF00 on marketing. Y1 #B8FF3A on product. O1 #C7400D on product errors only. Canvas #050507 (cool, never #000 or warm #07070c).
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
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.
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
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.
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)
Primary: “See If We’re a Fit” (locked 2026-04-27). Secondary: “See the System”.
“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).