{
  "name": "Vespper",
  "slug": "vespper",
  "domain": "https://vespper.com/?utm_source=ycombinator.com",
  "sources": [
    "yc"
  ],
  "branding": {
    "colorScheme": "light",
    "fonts": [
      {
        "family": "Inter",
        "role": "body"
      },
      {
        "family": "Hanken Grotesk",
        "role": "heading"
      },
      {
        "family": "DM Sans",
        "role": "unknown"
      },
      {
        "family": "Instrument Serif",
        "role": "unknown"
      }
    ],
    "colors": {
      "primary": "#6A7282",
      "secondary": "#ECFDF5",
      "accent": "#6229FF",
      "background": "#F7F5F3",
      "textPrimary": "#37322F",
      "link": "#6229FF"
    },
    "typography": {
      "fontFamilies": {
        "primary": "Inter",
        "heading": "Hanken Grotesk"
      },
      "fontStacks": {
        "heading": [
          "Instrument Serif"
        ],
        "body": [
          "Inter"
        ],
        "paragraph": [
          "Inter"
        ]
      },
      "fontSizes": {
        "h1": "80px",
        "h2": "11px",
        "body": "14px"
      }
    },
    "spacing": {
      "baseUnit": 4,
      "borderRadius": "4px"
    },
    "components": {
      "input": {
        "background": "#FEFCFA",
        "textColor": "#262626",
        "borderColor": null,
        "borderRadius": "10px",
        "borderRadiusCorners": {
          "topLeft": "10px",
          "topRight": "10px",
          "bottomRight": "10px",
          "bottomLeft": "10px"
        },
        "shadow": "none"
      },
      "buttonPrimary": {
        "background": "#37322F",
        "textColor": "#0A0A0A",
        "borderRadius": "33554400px",
        "borderRadiusCorners": {
          "topLeft": "33554400px",
          "topRight": "33554400px",
          "bottomRight": "33554400px",
          "bottomLeft": "33554400px"
        },
        "shadow": "rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(255, 255, 255, 0.08) 0px 0px 0px 2.5px inset"
      },
      "buttonSecondary": {
        "background": "#FFFFFF",
        "textColor": "#37322F",
        "borderColor": "#E0DEDB",
        "borderRadius": "33554400px",
        "borderRadiusCorners": {
          "topLeft": "33554400px",
          "topRight": "33554400px",
          "bottomRight": "33554400px",
          "bottomLeft": "33554400px"
        },
        "shadow": "none"
      }
    },
    "images": {
      "logo": "https://www.vespper.com/_next/image?url=%2Fvespper-logo-dark.png&w=256&q=75",
      "favicon": "https://www.vespper.com/vespper.ico",
      "ogImage": "https://vespper.com/opengraph-image?68e7302e338972a4",
      "logoAlt": "Vespper Logo"
    },
    "__llm_logo_reasoning": {
      "selectedIndex": 0,
      "reasoning": "Selected #0 because it is visible, medium-sized, and matches the brand name 'Vespper' in the alt text. It is the most prominent logo related to the brand.",
      "confidence": 0.85,
      "source": "llm"
    },
    "__llm_button_reasoning": {
      "primary": {
        "index": 2,
        "text": "Start for free",
        "reasoning": "Button #2 'Start for free' has a vibrant and action-oriented text, making it a strong candidate for the primary CTA. It uses a distinct neutral color (#37322F) that stands out against the background."
      },
      "secondary": {
        "index": 25,
        "text": "Sign in",
        "reasoning": "Button #0 'Sign in' has a different background color (#FFFFFF) and serves a secondary function, making it suitable as a secondary CTA."
      },
      "confidence": 0.9
    },
    "personality": {
      "tone": "professional",
      "energy": "medium",
      "targetAudience": "professionals seeking AI document editing solutions"
    },
    "designSystem": {
      "framework": "tailwind",
      "componentLibrary": ""
    },
    "confidence": {
      "buttons": 0.9,
      "colors": 0.95,
      "overall": 0.925
    },
    "__llm_metadata": {
      "logoSelection": {
        "llmCalled": true,
        "llmSucceeded": true,
        "finalSource": "llm",
        "rawLogoSelection": {
          "selectedLogoIndex": 0,
          "selectedLogoReasoning": "Selected #0 because it is visible, medium-sized, and matches the brand name 'Vespper' in the alt text. It is the most prominent logo related to the brand.",
          "confidence": 0.85
        }
      },
      "buttonClassification": {
        "llmCalled": true,
        "llmSucceeded": true
      }
    }
  },
  "images": [
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/vespper/aea1192c37.webp",
      "alt": "Vespper - AI Document Editor for Professional Documents",
      "source_url": "https://www.vespper.com/",
      "image_url": "https://www.vespper.com/_next/image?url=%2Fhero-mobile-image.png&w=3840&q=75",
      "width": 2346,
      "height": 1570,
      "bytes": 217752,
      "query": "site:vespper.com/?utm_source=ycombinator.com",
      "query_suffix": "site:vespper.com/?utm_source=ycombinator.com"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/vespper/7a41fd3458.webp",
      "alt": "Vespper - AI Document Editor for Professional Documents",
      "source_url": "https://www.vespper.com/",
      "image_url": "https://www.vespper.com/testimonials/principal_scientist_directory_of_discovery.png",
      "width": 1280,
      "height": 1280,
      "bytes": 1454462,
      "query": "site:vespper.com/?utm_source=ycombinator.com",
      "query_suffix": "site:vespper.com/?utm_source=ycombinator.com"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/vespper/9f386a1554.webp",
      "alt": "Vespper - AI Document Editor for Professional Documents",
      "source_url": "https://www.vespper.com/",
      "image_url": "https://www.vespper.com/testimonials/director_of_ra.png",
      "width": 1280,
      "height": 1280,
      "bytes": 1216708,
      "query": "site:vespper.com/?utm_source=ycombinator.com",
      "query_suffix": "site:vespper.com/?utm_source=ycombinator.com"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/vespper/401d90a9ce.webp",
      "alt": "Vespper - AI Document Editor for Professional Documents",
      "source_url": "https://www.vespper.com/",
      "image_url": "https://vespper.com/opengraph-image",
      "width": 1200,
      "height": 630,
      "bytes": 28909,
      "query": "site:vespper.com/?utm_source=ycombinator.com",
      "query_suffix": "site:vespper.com/?utm_source=ycombinator.com"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/vespper/44cdfedbd4.webp",
      "alt": "Vespper - AI Document Editor for Professional Documents",
      "source_url": "https://www.vespper.com/",
      "image_url": "https://www.vespper.com/testimonials/senior_scientist.png",
      "width": 600,
      "height": 600,
      "bytes": 395403,
      "query": "site:vespper.com/?utm_source=ycombinator.com",
      "query_suffix": "site:vespper.com/?utm_source=ycombinator.com"
    }
  ],
  "font_resources": [
    {
      "family": "Inter",
      "google_fonts_url": "https://fonts.google.com/specimen/Inter"
    },
    {
      "family": "Hanken Grotesk",
      "google_fonts_url": "https://fonts.google.com/specimen/Hanken+Grotesk"
    }
  ],
  "google_fonts_css": "https://fonts.googleapis.com/css2?family=Inter&family=Hanken+Grotesk&display=swap",
  "font_download_note": "Not found on Google Fonts? Agent Instructions that you can follow if you have permission to use the fonts:\n\nCharacterQuilt.com suggests this flow that can help:\n\n1. Open the company's homepage in a browser with DevTools open.\n2. In the Network tab, filter by \"Font\" (or by extension: woff2, woff, ttf, otf).\n3. Hard-reload the page and click around (pricing, blog, careers) — some weights only load on specific routes.\n4. For each captured font URL: right-click → Save As to download the file locally.\n5. View the page's CSS (DevTools → Sources, or curl the stylesheet URLs) and copy out the matching @font-face declarations. Rewrite each `src: url(...)` to point to your local file path.\n\nProgrammatic alternative: load the URL with Playwright or Puppeteer, listen for `response` events whose `Content-Type` starts with `font/`, and write the body to disk. The CSS extraction step is the same.\n\nOnly do this if you have permission to use the brand assets — most proprietary fonts are licensed and may not be redistributable.",
  "page_url": "https://characterquilt.com/branding/vespper",
  "agent_instructions": "You are designing or implementing in Vespper's brand identity.\n\n# Brand profile\n- Company: Vespper\n- Source: https://vespper.com/?utm_source=ycombinator.com\n- Color scheme: light\n\n# Colors\n- primary: #6A7282\n- secondary: #ECFDF5\n- accent: #6229FF\n- background: #F7F5F3\n- textPrimary: #37322F\n- link: #6229FF\n\n# Typography\n- primary: Inter — https://fonts.google.com/specimen/Inter\n- heading: Hanken Grotesk — https://fonts.google.com/specimen/Hanken+Grotesk\n\nLoad all fonts at once: <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Inter&family=Hanken+Grotesk&display=swap\">\n\n# UI Components\n- input: background=#FEFCFA, textColor=#262626, borderColor=null, borderRadius=10px, shadow=none\n- buttonPrimary: background=#37322F, textColor=#0A0A0A, borderRadius=33554400px, shadow=rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(255, 255, 255, 0.08) 0px 0px 0px 2.5px inset\n- buttonSecondary: background=#FFFFFF, textColor=#37322F, borderColor=#E0DEDB, borderRadius=33554400px, shadow=none\n\n# Brand voice\n- Tone: professional\n- Energy: medium\n- Audience: professionals seeking AI document editing solutions\n\n# Working with these fonts\nNot found on Google Fonts? Agent Instructions that you can follow if you have permission to use the fonts:\n\nCharacterQuilt.com suggests this flow that can help:\n\n1. Open the company's homepage in a browser with DevTools open.\n2. In the Network tab, filter by \"Font\" (or by extension: woff2, woff, ttf, otf).\n3. Hard-reload the page and click around (pricing, blog, careers) — some weights only load on specific routes.\n4. For each captured font URL: right-click → Save As to download the file locally.\n5. View the page's CSS (DevTools → Sources, or curl the stylesheet URLs) and copy out the matching @font-face declarations. Rewrite each `src: url(...)` to point to your local file path.\n\nProgrammatic alternative: load the URL with Playwright or Puppeteer, listen for `response` events whose `Content-Type` starts with `font/`, and write the body to disk. The CSS extraction step is the same.\n\nOnly do this if you have permission to use the brand assets — most proprietary fonts are licensed and may not be redistributable.\n\n# Full machine-readable profile\nhttps://characterquilt.com/branding/vespper.json",
  "page_markdown": "# Vespper Brand Identity\n\nA complete profile of **Vespper**'s visual system — colors, typography, components, and personality — extracted from https://vespper.com/?utm_source=ycombinator.com. Built for designers, agents, and AI tools.\n\n- Page: https://characterquilt.com/branding/vespper\n- Machine-readable JSON: https://characterquilt.com/branding/vespper.json\n- Per-page llms.txt: https://characterquilt.com/branding/vespper/llms.txt\n\n## Quick Facts\n\n| Field | Value |\n|---|---|\n| Primary | #6A7282 |\n| Accent | #6229FF |\n| Body Font | Inter |\n| Heading Font | Hanken Grotesk |\n\n## Color Palette\n\n- primary: #6A7282\n- secondary: #ECFDF5\n- accent: #6229FF\n- background: #F7F5F3\n- textPrimary: #37322F\n- link: #6229FF\n\n## Typography\n\n- primary: Inter — https://fonts.google.com/specimen/Inter\n- heading: Hanken Grotesk — https://fonts.google.com/specimen/Hanken+Grotesk\n\n## Visual Assets\n\n- Logo: https://www.vespper.com/_next/image?url=%2Fvespper-logo-dark.png&w=256&q=75\n- Favicon: https://www.vespper.com/vespper.ico\n- Social card (og:image): https://vespper.com/opengraph-image?68e7302e338972a4\n\n## UI Components\n\n- input: background=#FEFCFA, textColor=#262626, borderColor=null, borderRadius=10px, shadow=none\n- buttonPrimary: background=#37322F, textColor=#0A0A0A, borderRadius=33554400px, shadow=rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(255, 255, 255, 0.08) 0px 0px 0px 2.5px inset\n- buttonSecondary: background=#FFFFFF, textColor=#37322F, borderColor=#E0DEDB, borderRadius=33554400px, shadow=none\n\n## Brand Personality\n\nTone: professional · Energy: medium · Audience: professionals seeking AI document editing solutions\n\n## Vespper Brand in the Wild\n\nReal-world brand assets — ads, campaigns, marketing materials.\n\n- **Vespper - AI Document Editor for Professional Documents**\n  - Image: https://www.vespper.com/_next/image?url=%2Fhero-mobile-image.png&w=3840&q=75\n  - Source: https://www.vespper.com/\n- **Vespper - AI Document Editor for Professional Documents**\n  - Image: https://www.vespper.com/testimonials/principal_scientist_directory_of_discovery.png\n  - Source: https://www.vespper.com/\n- **Vespper - AI Document Editor for Professional Documents**\n  - Image: https://www.vespper.com/testimonials/director_of_ra.png\n  - Source: https://www.vespper.com/\n- **Vespper - AI Document Editor for Professional Documents**\n  - Image: https://vespper.com/opengraph-image\n  - Source: https://www.vespper.com/\n- **Vespper - AI Document Editor for Professional Documents**\n  - Image: https://www.vespper.com/testimonials/senior_scientist.png\n  - Source: https://www.vespper.com/\n\n## Working with these fonts\n\nNot found on Google Fonts? Agent Instructions that you can follow if you have permission to use the fonts:\n\nCharacterQuilt.com suggests this flow that can help:\n\n1. Open the company's homepage in a browser with DevTools open.\n2. In the Network tab, filter by \"Font\" (or by extension: woff2, woff, ttf, otf).\n3. Hard-reload the page and click around (pricing, blog, careers) — some weights only load on specific routes.\n4. For each captured font URL: right-click → Save As to download the file locally.\n5. View the page's CSS (DevTools → Sources, or curl the stylesheet URLs) and copy out the matching @font-face declarations. Rewrite each `src: url(...)` to point to your local file path.\n\nProgrammatic alternative: load the URL with Playwright or Puppeteer, listen for `response` events whose `Content-Type` starts with `font/`, and write the body to disk. The CSS extraction step is the same.\n\nOnly do this if you have permission to use the brand assets — most proprietary fonts are licensed and may not be redistributable.\n\n## Machine-Readable Profile\n\n```json\n{\n  \"colorScheme\": \"light\",\n  \"fonts\": [\n    {\n      \"family\": \"Inter\",\n      \"role\": \"body\"\n    },\n    {\n      \"family\": \"Hanken Grotesk\",\n      \"role\": \"heading\"\n    },\n    {\n      \"family\": \"DM Sans\",\n      \"role\": \"unknown\"\n    },\n    {\n      \"family\": \"Instrument Serif\",\n      \"role\": \"unknown\"\n    }\n  ],\n  \"colors\": {\n    \"primary\": \"#6A7282\",\n    \"secondary\": \"#ECFDF5\",\n    \"accent\": \"#6229FF\",\n    \"background\": \"#F7F5F3\",\n    \"textPrimary\": \"#37322F\",\n    \"link\": \"#6229FF\"\n  },\n  \"typography\": {\n    \"fontFamilies\": {\n      \"primary\": \"Inter\",\n      \"heading\": \"Hanken Grotesk\"\n    },\n    \"fontStacks\": {\n      \"heading\": [\n        \"Instrument Serif\"\n      ],\n      \"body\": [\n        \"Inter\"\n      ],\n      \"paragraph\": [\n        \"Inter\"\n      ]\n    },\n    \"fontSizes\": {\n      \"h1\": \"80px\",\n      \"h2\": \"11px\",\n      \"body\": \"14px\"\n    }\n  },\n  \"spacing\": {\n    \"baseUnit\": 4,\n    \"borderRadius\": \"4px\"\n  },\n  \"components\": {\n    \"input\": {\n      \"background\": \"#FEFCFA\",\n      \"textColor\": \"#262626\",\n      \"borderColor\": null,\n      \"borderRadius\": \"10px\",\n      \"borderRadiusCorners\": {\n        \"topLeft\": \"10px\",\n        \"topRight\": \"10px\",\n        \"bottomRight\": \"10px\",\n        \"bottomLeft\": \"10px\"\n      },\n      \"shadow\": \"none\"\n    },\n    \"buttonPrimary\": {\n      \"background\": \"#37322F\",\n      \"textColor\": \"#0A0A0A\",\n      \"borderRadius\": \"33554400px\",\n      \"borderRadiusCorners\": {\n        \"topLeft\": \"33554400px\",\n        \"topRight\": \"33554400px\",\n        \"bottomRight\": \"33554400px\",\n        \"bottomLeft\": \"33554400px\"\n      },\n      \"shadow\": \"rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(255, 255, 255, 0.08) 0px 0px 0px 2.5px inset\"\n    },\n    \"buttonSecondary\": {\n      \"background\": \"#FFFFFF\",\n      \"textColor\": \"#37322F\",\n      \"borderColor\": \"#E0DEDB\",\n      \"borderRadius\": \"33554400px\",\n      \"borderRadiusCorners\": {\n        \"topLeft\": \"33554400px\",\n        \"topRight\": \"33554400px\",\n        \"bottomRight\": \"33554400px\",\n        \"bottomLeft\": \"33554400px\"\n      },\n      \"shadow\": \"none\"\n    }\n  },\n  \"images\": {\n    \"logo\": \"https://www.vespper.com/_next/image?url=%2Fvespper-logo-dark.png&w=256&q=75\",\n    \"favicon\": \"https://www.vespper.com/vespper.ico\",\n    \"ogImage\": \"https://vespper.com/opengraph-image?68e7302e338972a4\",\n    \"logoAlt\": \"Vespper Logo\"\n  },\n  \"__llm_logo_reasoning\": {\n    \"selectedIndex\": 0,\n    \"reasoning\": \"Selected #0 because it is visible, medium-sized, and matches the brand name 'Vespper' in the alt text. It is the most prominent logo related to the brand.\",\n    \"confidence\": 0.85,\n    \"source\": \"llm\"\n  },\n  \"__llm_button_reasoning\": {\n    \"primary\": {\n      \"index\": 2,\n      \"text\": \"Start for free\",\n      \"reasoning\": \"Button #2 'Start for free' has a vibrant and action-oriented text, making it a strong candidate for the primary CTA. It uses a distinct neutral color (#37322F) that stands out against the background.\"\n    },\n    \"secondary\": {\n      \"index\": 25,\n      \"text\": \"Sign in\",\n      \"reasoning\": \"Button #0 'Sign in' has a different background color (#FFFFFF) and serves a secondary function, making it suitable as a secondary CTA.\"\n    },\n    \"confidence\": 0.9\n  },\n  \"personality\": {\n    \"tone\": \"professional\",\n    \"energy\": \"medium\",\n    \"targetAudience\": \"professionals seeking AI document editing solutions\"\n  },\n  \"designSystem\": {\n    \"framework\": \"tailwind\",\n    \"componentLibrary\": \"\"\n  },\n  \"confidence\": {\n    \"buttons\": 0.9,\n    \"colors\": 0.95,\n    \"overall\": 0.925\n  },\n  \"__llm_metadata\": {\n    \"logoSelection\": {\n      \"llmCalled\": true,\n      \"llmSucceeded\": true,\n      \"finalSource\": \"llm\",\n      \"rawLogoSelection\": {\n        \"selectedLogoIndex\": 0,\n        \"selectedLogoReasoning\": \"Selected #0 because it is visible, medium-sized, and matches the brand name 'Vespper' in the alt text. It is the most prominent logo related to the brand.\",\n        \"confidence\": 0.85\n      }\n    },\n    \"buttonClassification\": {\n      \"llmCalled\": true,\n      \"llmSucceeded\": true\n    }\n  }\n}\n```\n"
}