{
  "name": "Expo",
  "slug": "expo",
  "domain": "https://expo.dev",
  "sources": [
    "apollo_us_mid",
    "yc"
  ],
  "branding": {
    "colorScheme": "light",
    "fonts": [
      {
        "family": "Inter",
        "role": "body"
      },
      {
        "family": "JetBrains Mono",
        "role": "monospace"
      }
    ],
    "colors": {
      "primary": "#B8AE63",
      "secondary": "#0090FF",
      "accent": "#0D74CE",
      "background": "#FFFFFF",
      "textPrimary": "#000000",
      "link": "#0D74CE"
    },
    "typography": {
      "fontFamilies": {
        "primary": "Inter",
        "heading": "Inter"
      },
      "fontStacks": {
        "heading": [
          "Inter",
          "-apple-system",
          "system-ui",
          "sans-serif"
        ],
        "body": [
          "Inter",
          "-apple-system",
          "system-ui",
          "sans-serif"
        ],
        "paragraph": [
          "Inter",
          "-apple-system",
          "system-ui",
          "sans-serif"
        ]
      },
      "fontSizes": {
        "h1": "64px",
        "h2": "18px",
        "body": "12px"
      }
    },
    "spacing": {
      "baseUnit": 4,
      "borderRadius": "4px"
    },
    "components": {
      "buttonPrimary": {
        "background": "#000000",
        "textColor": "#FFFFFF",
        "borderRadius": "48px",
        "borderRadiusCorners": {
          "topLeft": "48px",
          "topRight": "48px",
          "bottomRight": "48px",
          "bottomLeft": "48px"
        },
        "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(0, 0, 0, 0) 0px 0px 0px 0px"
      },
      "buttonSecondary": {
        "background": "transparent",
        "textColor": "#1C2024",
        "borderColor": "#CDCED6",
        "borderRadius": "48px",
        "borderRadiusCorners": {
          "topLeft": "48px",
          "topRight": "48px",
          "bottomRight": "48px",
          "bottomLeft": "48px"
        },
        "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(0, 0, 0, 0) 0px 0px 0px 0px"
      }
    },
    "images": {
      "logo": "https://static.expo.dev/static/images/exponential.svg",
      "favicon": "https://static.expo.dev/static/favicons/favicon-light-48x48.png",
      "ogImage": "https://static.expo.dev/static/home/9-2025/og-image.png",
      "logoHref": "/",
      "logoAlt": "Expo"
    },
    "__llm_logo_reasoning": {
      "selectedIndex": 1,
      "reasoning": "Selected #1 because it is in the header, links to the homepage, and matches the brand name 'Expo'.",
      "confidence": 0.9,
      "source": "llm"
    },
    "__llm_button_reasoning": {
      "primary": {
        "index": 0,
        "text": "Get started for free",
        "reasoning": "Button #0 has a vibrant, dark background color (#000000) with action-oriented text 'Get started for free', making it the primary CTA."
      },
      "secondary": {
        "index": 2,
        "text": "Read the docs",
        "reasoning": "Button #1 has a transparent background with a border, making it a suitable secondary CTA with the text 'Read the docs'."
      },
      "confidence": 0.95
    },
    "personality": {
      "tone": "modern",
      "energy": "medium",
      "targetAudience": "developers"
    },
    "designSystem": {
      "framework": "tailwind",
      "componentLibrary": ""
    },
    "confidence": {
      "buttons": 0.95,
      "colors": 0.9,
      "overall": 0.925
    },
    "__llm_metadata": {
      "logoSelection": {
        "llmCalled": true,
        "llmSucceeded": true,
        "finalSource": "llm",
        "rawLogoSelection": {
          "selectedLogoIndex": 1,
          "selectedLogoReasoning": "Selected #1 because it is in the header, links to the homepage, and matches the brand name 'Expo'.",
          "confidence": 0.9
        }
      },
      "buttonClassification": {
        "llmCalled": true,
        "llmSucceeded": true
      }
    }
  },
  "images": [
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/expo/312de1f00d.webp",
      "alt": "Audit logs - Expo Documentation",
      "source_url": "https://docs.expo.dev/accounts/audit-logs/",
      "image_url": "https://docs.expo.dev/static/images/accounts/audit-logs-details.png",
      "width": 3409,
      "height": 2744,
      "bytes": 1018378,
      "query": "site:expo.dev",
      "query_suffix": "site:expo.dev"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/expo/66ee7395b3.webp",
      "alt": "Expo Blog",
      "source_url": "https://expo.dev/blog",
      "image_url": "https://cdn.sanity.io/images/9r24npb8/production/398354fd7b51c04c5b2326efeb04e6f0309e7fd9-2400x1350.png?auto=format&fit=max&q=75&w=1200",
      "width": 1200,
      "height": 675,
      "bytes": 286357,
      "query": "site:expo.dev blog",
      "query_suffix": "site:expo.dev blog"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/expo/0424baf012.webp",
      "alt": "Expo Orbit",
      "source_url": "https://expo.dev/orbit",
      "image_url": "https://cdn.sanity.io/images/9r24npb8/production/ddcae9bb6f40e7ef6a981612c27876ee0fcd5a08-4992x2704.png?fm=webp&auto=format",
      "width": 4992,
      "height": 2704,
      "bytes": 145498,
      "query": "site:expo.dev",
      "query_suffix": "site:expo.dev"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/expo/2a432d94a1.webp",
      "alt": "Expo Blog",
      "source_url": "https://expo.dev/blog",
      "image_url": "https://cdn.sanity.io/images/9r24npb8/production/14f4bab765afab5600bf16e3741169a78f1bcc35-2400x1350.png?auto=format&fit=max&q=75&w=1200",
      "width": 1200,
      "height": 675,
      "bytes": 157735,
      "query": "site:expo.dev blog",
      "query_suffix": "site:expo.dev blog"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/expo/045179d0d3.webp",
      "alt": "Mobile CI/CD built for React Native",
      "source_url": "https://expo.dev/services/workflows",
      "image_url": "https://cdn.sanity.io/images/9r24npb8/production/65d15b3a9ccf9733a3cfc07b18973feec175acc0-5120x2948.jpg?fm=webp&auto=format",
      "width": 5120,
      "height": 2948,
      "bytes": 225052,
      "query": "site:expo.dev",
      "query_suffix": "site:expo.dev"
    },
    {
      "file": "https://e4p9rs3sldnmtboz.public.blob.vercel-storage.com/expo/6906072bc7.webp",
      "alt": "Introducing Expo Router v5: the most powerful way to build full-stack  native apps",
      "source_url": "https://expo.dev/blog/expo-router-v5",
      "image_url": "https://cdn.sanity.io/images/9r24npb8/production/4cc4e9a227f79a0f6144de00bf536051124607d6-2400x1350.png",
      "width": 2400,
      "height": 1350,
      "bytes": 1340003,
      "query": "site:expo.dev blog",
      "query_suffix": "site:expo.dev blog"
    }
  ],
  "font_resources": [
    {
      "family": "Inter",
      "google_fonts_url": "https://fonts.google.com/specimen/Inter"
    },
    {
      "family": "Inter",
      "google_fonts_url": "https://fonts.google.com/specimen/Inter"
    }
  ],
  "google_fonts_css": "https://fonts.googleapis.com/css2?family=Inter&family=Inter&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/expo",
  "agent_instructions": "You are designing or implementing in Expo's brand identity.\n\n# Brand profile\n- Company: Expo\n- Source: https://expo.dev\n- Color scheme: light\n\n# Colors\n- primary: #B8AE63\n- secondary: #0090FF\n- accent: #0D74CE\n- background: #FFFFFF\n- textPrimary: #000000\n- link: #0D74CE\n\n# Typography\n- primary: Inter — https://fonts.google.com/specimen/Inter\n- heading: Inter — https://fonts.google.com/specimen/Inter\n\nLoad all fonts at once: <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Inter&family=Inter&display=swap\">\n\n# UI Components\n- buttonPrimary: background=#000000, textColor=#FFFFFF, borderRadius=48px, 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(0, 0, 0, 0) 0px 0px 0px 0px\n- buttonSecondary: background=transparent, textColor=#1C2024, borderColor=#CDCED6, borderRadius=48px, 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(0, 0, 0, 0) 0px 0px 0px 0px\n\n# Brand voice\n- Tone: modern\n- Energy: medium\n- Audience: developers\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/expo.json",
  "page_markdown": "# Expo Brand Identity\n\nA complete profile of **Expo**'s visual system — colors, typography, components, and personality — extracted from https://expo.dev. Built for designers, agents, and AI tools.\n\n- Page: https://characterquilt.com/branding/expo\n- Machine-readable JSON: https://characterquilt.com/branding/expo.json\n- Per-page llms.txt: https://characterquilt.com/branding/expo/llms.txt\n\n## Quick Facts\n\n| Field | Value |\n|---|---|\n| Primary | #B8AE63 |\n| Accent | #0D74CE |\n| Body Font | Inter |\n| Heading Font | Inter |\n\n## Color Palette\n\n- primary: #B8AE63\n- secondary: #0090FF\n- accent: #0D74CE\n- background: #FFFFFF\n- textPrimary: #000000\n- link: #0D74CE\n\n## Typography\n\n- primary: Inter — https://fonts.google.com/specimen/Inter\n- heading: Inter — https://fonts.google.com/specimen/Inter\n\n## Visual Assets\n\n- Logo: https://static.expo.dev/static/images/exponential.svg\n- Favicon: https://static.expo.dev/static/favicons/favicon-light-48x48.png\n- Social card (og:image): https://static.expo.dev/static/home/9-2025/og-image.png\n\n## UI Components\n\n- buttonPrimary: background=#000000, textColor=#FFFFFF, borderRadius=48px, 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(0, 0, 0, 0) 0px 0px 0px 0px\n- buttonSecondary: background=transparent, textColor=#1C2024, borderColor=#CDCED6, borderRadius=48px, 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(0, 0, 0, 0) 0px 0px 0px 0px\n\n## Brand Personality\n\nTone: modern · Energy: medium · Audience: developers\n\n## Expo Brand in the Wild\n\nReal-world brand assets — ads, campaigns, marketing materials.\n\n- **Audit logs - Expo Documentation**\n  - Image: https://docs.expo.dev/static/images/accounts/audit-logs-details.png\n  - Source: https://docs.expo.dev/accounts/audit-logs/\n- **Expo Blog**\n  - Image: https://cdn.sanity.io/images/9r24npb8/production/398354fd7b51c04c5b2326efeb04e6f0309e7fd9-2400x1350.png?auto=format&fit=max&q=75&w=1200\n  - Source: https://expo.dev/blog\n- **Expo Orbit**\n  - Image: https://cdn.sanity.io/images/9r24npb8/production/ddcae9bb6f40e7ef6a981612c27876ee0fcd5a08-4992x2704.png?fm=webp&auto=format\n  - Source: https://expo.dev/orbit\n- **Expo Blog**\n  - Image: https://cdn.sanity.io/images/9r24npb8/production/14f4bab765afab5600bf16e3741169a78f1bcc35-2400x1350.png?auto=format&fit=max&q=75&w=1200\n  - Source: https://expo.dev/blog\n- **Mobile CI/CD built for React Native**\n  - Image: https://cdn.sanity.io/images/9r24npb8/production/65d15b3a9ccf9733a3cfc07b18973feec175acc0-5120x2948.jpg?fm=webp&auto=format\n  - Source: https://expo.dev/services/workflows\n- **Introducing Expo Router v5: the most powerful way to build full-stack  native apps**\n  - Image: https://cdn.sanity.io/images/9r24npb8/production/4cc4e9a227f79a0f6144de00bf536051124607d6-2400x1350.png\n  - Source: https://expo.dev/blog/expo-router-v5\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\": \"JetBrains Mono\",\n      \"role\": \"monospace\"\n    }\n  ],\n  \"colors\": {\n    \"primary\": \"#B8AE63\",\n    \"secondary\": \"#0090FF\",\n    \"accent\": \"#0D74CE\",\n    \"background\": \"#FFFFFF\",\n    \"textPrimary\": \"#000000\",\n    \"link\": \"#0D74CE\"\n  },\n  \"typography\": {\n    \"fontFamilies\": {\n      \"primary\": \"Inter\",\n      \"heading\": \"Inter\"\n    },\n    \"fontStacks\": {\n      \"heading\": [\n        \"Inter\",\n        \"-apple-system\",\n        \"system-ui\",\n        \"sans-serif\"\n      ],\n      \"body\": [\n        \"Inter\",\n        \"-apple-system\",\n        \"system-ui\",\n        \"sans-serif\"\n      ],\n      \"paragraph\": [\n        \"Inter\",\n        \"-apple-system\",\n        \"system-ui\",\n        \"sans-serif\"\n      ]\n    },\n    \"fontSizes\": {\n      \"h1\": \"64px\",\n      \"h2\": \"18px\",\n      \"body\": \"12px\"\n    }\n  },\n  \"spacing\": {\n    \"baseUnit\": 4,\n    \"borderRadius\": \"4px\"\n  },\n  \"components\": {\n    \"buttonPrimary\": {\n      \"background\": \"#000000\",\n      \"textColor\": \"#FFFFFF\",\n      \"borderRadius\": \"48px\",\n      \"borderRadiusCorners\": {\n        \"topLeft\": \"48px\",\n        \"topRight\": \"48px\",\n        \"bottomRight\": \"48px\",\n        \"bottomLeft\": \"48px\"\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(0, 0, 0, 0) 0px 0px 0px 0px\"\n    },\n    \"buttonSecondary\": {\n      \"background\": \"transparent\",\n      \"textColor\": \"#1C2024\",\n      \"borderColor\": \"#CDCED6\",\n      \"borderRadius\": \"48px\",\n      \"borderRadiusCorners\": {\n        \"topLeft\": \"48px\",\n        \"topRight\": \"48px\",\n        \"bottomRight\": \"48px\",\n        \"bottomLeft\": \"48px\"\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(0, 0, 0, 0) 0px 0px 0px 0px\"\n    }\n  },\n  \"images\": {\n    \"logo\": \"https://static.expo.dev/static/images/exponential.svg\",\n    \"favicon\": \"https://static.expo.dev/static/favicons/favicon-light-48x48.png\",\n    \"ogImage\": \"https://static.expo.dev/static/home/9-2025/og-image.png\",\n    \"logoHref\": \"/\",\n    \"logoAlt\": \"Expo\"\n  },\n  \"__llm_logo_reasoning\": {\n    \"selectedIndex\": 1,\n    \"reasoning\": \"Selected #1 because it is in the header, links to the homepage, and matches the brand name 'Expo'.\",\n    \"confidence\": 0.9,\n    \"source\": \"llm\"\n  },\n  \"__llm_button_reasoning\": {\n    \"primary\": {\n      \"index\": 0,\n      \"text\": \"Get started for free\",\n      \"reasoning\": \"Button #0 has a vibrant, dark background color (#000000) with action-oriented text 'Get started for free', making it the primary CTA.\"\n    },\n    \"secondary\": {\n      \"index\": 2,\n      \"text\": \"Read the docs\",\n      \"reasoning\": \"Button #1 has a transparent background with a border, making it a suitable secondary CTA with the text 'Read the docs'.\"\n    },\n    \"confidence\": 0.95\n  },\n  \"personality\": {\n    \"tone\": \"modern\",\n    \"energy\": \"medium\",\n    \"targetAudience\": \"developers\"\n  },\n  \"designSystem\": {\n    \"framework\": \"tailwind\",\n    \"componentLibrary\": \"\"\n  },\n  \"confidence\": {\n    \"buttons\": 0.95,\n    \"colors\": 0.9,\n    \"overall\": 0.925\n  },\n  \"__llm_metadata\": {\n    \"logoSelection\": {\n      \"llmCalled\": true,\n      \"llmSucceeded\": true,\n      \"finalSource\": \"llm\",\n      \"rawLogoSelection\": {\n        \"selectedLogoIndex\": 1,\n        \"selectedLogoReasoning\": \"Selected #1 because it is in the header, links to the homepage, and matches the brand name 'Expo'.\",\n        \"confidence\": 0.9\n      }\n    },\n    \"buttonClassification\": {\n      \"llmCalled\": true,\n      \"llmSucceeded\": true\n    }\n  }\n}\n```\n"
}