Brand Guide

Fly your
pennant.

This is the visual identity, voice, and component language for Pennant — the agent-first social media scheduling API. Use it as a living reference.

Brand Essence

Warm. Competent.
Quietly confident.

Pennant is the flag you fly to signal who you are. The brand feels like a trusted partner that handles the complexity so you don't have to. Not cold or robotic. Not flashy or hype-driven.

Approachable

A tool for people, operated by agents. The brand speaks to humans first.

Reliable

Feels like something you trust to run while you're not looking.

Clear

No jargon, no buzzwords. Direct, plain language.

Distinctive

Warmth and character in a sea of generic SaaS.

Color

Bold blue.
Grounded neutrals.

The palette is anchored by a vibrant blue — energetic, optimistic, trustworthy — paired with clean white. In a sea of pastels and gradients, Pennant Blue is the single vibrant element.

Primary

Pennant Blue

The one. The only.

Click to copy
Copied!

HEX

#2563EB

RGB

37, 99, 235

Tailwind

blue-600

White

Clean space. Let things breathe.

Click to copy
Copied!

HEX

#FFFFFF

RGB

255, 255, 255

Supporting Neutrals

Ink

Copy
Copied!

#1E293B

Primary text & headings. Warm dark — never pure black.

Slate

Copy
Copied!

#64748B

Secondary text, captions, meta.

Cloud

Copy
Copied!

#F1F5F9

Subtle backgrounds, cards, code.

Mist

Copy
Copied!

#F8FAFC

Page backgrounds, light surfaces.

Functional Accents

Status indicators and system feedback only. Never for branding.

Success

#16A34A

Published, active, connected

Error

#DC2626

Failed, expired, errors

Warning

#D97706

Pending, expiring soon

Info

#2563EB

Informational — uses brand blue

Recommended Ratios

Marketing Site

60%
30%
10%

Documentation

70%
15%
10%
5%

Application UI

75%
15%
10%

Color Don'ts

Don't use Pennant Blue for large text blocks
Don't pair it with other saturated colors
Don't use pure black (#000) — use Ink
Don't lighten Blue with opacity — use Cloud or Mist

Typography

Three faces.
Five files. Done.

Satoshi commands attention. General Sans carries the message. JetBrains Mono handles the code. Nothing else needed.

HEADLINES Display, H1, H2, H3, Wordmark
Get from Fontshare

Satoshi

ABCDEFGHIJKLMNOPQRSTUVWXYZ

abcdefghijklmnopqrstuvwxyz

0123456789 !@#$%&*()—

500 Medium 700 Bold 900 Black
BODY Paragraphs, UI, forms, navigation, buttons
Get from Fontshare

General Sans

ABCDEFGHIJKLMNOPQRSTUVWXYZ

abcdefghijklmnopqrstuvwxyz

0123456789 !@#$%&*()—

400 Regular 500 Medium
CODE Code samples, API responses, technical docs
Get from JetBrains

JetBrains Mono

const response = await pennant.schedulePost({
  platform: "instagram",
  content: "Your agent creates. Pennant publishes.",
  scheduledAt: "2025-03-15T10:00:00Z"
});
400 Regular

Type Scale

Live specimens at actual rendered sizes.

Display

Your agent creates. Pennant publishes.

H1

Your agent creates. Pennant publishes.

H2

Your agent creates. Pennant publishes.

H3

Your agent creates. Pennant publishes.

Body

Your agent creates. Pennant publishes.

Small

Your agent creates. Pennant publishes.

Code

pennant.schedulePost()

Label

PUBLISHED

Components

The building blocks.

Live examples of how the brand system translates into UI. Every component uses the type scale, color palette, and voice guidelines above.

Buttons

Primary actions use Pennant Blue. Secondary actions use Ink or subtle borders. Destructive actions use Error red.

Badges & Status

Post lifecycle states, platform indicators, and metadata tags.

Published Scheduled Publishing Failed Draft Cancelled
Instagram LinkedIn API v1 MCP

Cards

Content containers for posts, channels, and data summaries.

Published 2h ago

We just shipped support for carousel posts on Instagram. Your agent can now send up to 10 images in a single call.

Instagram LinkedIn

@pennantpost

Instagram Business

Posts this month

24

Connected

Scheduled this week

47

+12% vs last week

Alerts

Empathetic and actionable. Say what went wrong and how to fix it.

Image too small for Instagram

Instagram requires images to be at least 1080x1080px. The uploaded image is 400x400px. Resize and try again.

Token expires in 3 days

Your LinkedIn access token expires on April 2. Re-authenticate to keep publishing.

Post published

Your post went live on Instagram and LinkedIn. Both platforms confirmed delivery.

Tip: Use get_context first

Call get_context before scheduling. It returns your connected platforms, rate limits, and supported post types in one shot.

Form Elements

Clean inputs with clear labels. Error states are descriptive, not punitive.

We'll send POST requests with HMAC-signed payloads.

LinkedIn captions can't exceed 3,000 characters. Trim 241 characters.

Code Blocks

Ink background, JetBrains Mono, Pennant Blue for keywords. Cloud background for inline code.

API Response JSON
{
  "id": "post_9x8k2m4n",
  "status": "scheduled",
  "scheduled_at": "2025-03-15T10:00:00Z",
  "channels": [
    {
      "platform": "instagram",
      "post_type": "carousel",
      "status": "pending"
    }
  ]
}

Voice & Tone

Talk like a human.
A competent one.

Clear, direct, and warm. Like a smart colleague who respects your time. The voice stays consistent — the tone adapts to context.

We are

Direct

Say what you mean in the fewest words.

Helpful

Orient toward the next action.

Honest

If it's limited, say so.

Warm

Like a smart friend who's good at APIs.

We are not

Hype-driven

"Revolutionary," "game-changing," "unleash"

Jargon-heavy

"Leverage," "synergy," "paradigm shift"

Condescending

"Simply," "just," "easy" for technical setup

Robotic

"The system will process your request"

Tone in Context

Same voice, different energy. Here's how it shifts.

Marketing

Confident, energetic

"Your agent creates. Pennant publishes. Every platform, every format, one API."

API Docs

Precise, scannable

"Connect via MCP or REST, read your account context, and start scheduling. Six tools. That's the whole product."

Error Messages

Empathetic, actionable

"LinkedIn caption is 3,241 characters. Maximum is 3,000. Trim 241 characters and resubmit."

Onboarding

Encouraging, clear

"Connect your first platform to get started. Instagram and LinkedIn are the most popular — but pick whatever your audience lives on."

Writing Rules

Use active voice

"Pennant publishes your post" not "your post is published by Pennant."

Use second person

"You" and "your," not "the user" or "one."

Keep sentences short

If it has a comma, ask if it should be two sentences.

Lead with the action

"Connect your Instagram" not "In order to begin..."

Use contractions

"You'll," "we'll," "don't." It's warmer.

Be specific

"Publish to Instagram, LinkedIn, and X in one call."

Quick Reference

At a glance.

Brand Name
Pennant
Domain
pennantpost.com
Primary Color
Pennant Blue #2563EB
Text Color
Ink #1E293B
Backgrounds
White #FFFFFF / Mist #F8FAFC
Headlines
Satoshi — fontshare.com/fonts/satoshi
Body Text
General Sans — fontshare.com/fonts/general-sans
Code
JetBrains Mono — jetbrains.com/lp/mono
Logo
Stylized pennant flag + "Pennant" wordmark
Voice
Clear, direct, warm, honest
Never Say
"AI-powered," "revolutionary," "leverage," "simply"