1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <link rel="icon" type="image/svg+xml" href="/dds_icon_color.svg" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 8 <meta name="theme-color" content="#3a3a38" /> 9 10 <!-- 11 EVERYTHING BETWEEN THE SEO MARKERS IS REPLACED PER ROUTE AT BUILD TIME by 12 frontend/scripts/prerender.mjs, which writes one static HTML file per 13 public route using the table in src/config/seo.ts. The markers are matched 14 literally and the build FAILS if either goes missing, so do not reword, 15 reindent or reformat these two comment lines. 16 17 What is between them is the fallback, and it still matters: it is what the 18 dev server serves, what the app build (VITE_MARKETING_ONLY unset, no 19 prerender) serves, and what nginx serves for any URL that has no 20 prerendered file of its own. 21 --> 22 <!-- SEO:START --> 23 <title>Dive Down Sports â fantasy projections, adjusted to your league</title> 24 <meta 25 name="description" 26 content="Fantasy football projections designed by analysts and sharpened by machine learning â every number adjusted to your league's scoring." 27 /> 28 29 <!-- 30 Social preview. Without these a shared link previewed as bare text. 31 32 og:image MUST be absolute â Facebook, X and LinkedIn will not resolve a 33 relative path. It is hardcoded to divedown.ai because that is the public 34 domain today and the only host whose links get shared; the app build 35 serves the same file and simply points at the same image, which is 36 correct rather than merely harmless. 37 38 og:url and <link rel="canonical"> are deliberately ABSENT *here*. Setting 39 either globally would canonicalise every shared deep link to whatever it 40 named â and /report-card is a public, shareable page, so a global og:url 41 would collapse every shared report card onto the homepage. With neither, 42 the scraper uses the URL actually shared, which is the behaviour we want. 43 44 The prerendered per-route files DO carry both, because there the value is 45 genuinely per-route and correct. That is the whole reason it is safe there 46 and not here â do not "fix the inconsistency" by hoisting one up. 47 48 The copy here is bound by docs/marketing/COPY_RULES.md: no price (billing 49 is seasonal and "$6/month" is wrong in every month but January), no 50 betting language, and no feature that has not shipped. 51 --> 52 <meta property="og:type" content="website" /> 53 <meta property="og:site_name" content="Dive Down Sports" /> 54 <meta property="og:title" content="Fantasy projections built by football people, sharpened by machine learning." /> 55 <meta 56 property="og:description" 57 content="Rankings, draft tools and DFS lineups â every number adjusted to your league's scoring." 58 /> 59 <meta property="og:image" content="https://divedown.ai/og-image.png" /> 60 <meta property="og:image:width" content="1200" /> 61 <meta property="og:image:height" content="630" /> 62 <meta property="og:image:alt" content="Dive Down Sports â fantasy projections built by football people, sharpened by machine learning." /> 63 64 <meta name="twitter:card" content="summary_large_image" /> 65 <meta name="twitter:title" content="Fantasy projections built by football people, sharpened by machine learning." /> 66 <meta 67 name="twitter:description" 68 content="Rankings, draft tools and DFS lineups â every number adjusted to your league's scoring." 69 /> 70 <meta name="twitter:image" content="https://divedown.ai/og-image.png" /> 71 <!-- SEO:END --> 72
72<script type="module" crossorigin src="/assets/index-1e2ecc51.js"></script>
72 73 <link rel="stylesheet" href="/assets/index-a4000f4e.css"> 74 </head> 75 <body> 76 <div id="root"></div> 77 78 </body> 79</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.