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.
Logo
The Pennant Flag
A stylized pennant flag — geometric but not sterile, with implied motion and enough personality to be warm without being cartoonish.
Icon + Wordmark — Primary
Reversed — Dark backgrounds
Icon Only — Favicons, avatars, small contexts
Wordmark Only — In-app, footers
Clear Space
Maintain clear space around the logo equal to the height of the pennant icon on all sides. No other elements should encroach on this space.
Don'ts
Protect the integrity of the mark. These are hard rules.
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.
HEX
#2563EB
RGB
37, 99, 235
Tailwind
blue-600
White
Clean space. Let things breathe.
HEX
#FFFFFF
RGB
255, 255, 255
Supporting Neutrals
Ink
#1E293B
Primary text & headings. Warm dark — never pure black.
Slate
#64748B
Secondary text, captions, meta.
Cloud
#F1F5F9
Subtle backgrounds, cards, code.
Mist
#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
Documentation
Application UI
Color Don'ts
Typography
Three faces.
Five files. Done.
Satoshi commands attention. General Sans carries the message. JetBrains Mono handles the code. Nothing else needed.
Satoshi
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 !@#$%&*()—
General Sans
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 !@#$%&*()—
JetBrains Mono
const response = await pennant.schedulePost({
platform: "instagram",
content: "Your agent creates. Pennant publishes.",
scheduledAt: "2025-03-15T10:00:00Z"
});
Type Scale
Live specimens at actual rendered sizes.
Your agent creates. Pennant publishes.
48px / 700
Hero headlines
Your agent creates. Pennant publishes.
36px / 700
Page titles
Your agent creates. Pennant publishes.
28px / 700
Section headings
Your agent creates. Pennant publishes.
22px / 500
Subsections
Your agent creates. Pennant publishes.
16px / 400
Paragraph text
Your agent creates. Pennant publishes.
14px / 400
Captions, meta
pennant.schedulePost()
14px / 400
Inline code
PUBLISHED
12px / 500
Badges, tags
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.
Cards
Content containers for posts, channels, and data summaries.
We just shipped support for carousel posts on Instagram. Your agent can now send up to 10 images in a single call.
@pennantpost
Instagram Business
Posts this month
24
Scheduled this week
47
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.
{
"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