{
  "name": "Odyssey",
  "slug": "odyssey",
  "domain": "https://odyssey.world/",
  "sources": [
    "apollo_us_mid",
    "startups_gallery"
  ],
  "branding": {
    "colorScheme": "dark",
    "fonts": [
      {
        "family": "Geist",
        "role": "body"
      },
      {
        "family": "NeueBit Bold",
        "role": "heading"
      },
      {
        "family": "Mondwest Regular",
        "role": "display"
      }
    ],
    "colors": {
      "primary": "#0054FF",
      "secondary": "#EEEEFF",
      "accent": "#0000EE",
      "background": "#090909",
      "textPrimary": "#090909",
      "link": "#0000EE"
    },
    "typography": {
      "fontFamilies": {
        "primary": "Geist",
        "heading": "NeueBit Bold"
      },
      "fontStacks": {
        "heading": [
          "sans-serif"
        ],
        "body": [
          "sans-serif"
        ],
        "paragraph": [
          "Geist",
          "sans-serif"
        ]
      },
      "fontSizes": {
        "h1": "12px",
        "h2": "12px",
        "body": "14px"
      }
    },
    "spacing": {
      "baseUnit": 4,
      "borderRadius": "0px"
    },
    "components": {},
    "images": {
      "favicon": "https://framerusercontent.com/images/1gLNf78RSImAfZaMvMGEaNdnj0U.svg",
      "ogImage": "https://framerusercontent.com/images/soEaQqYIwQlnhfTjIjbQLoxUQ8.png"
    },
    "__llm_logo_reasoning": {
      "selectedIndex": -1,
      "reasoning": "No candidate is located in the header area, which is typically where the main brand logo is found. Both candidates are in the body and do not clearly match the favicon or have strong brand indicators.",
      "confidence": 0.3,
      "rejected": true,
      "source": "llm"
    },
    "personality": {
      "tone": "modern",
      "energy": "medium",
      "targetAudience": "tech-savvy individuals"
    },
    "designSystem": {
      "framework": "custom",
      "componentLibrary": ""
    },
    "confidence": {
      "buttons": 0,
      "colors": 0.9,
      "overall": 0.45
    },
    "__llm_metadata": {
      "logoSelection": {
        "llmCalled": true,
        "llmSucceeded": true,
        "finalSource": "llm",
        "rawLogoSelection": {
          "selectedLogoIndex": -1,
          "selectedLogoReasoning": "No candidate is located in the header area, which is typically where the main brand logo is found. Both candidates are in the body and do not clearly match the favicon or have strong brand indicators.",
          "confidence": 0.3
        }
      },
      "buttonClassification": {
        "llmCalled": false,
        "llmSucceeded": false
      }
    }
  },
  "images": [
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/odyssey/9cf8608d94.webp",
      "alt": "Odyssey",
      "source_url": "https://odyssey.world/",
      "image_url": "https://framerusercontent.com/images/BjkXbsP7Tzj00TpYNq9joLwNGiE.jpg?width=1920&height=1080",
      "width": 1920,
      "height": 1080,
      "bytes": 91931,
      "query": "site:odyssey.world blog",
      "query_suffix": "site:odyssey.world blog"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/odyssey/296809d1ab.webp",
      "alt": "Odyssey",
      "source_url": "https://odyssey.world/",
      "image_url": "https://framerusercontent.com/images/SPpMO7PxTkPs6iwSf6DQgV2AD8.webp?width=5504&height=3072",
      "width": 5504,
      "height": 3072,
      "bytes": 434510,
      "query": "site:odyssey.world",
      "query_suffix": "site:odyssey.world"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/odyssey/199329f2dc.webp",
      "alt": "Odyssey",
      "source_url": "https://odyssey.world/",
      "image_url": "https://framerusercontent.com/images/Cv7M0UtnJozZA6R4plpzacUd4sI.jpeg?width=2048&height=1024",
      "width": 2048,
      "height": 1024,
      "bytes": 323142,
      "query": "site:odyssey.world blog",
      "query_suffix": "site:odyssey.world blog"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/odyssey/40a1a9432e.webp",
      "alt": "Odyssey",
      "source_url": "https://odyssey.world/",
      "image_url": "https://framerusercontent.com/images/kCfb3bq9AMkaHwS8wiEv0EiIM.webp?width=3000&height=1674",
      "width": 3000,
      "height": 1674,
      "bytes": 204716,
      "query": "site:odyssey.world",
      "query_suffix": "site:odyssey.world"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/odyssey/43538611ca.webp",
      "alt": "Odyssey",
      "source_url": "https://experience.odyssey.world/",
      "image_url": "https://experience.odyssey.ml/share-card.jpg",
      "width": 2400,
      "height": 1260,
      "bytes": 297249,
      "query": "site:odyssey.world",
      "query_suffix": "site:odyssey.world"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/odyssey/f10e8511ab.webp",
      "alt": "Odyssey",
      "source_url": "https://odyssey.world/",
      "image_url": "https://framerusercontent.com/images/4ySwbwapCA2GZF0i7Mcml8uWA.jpg?width=1024&height=769",
      "width": 1024,
      "height": 769,
      "bytes": 147782,
      "query": "site:odyssey.world blog",
      "query_suffix": "site:odyssey.world blog"
    }
  ],
  "font_resources": [
    {
      "family": "Geist",
      "google_fonts_url": "https://fonts.google.com/specimen/Geist"
    },
    {
      "family": "NeueBit Bold",
      "google_fonts_url": "https://fonts.google.com/specimen/NeueBit+Bold"
    }
  ],
  "google_fonts_css": "https://fonts.googleapis.com/css2?family=Geist&family=NeueBit+Bold&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/odyssey",
  "agent_instructions": "You are designing or implementing in Odyssey's brand identity.\n\n# Brand profile\n- Company: Odyssey\n- Source: https://odyssey.world/\n- Color scheme: dark\n\n# Colors\n- primary: #0054FF\n- secondary: #EEEEFF\n- accent: #0000EE\n- background: #090909\n- textPrimary: #090909\n- link: #0000EE\n\n# Typography\n- primary: Geist — https://fonts.google.com/specimen/Geist\n- heading: NeueBit Bold — https://fonts.google.com/specimen/NeueBit+Bold\n\nLoad all fonts at once: <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Geist&family=NeueBit+Bold&display=swap\">\n\n# UI Components\n\n\n# Brand voice\n- Tone: modern\n- Energy: medium\n- Audience: tech-savvy individuals\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/odyssey.json",
  "page_markdown": "# Odyssey Brand Identity\n\nA complete profile of **Odyssey**'s visual system — colors, typography, components, and personality — extracted from https://odyssey.world/. Built for designers, agents, and AI tools.\n\n- Page: https://characterquilt.com/branding/odyssey\n- Machine-readable JSON: https://characterquilt.com/branding/odyssey.json\n- Per-page llms.txt: https://characterquilt.com/branding/odyssey/llms.txt\n\n## Quick Facts\n\n| Field | Value |\n|---|---|\n| Primary | #0054FF |\n| Accent | #0000EE |\n| Body Font | Geist |\n| Heading Font | NeueBit Bold |\n\n## Color Palette\n\n- primary: #0054FF\n- secondary: #EEEEFF\n- accent: #0000EE\n- background: #090909\n- textPrimary: #090909\n- link: #0000EE\n\n## Typography\n\n- primary: Geist — https://fonts.google.com/specimen/Geist\n- heading: NeueBit Bold — https://fonts.google.com/specimen/NeueBit+Bold\n\n## Visual Assets\n\n- Favicon: https://framerusercontent.com/images/1gLNf78RSImAfZaMvMGEaNdnj0U.svg\n- Social card (og:image): https://framerusercontent.com/images/soEaQqYIwQlnhfTjIjbQLoxUQ8.png\n\n## Brand Personality\n\nTone: modern · Energy: medium · Audience: tech-savvy individuals\n\n## Odyssey Brand in the Wild\n\nReal-world brand assets — ads, campaigns, marketing materials.\n\n- **Odyssey**\n  - Image: https://framerusercontent.com/images/BjkXbsP7Tzj00TpYNq9joLwNGiE.jpg?width=1920&height=1080\n  - Source: https://odyssey.world/\n- **Odyssey**\n  - Image: https://framerusercontent.com/images/SPpMO7PxTkPs6iwSf6DQgV2AD8.webp?width=5504&height=3072\n  - Source: https://odyssey.world/\n- **Odyssey**\n  - Image: https://framerusercontent.com/images/Cv7M0UtnJozZA6R4plpzacUd4sI.jpeg?width=2048&height=1024\n  - Source: https://odyssey.world/\n- **Odyssey**\n  - Image: https://framerusercontent.com/images/kCfb3bq9AMkaHwS8wiEv0EiIM.webp?width=3000&height=1674\n  - Source: https://odyssey.world/\n- **Odyssey**\n  - Image: https://experience.odyssey.ml/share-card.jpg\n  - Source: https://experience.odyssey.world/\n- **Odyssey**\n  - Image: https://framerusercontent.com/images/4ySwbwapCA2GZF0i7Mcml8uWA.jpg?width=1024&height=769\n  - Source: https://odyssey.world/\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\": \"dark\",\n  \"fonts\": [\n    {\n      \"family\": \"Geist\",\n      \"role\": \"body\"\n    },\n    {\n      \"family\": \"NeueBit Bold\",\n      \"role\": \"heading\"\n    },\n    {\n      \"family\": \"Mondwest Regular\",\n      \"role\": \"display\"\n    }\n  ],\n  \"colors\": {\n    \"primary\": \"#0054FF\",\n    \"secondary\": \"#EEEEFF\",\n    \"accent\": \"#0000EE\",\n    \"background\": \"#090909\",\n    \"textPrimary\": \"#090909\",\n    \"link\": \"#0000EE\"\n  },\n  \"typography\": {\n    \"fontFamilies\": {\n      \"primary\": \"Geist\",\n      \"heading\": \"NeueBit Bold\"\n    },\n    \"fontStacks\": {\n      \"heading\": [\n        \"sans-serif\"\n      ],\n      \"body\": [\n        \"sans-serif\"\n      ],\n      \"paragraph\": [\n        \"Geist\",\n        \"sans-serif\"\n      ]\n    },\n    \"fontSizes\": {\n      \"h1\": \"12px\",\n      \"h2\": \"12px\",\n      \"body\": \"14px\"\n    }\n  },\n  \"spacing\": {\n    \"baseUnit\": 4,\n    \"borderRadius\": \"0px\"\n  },\n  \"components\": {},\n  \"images\": {\n    \"favicon\": \"https://framerusercontent.com/images/1gLNf78RSImAfZaMvMGEaNdnj0U.svg\",\n    \"ogImage\": \"https://framerusercontent.com/images/soEaQqYIwQlnhfTjIjbQLoxUQ8.png\"\n  },\n  \"__llm_logo_reasoning\": {\n    \"selectedIndex\": -1,\n    \"reasoning\": \"No candidate is located in the header area, which is typically where the main brand logo is found. Both candidates are in the body and do not clearly match the favicon or have strong brand indicators.\",\n    \"confidence\": 0.3,\n    \"rejected\": true,\n    \"source\": \"llm\"\n  },\n  \"personality\": {\n    \"tone\": \"modern\",\n    \"energy\": \"medium\",\n    \"targetAudience\": \"tech-savvy individuals\"\n  },\n  \"designSystem\": {\n    \"framework\": \"custom\",\n    \"componentLibrary\": \"\"\n  },\n  \"confidence\": {\n    \"buttons\": 0,\n    \"colors\": 0.9,\n    \"overall\": 0.45\n  },\n  \"__llm_metadata\": {\n    \"logoSelection\": {\n      \"llmCalled\": true,\n      \"llmSucceeded\": true,\n      \"finalSource\": \"llm\",\n      \"rawLogoSelection\": {\n        \"selectedLogoIndex\": -1,\n        \"selectedLogoReasoning\": \"No candidate is located in the header area, which is typically where the main brand logo is found. Both candidates are in the body and do not clearly match the favicon or have strong brand indicators.\",\n        \"confidence\": 0.3\n      }\n    },\n    \"buttonClassification\": {\n      \"llmCalled\": false,\n      \"llmSucceeded\": false\n    }\n  }\n}\n```\n"
}