Reference research only. Brand assets, logo, and the proprietary Espeak display face are property of Upstage Co., Ltd. (주식회사 업스테이지). No verbatim taglines, marketing copy, or asset binaries are reproduced. Token values quoted below are factual CSS custom property values observed via live runtime inspection of the public
www.upstage.aisurface, under analytical fair-use.
Upstage looks like an enterprise AI company that decided to spend its visual budget on one purple, one display face, and one rotating word — and then on absolutely nothing else. The home surface ships in a deep plum hero canvas (#3C043B, exposed as --colors--grey-background), pairs it with a near-mint Solar accent (#D2FF95, a vivid mid-step of the --colors--green-yellow-* ladder), and reserves a single interactive violet (#5B52FF, observed 55 times across CTAs and links) as the only chromatic gesture that ever does work. The page is built on Webflow, layers Untitled UI and Spark Library tokens underneath an Upstage-namespaced override layer (74 --* custom properties on :root), and exposes the seams honestly — _sub---untitled-ui--*, _sub---spark-library--*, and _sub---elements-webflow-library--* all coexist on the document root, with the --colors--* and --style--* prefixes representing the brand's actual decisions. Type is even more disciplined: Geist runs 869 of ~930 sampled text elements (~93%), a single custom display face called Espeak lights up the hero H1 at 57.6px / weight 600, and the variable industry word inside the hero (Insurance, Healthcare, Manufacturing, Financial Services) shifts to a humble monospace mid-sentence — a typographic gesture that says this slot is configurable without spending a single color or weight to mark it. Radius is binary (797 elements at 0px, 134 at 8px, nothing meaningful between), elevation is effectively zero (the underlying Webflow library exposes one 10%-alpha shadow token, almost never applied), and rhythm comes from surface-color shifts band to band — plum hero → white product band → dark industry grid → white customer band → dark deployment matrix → near-black footer (#191722, slightly violet-tinted, not pure black). The atmosphere reads competent, technical, restrained — the visual equivalent of an enterprise pitch deck that knows it doesn't need to shout.
Atmospheric anchors:
#5B52FF) on a plum canvas (#3C043B) — distinguishable in a sea of cobalt competitors.#D2FF95 appears only adjacent to the Solar product narrative — never as a default button surface or section background.| Token | Hex | Live source | Role |
|---|---|---|---|
| Upstage Violet (primary) | #5B52FF | live computed rgb(91,82,255) on .button.is-secondary × 2 sampled CTAs; 55 element occurrences | Interactive foreground; link; secondary-button text; filled-primary button background variant |
| Violet pressed | #1E116E | --_sub---spark-library--foreground-interactive-hover | Hover / pressed state of primary |
| Violet deep | #281CA5 | --elements-webflow-library--secondary--color-1 | Emphasis / filled-button alt |
| Solar yellow-green | #D2FF95 | mid-step of --colors--green-yellow-* (50 = #f6ffe5); live-observed as decorative accent | Single-use chromatic accent tied to the Solar product narrative |
| Token | Hex | Frequency in DOM | Role |
|---|---|---|---|
| Body gray | #70757F | 428 elements (dominant text color) | Default body, paragraph, muted subhead |
| Near-black | #0A0D14 | 58 elements | Headings on light surfaces |
| Muted purple-gray | #6E7191 | 20 elements | Secondary muted / footnote |
| White | #FFFFFF | 213 elements | Text & UI on dark surfaces |
| White @50% | rgba(255,255,255,0.5) | 14 elements | Muted secondary copy on dark hero |
| Token | Hex | Role |
|---|---|---|
| Page white | #FFFFFF | Default page background |
| Subtle band | #F9FAFB | --colors--base--subtle — light section break |
| Footer near-black | #191722 | Footer band — intentionally violet-tinted, not pure #000 |
| Plum decorative | #3C043B | --colors--grey-background — hero canvas. Non-obvious choice: a deep plum named as "grey" in the token system. |
| Lavender interactive | #F0ECFD | --_sub---spark-library--background--interactive — active/hover surface |
| Purple-100 | #DDE3FF | --colors--purple-100 — cool tint for chips / info |
| Token | Hex | Role |
|---|---|---|
| Default hairline | #EEEEEE | --border-color--border-primary |
| Neutral subtle | #F7F7FC | --_sub---elements-webflow-library--neutral--200 |
Untitled UI primary scale (#fcfaff 25 / #f9f5ff 50 / #f4ebff 100 / #d6bbfb 300 / #6941c6 700) and Untitled UI gray scale (#eaecf0 200 / #475467 600 / #101828 900) sit underneath the Upstage-namespaced surface tokens. Treat them as inherited primitives, not Upstage decisions.
| Slot | Family | Size / Weight | Live evidence |
|---|---|---|---|
| Hero H1 | Espeak, Arial, sans-serif | 57.6px / 600 | 3 sampled hero phrases |
| Hero H1 industry swap word | monospace (browser default) | 48px / 600 | 4 industry-word swaps |
| Section H2 | Geist | ~36-48px / 600 | "High-performance AI built by experts" et al. |
| Body large | Geist | 18px / 400 | 603 elements (dominant body size) |
| Body | Geist | 16px / 400 | 115 elements |
| Button | Geist | 16-18px / 500 | .button.is-secondary + inline arrow CTA |
| Caption / small | Geist | 14px / 400 | 30 elements |
| Micro / legal | Geist | 12px / 400 | 23 elements |
Weight discipline (observed): 400 = 786 elements, 500 = 129 (buttons + nav + emphasised body), 600 = 15 (all headings), 700 = 8 (stat/proof labels). Six weights are not the system — four are.
Critical voice rule on type: the hero rotates Insurance / Finance / Healthcare / Manufacturing by changing the font family mid-sentence (Espeak → monospace), not the color or weight. Any port that wants to reproduce this rotating-vertical hero must keep the typographic shift as the variable-slot signal.
| Value | Frequency | Role |
|---|---|---|
0px | 797 elements | Sections, cards, hero, footer, images |
8px | 134 elements | Buttons, content chips, hero secondary surfaces |
100% | 5 elements | Avatar / icon circles |
100px | 1 element | Single pill |
50% | 1 element | One round element |
Binary rule: Upstage's geometry encodes pressability. Sharp = layout. 8px = "you can click this." Nothing in between, no 4px / 12px / 16px middle terms. Token: --style--radius-8px: 8px.
Effectively zero box-shadow on observed elements. The underlying Webflow library exposes --_sub---elements-webflow-library--general--shadow-03: #14142b1a (violet-black 10%), but production almost never invokes it. Depth = surface-color contrast (plum → white → dark → near-black) + hairline borders. Do not import drop-shadow card patterns from neighbour systems if porting this brand — Upstage doesn't ship them.
--style--max-full-width: 100vw.--space-* ladder exposed on :root. Section vertical rhythm appears to use ~64-96px band gaps with 16/24/32 internal step (Webflow class-driven, not token-driven).Try now — persistent top-right of nav. Filled violet #5B52FF background, white text, 8px radius, weight 500.Try demo — hero inline arrow. Transparent background, white text, → arrow glyph, 18px / 500.Learn more → — repeated inline across every product / solution card. Text-color inherits section surface (white on dark, violet on light), 18px / 500, no chrome..button.is-secondary (e.g. Developer Console, Learn more on solution cards) — white pill surface, violet text #5B52FF, 8px radius, weight 500. 16px.Transparent over hero, white below. Five primary categories (Products / Solutions / Resources / Company / Pricing) + persistent Try now filled CTA on the right.
Product / solution / customer cards: 8px radius, transparent background, #70757F body paragraph, no drop shadow, inline Learn more → link as the only interactive affordance.
Giant industry word (Insurance / Healthcare / Manufacturing / Financial Services) at 48px+ as the entire card front. Typography is the imagery.
CDP single-pass did not extract transition durations or cubic-bezier curves. Inferred from observed --_sub---spark-library--background--interactive: #F0ECFD hover surface: standard Webflow ~150-200ms ease for interactive state changes. Flagged for UPDATE pass — exact motion tokens not authoritative here.
#70757F on white ≈ 4.6:1 — passes WCAG AA for normal text (≥4.5:1).#5B52FF on white (secondary-button text) ≈ 5.2:1 — passes AA comfortably.#3C043B = ≥10:1 — strong pass for hero copy.<header>, <footer>, <nav> are used semantically (positive), but a deeper axe-style audit is out of scope.Upstage's marketing voice is declarative, enterprise-confident, lightly punchy. Sentences are short. Heroes state a verb-object intent rather than a feature list. Industry callouts are single nouns (Insurance, Healthcare) — the brand trusts the reader to fill in the relevance. Section H2s read as engineering-credible category claims ("High-performance AI built by experts", "Flexible deployment, enterprise-ready anywhere") — proof-of-capability framing, not benefit framing.
Tone vector: technically grounded · enterprise-formal · zero-hype · pragmatic-bilingual (Korean root, English-first marketing).
Fresh OmD-derivation alternatives (not Upstage copy — illustrative shape-only):
Do NOT reproduce any verbatim Upstage hero, button label, or proof statement in derivative work — voice is the shape only.
Upstage Co., Ltd. (주식회사 업스테이지) is a Korean LLM and enterprise AI company headquartered in Gangnam, Seoul, with offices at the Korea Science and Technology Center (한국과학기술회관 2관, 스파크플러스 강남5호점 812-817호, 22 Teheran-ro 7-gil, Gangnam-gu). CEO is Sunghun Kim (김성훈). Business Registration No. 830-88-01918. The company's flagship is the Solar family of LLMs (Solar Pro 3 / Pro 2 / Mini) and the Syn Pro Japanese-locally-trained LLM. Product surface includes Document Parse (PDF/scan → structured), Information Extract (key-value structuring), Studio (build/deploy agents), AI Space, and the Upstage Marketplace. Deployment matrix spans API, on-premise, and marketplace channels. Stated industry focus: insurance, healthcare, manufacturing, financial services. Source: live capture of the home + footer + brand-resource-center surfaces on 2026-05-15.
Founding-year, total-funding, headcount, and investor list not verified in this pass — public profiles (Crunchbase / TheVC) were not consulted to keep scope tight. Flagged for UPDATE.
These are reasoned inferences from the surface IA and proof bands, not user research:
[FILL IN] named personas, demographics, and motivations require Upstage-internal data — left as placeholders.
box-shadow: 0 8px 24px rgba(0,0,0,0.08) will read as a different system entirely.4px / 12px / 16px middle terms erases the layout-vs-pressable distinction.#D2FF95 works because it appears once, near the Solar narrative. Repeating it as a default highlight color cheapens it.https://www.upstage.ai/ — 44 curated DOM samples, 930+ element frequency sweep, 74 :root CSS custom properties, viewport 1280×713 dpr=1, captured 2026-05-15. Method: Chrome DevTools Protocol :9222 / Runtime.evaluate getComputedStyle. Browser: Chrome/148.0.7778.97. Raw artifacts in references/upstage/assets/_reference/_root-vars.json, _raw-capture.json, _curated-samples.json, _structure-raw.json.https://www.upstage.ai/resources/brand-resource-center — HTTP 200, H1 "Brand Resource Center", categories Brand Identity / Product Identity / Media kit / Our leadership, asset distribution only (no token specs). Captured 2026-05-15. Artifact: _brand-resource-center.json.design.upstage.ai, brand.upstage.ai, www.upstage.ai/brand, www.upstage.ai/brand-resources — all 000/404 (verified 2026-05-15 via curl).github.com/UpstageAI — 12 public repos, all AI/research/cookbook (UpstageAI/cookbook, UpstageAI/Gym, UpstageAI/mcp-upstage, UpstageAI/opencode, UpstageAI/solar-prompt-cookbook, UpstageAI/vllm, …). Zero design-system / Storybook / token-library repo as of 2026-05-15.getdesign.md/upstage → 200 but no curated entry; styles.refero.design/?q=upstage → 200 search shell, no result cards. Both verified 2026-05-15.https://www.upstage.ai/resources/brand-resource-center footer block — KR-mandated business-information disclosure (CEO, registration number, address) reproduced as factual reference, not promotional.Verification date: 2026-05-15
Verification method: live CDP :9222 + Tier 1/2 URL probes + GitHub org enumeration
Live-inspect proof: references/upstage/assets/_reference/.live-inspect-proof.json (8 raw_samples, ≥5 required floor)
Confidence per section:
--space-* ladder exposed; observations are visual not token-derived)[FILL IN] required before product reuse)Flags (carry into audit row):
upstage — consistent with the systemic KR-coverage gap.#D2FF95 is a single-use chromatic accent — repeating it broadly will read as a different brand./products/solar-pro-3) and Documentation surface.IP guardrails confirmed: brand assets reference-only (logos / Espeak face not redistributed); no verbatim Upstage marketing copy quoted; §10 voice samples are fresh OmD-derived shape-only alternatives; KR business-information block reproduced as factual disclosure, not promotion.
Upstage looks like an enterprise AI company that decided to spend its visual budget on one purple, one display face, and one rotating word — and then on absolutely nothing else. The home surface ships in a deep plum hero canvas (#3C043B, exposed as --colors--grey-background), pairs it with a near-mint Solar accent (#D2FF95, a vivid mid-step of the
Accent
Neutrals
Type Scale
Rendered in system-ui to clearly show scale & weight.
Fonts
Spacing
| Purpose | Value | Preview |
|---|---|---|
| Density | compact | |
| Base unit | 4px | |
| Section gap | 32px | |
| Card padding | 16px | |
| Element gap | 12px |
Border Radius
| Element | Value | Preview |
|---|---|---|
| buttons | 0px | |
| inputs | 0px | |
| cards | 0px | |
| dialogs | 0px | |
| badges | 0px |
Elevation