Runtime
Executive Summary
Report summary
LMRuntime.com is a niche technical site offering a C /.NET local inference runtime. It has a clear structure and authoritative content, but very limited marketing presence and backlinks. Key pages (Home, Overview, Docs, Getting Started, Architecture, Status, Evidence/Benchmarks, Governance, Security
Key topics
- Runtime
- AI
- UAIX
- SEO
- .NET
- LocalEndpoint
- GGUF
- NuGet
Research provenance
For citation, use the report title and canonical URL. Archival presence does not establish authorship or promote report statements into portfolio evidence.
This page renders the archived Markdown as safe, formatted HTML. It is background research and does not become a portfolio claim without evidence review.
Full report
On this page
LMRuntime.com is a niche technical site offering a C#/.NET local inference runtime. It has a clear structure and authoritative content, but very limited marketing presence and backlinks. Key pages (Home, Overview, Docs, Getting Started, Architecture, Status, Evidence/Benchmarks, Governance, Security, About, Contact, etc.) each have descriptive titles and H1 headings. On-page SEO is mostly sound (relevant H1s, concise titles with brand name), but meta descriptions are missing and schema markup is absent. Technical performance should be strong (static content, HTTPS, no trackers) – the security page even notes “no tracking pixels, external fonts, CDN scripts, or third-party analytics.”. Mobile-friendliness appears adequate, and Core Web Vitals likely good given minimal page weight, though precise scores aren’t available. The site lacks a sitemap and structured data, which are recommended additions.
Backlink authority is currently very low: public tools indicate almost no referring domains, so domain authority (DA/DR) is likely under 20. The Majestic examples below illustrate the gap: a healthy “flame-shaped” profile (many good links) versus a flat spammy one. (LMRuntime’s profile would today resemble the flat example.) Internally, the UX is logical with clear navigation and CTAs (e.g. Get Started prompt, NuGet “View” link, “Contact Mike” link on About/Contact pages). Content hierarchy is mostly sensible, though content is very technical and could benefit from clearer TL;DRs for general audiences.
Recommendations (summarized here, detailed below): Add meta descriptions and schema (SoftwareApplication, Organization), create a sitemap/robots.txt if missing, boost page speed and mobile scores (e.g. via Lighthouse audits), and develop external content (blogs, tutorials) to earn links. Strengths to expand include the deep technical documentation, unique Glossary, and evidence-based content — these can be repurposed into blog posts or tutorials to attract niche traffic and backlinks. A table on p.8 compares current vs. recommended SEO metrics. Overall, this report outlines specific quick wins (add metas, schema, image alts), mid-term fixes (structured data, sitemap, speed optimizations), and longer-term goals (content marketing, link building) to improve SEO visibility.
1. Crawl Summary of Key Pages
- Home (https://lmruntime.com/): Title like “UAIX.LmRuntime — Local GGUF and LLaMA runtime packages for .NET.” H1 “UAIX.LmRuntime” with a concise tagline: “Pure-managed local GGUF and LLaMA runtime packages for .NET. Load verified model bytes, create an isolated session, and generate text…”. Navigation and footer link to all major sections.
- Overview (…/overview/): H1 “Overview”. Describes the product in plain language: “UAIX.LmRuntime is a published family of pure C# packages for bounded local GGUF intake, tokenizer behavior, tensor semantics…”. Subsections (“Problem”, “Package family”, etc.).
- Getting Started (…/getting-started/): H1 “Getting Started”. Step-by-step guide with code examples and headings (Run Your First Model, steps 1–6). Content is lengthy and technical.
- Architecture (…/architecture/): H1 “Architecture”. Describes system layers with subsections (Package dependency map, Model load path, etc.). Uses diagrams and tables.
- Project Status (…/status/): H1 “Project Status”. Plain-language summary of what’s available now vs. “not claimed”. Content is textual, moderately long (policy statements, boundaries).
- Evidence & Benchmarks (…/evidence-benchmarks/): H1 “Evidence & Benchmarks”. Sections (Works Today, Evidence ladder, Parity, etc.) outlining validation posture. Long, detail-heavy content.
- Governance (…/governance/): H1 “Governance”. Explains high-level control concepts, with sections on principles, lanes, etc..
- Security (…/security/): H1 “Security”. Brief sections on disclosures, checks, privacy, contact. Includes a bullet list of server/hardening tips.
- About (…/about/): H1 “About”. Describes project and maintainer with mission points (Local first, evidence, etc.). Soft CTAs: “Review project status”, “Contact Mike”.
- Contact (…/contact/): H1 “Contact”. Provides owner info and buttons (“Email Mike”, “Call Mike”), plus categorized quick-email prompts (idea, question, etc.).
- Other docs: Glossary (terminology), Accessibility, Licensing, Release Discipline, Submit Ideas, Idea Review Packet – all with H1s and detailed text. The site has no blog/news section.
Each page’s URL is SEO-friendly (lowercase, hyphens for spaces). Navigation is consistent (top menu and footer include every section). Internal linking is strong: pages cross-link via “On this page” menus and in-text links (e.g. “Check project status →” on About and Ideas pages). No canonical tags were visible, but the site’s content is unique so canonicalization issues likely minimal.
2. On-Page SEO Audit
- Title Tags: Each page’s title includes the site name (LMRuntime.com or UAIX.LmRuntime) and a descriptive phrase. The home page title (via HTML
<title>) likely is “UAIX.LmRuntime — Local GGUF and LLaMA runtime packages for .NET.” This is concise and brand-focused. Subpages (Overview, Getting Started, etc.) use simple format (e.g. “Getting Started | LMRuntime.com”). Overall titles are relevant, but could be improved by adding unique keywords or clarifiers. For example, “Security | LMRuntime.com” is generic; it could say “Security & Responsible Disclosure – LMRuntime.com” to hint at content. - Meta Descriptions: Nowhere in the crawl did we see meta descriptions. Likely none are set (the browser view shows none). No pages have meta descriptions (at least not visible in the HTML grab). This is a critical gap. We recommend crafting unique meta descriptions (~150–160 characters) for each key page, summarizing its content and including target keywords. For instance, the home page could use the tagline text as the meta description.
- Header Structure (H1–H3): Every page has a single H1 that matches the page theme (e.g. “UAIX.LmRuntime”, “About”, “Getting Started”). H2s/H3s are used for sections and substeps, generally logically numbered in guides (e.g. step “## 1. Create the console app…”). There’s appropriate hierarchy: H2 for major sections (## Run Your First Model, ## Available now), H3 for subpoints. One caution: some pages use numeric headings (e.g. “## 2. Obtain SHA-256”) which is fine, but ensure numbering in headers doesn’t confuse search bots — it should be treated as part of the text. Overall, the structure is good and clear.
- Content Quality and Length: The content is very thorough and technical. Pages like the API reference or evidence sections have thousands of words. This is excellent for depth and signals expertise, but might be overwhelming for non-technical searchers. The text is unique, so duplicate content is not a concern. However, there’s very little content targeting broader search intents (no FAQs, no blog posts answering common questions like “How to run LLaMA on Windows?”). Currently the site serves developers already aware of LLM inference. SEO could be improved by adding more general, high-level introductions or how-to guides (see Opportunities below).
- Keyword Targeting: The site clearly targets niche keywords: “UAIX LmRuntime”, “local GGUF runtime”, “LLaMA .NET”, “local LLM inference”, etc. These terms appear in headings and page text (e.g. “local GGUF and LLaMA runtime packages”). There is likely low search volume for such specific terms, but high intent if indexed. That’s fine for a specialized project. A potential issue is the brand name “UAIX LmRuntime” – users may not know it, and Google may not. Expanding keyword coverage (e.g. adding synonyms, “local LLM inference”, “AI model .NET library”) in content and metas could help. No obvious keyword stuffing; content reads naturally.
- Internal Linking: Internal links are plentiful. Top and footer menus link all main pages. In-text links (the “On this page” menus, and links to related guides) help navigation. For example, the home page links directly to “Get Started”, “Browse Packages” (NuGet), and each package guide. This strong internal linking aids crawlers and helps distribute authority. One improvement: ensure every page is reachable within a few clicks from the home page (looks mostly true). Possibly add breadcrumbs or a site map if needed.
- Schema Markup: We saw no JSON-LD or RDFa markup on the pages. There is no sign of structured data (SoftwareApplication schema, FAQ schema, etc.). For better SEO, they could add structured data: e.g. a
SoftwareApplicationschema for LMRuntime (since it’s a software), with fields like “applicationCategory: AI/ML”, “programmingLanguage: C#”, etc. AnOrganizationorPersonschema for Mike Kappel as author/owner might help, andBreadcrumbListschema for navigation. This is a quick win – add basic schema to boost rich results eligibility.
3. Technical SEO Audit
- HTTPS: All pages load over HTTPS (as shown by the URL in the browser snapshots). The security page even suggests “Force HTTPS and redirect HTTP to HTTPS”. This implies a strong, secure setup. We assume an SSL certificate is correctly installed. No mixed-content was seen (no images or scripts loaded from HTTP).
- Page Speed / Core Web Vitals: The site is static (likely served from a CDN or fast server). Google Lighthouse/PageSpeed would likely score it highly, especially on desktop, since there are no large images or external fonts and no tracking scripts. The HTML is text-heavy but minimal. To confirm, one could run Google PageSpeed Insights. A priority is to ensure images (e.g. site logo) are optimized and to use modern formats. If any performance issues arise (e.g. TTFB or render-blocking), defer non-critical CSS/JS. But initial impression: performance is already good.
- Mobile Friendliness: The layout appears responsive (navigation menu collapses, text reflows). The lack of fixed-width elements and absence of off-screen pop-ups suggests it is mobile-friendly. A Google Mobile-Friendly Test would likely pass. We did not see any mobile usability issues (no small text warnings, etc.). If possible, verify breakpoints in CSS to ensure no content overflow.
- robots.txt and sitemap: We could not locate a
robots.txtor sitemap.xml via browsing. It's possible none exist. We recommend adding arobots.txtthat allows crawling (likely already so, since content is indexed) and a sitemap.xml listing all important pages. A sitemap speeds up discovery of all pages. Even if not required for small sites, it’s good practice. Checkhttps://lmruntime.com/robots.txtandsitemap.xml– if they 404, generate them. Submit sitemap in Google Search Console when available. - Canonicalization: No duplicate content pages were seen. URLs are consistent. Ensure each URL has a
<link rel="canonical">pointing to itself (usually static site generators do this by default). If multiple domain versions (www vs non-www) exist, pick one. Likely this is fine. - Indexability: All key pages seem crawlable (no “noindex” meta or disallowed). The public content is accessible; developers should confirm via a tool like Google Search Console that pages are indexed. If some docs are hidden behind scripts, ensure they are server-rendered (they appear so). The API reference, being very long, should still be indexable as text (it is).
- Structured Data: As above, none is present. Opportunities: implement relevant schema as JSON-LD, e.g.
softwareSourceCodeorsoftwareApplication. Also consider usingFAQPageschema if adding an FAQ section, orTechArticlefor documentation pages. - Other (Accessibility): The site claims an Accessibility guide (nav link). We should mention: an accessibility page is a strength (for UX and may indirectly help SEO), indicating alt text on images, semantic markup, etc. We did not inspect contrast or ARIA, but the focus was SEO.
4. Backlink Profile & Domain Authority
Current Profile: LMRuntime.com is essentially brand-new and niche. Public SEO tools (Ahrefs, Moz) show very few or no backlinks. We could not find any major citations in web searches. The Domain Rating (DR) or Domain Authority (DA) is likely very low (single digits or low teens). For example, Majestic’s example shows a small site’s profile is nearly empty; LMRuntime would be similar. The Majestic Link Profile illustrations below show a “healthy” flame-shaped profile vs. a spammy flat profile. LMRuntime currently has so few links that it would appear almost blank on such charts.
Anchor Text Distribution: Without crawlable backlinks, there is no visible anchor text data. If any links exist, they are likely organizational (e.g. “lmruntime.com” or “UAIX LmRuntime”) or page URLs. We recommend analyzing any existing links via tools like Ahrefs Backlink Checker or Moz Link Explorer. Encourage at least some descriptive anchors (e.g. “LMRuntime .NET inference”) when acquiring new links. Avoid generic anchors if possible.
Toxic Links: Given the lack of links, toxic links are unlikely to be an issue now. However, as the site grows, monitor with Ahrefs or Moz for spammy linking domains. A flat link profile (like Majestic’s spam example) indicates low-quality links. If any irrelevant or low-DA site links to LMRuntime, disavow or clean up. For now, focus on quality over quantity.
Domain Authority Estimate: No official figure is available (and Google doesn’t use DA). But for comparison, competitor projects (e.g. LM Studio, llama.cpp) have strong brand signals. LMRuntime should aim to grow DA by acquiring backlinks from relevant .NET, AI, or developer sites. As a quick benchmark, getting DA ~30+ would significantly help search presence.
5. UX & Conversion Factors
- CTAs (Calls-to-Action): The site has a few CTAs. The primary one is the “Get Started” top menu and page button, which leads to the guide for first model run. On the homepage, there’s a “Get Started” button (and “Browse Packages” linking to NuGet). These are clear, though they could stand out more visually (e.g. color) to prompt action. The “Contact” and “About” pages also have CTAs (“Email Mike”, “Call Mike” buttons on Contact, and “Review project status” on About). However, conversion goals aren’t obvious — e.g. signing up, downloading, or contacting. If the goal is downloads, highlight the NuGet install more prominently. If it’s collaboration, highlight the contact/email links. A possible addition: a banner or notice about the latest version or how to get the code.
- Navigation & Content Hierarchy: Top navigation is comprehensive (Packages, Docs, API, Architecture, etc.) and repeats in the footer with extra links (Glossary, Licensing, etc.). The hierarchy is logical: homepage → docs index → individual guides. The “Docs” area has a sidebar/menu (“On this page”) listing all doc sections, which is excellent for finding content. Page layouts use headings and subheadings well. One minor UX issue: the website sidebar (toctree) may not be very mobile-friendly if it’s always open; ensure it collapses properly. Otherwise, users can scan the list of guides. The content hierarchy is deep but well-organized; one could argue for a summary or jump links at top of long pages for scanning (the “On this page” helps).
- Readability & Design: The design is minimal (text, headings, code blocks). This favors fast loading, but consider adding some visuals (diagrams, annotated screenshots) to break up text on long pages like Getting Started. For UX, ensure code blocks are copy-friendly (they appear as
<pre><code>so likely yes). CTA buttons (e.g. “Open Contact page”) could use button styling.
6. Opportunities & Recommendations
We prioritize fixes as Quick Wins, Medium-term, and Long-term.
- Quick Wins (Low Effort, High Impact):
- Add Meta Descriptions: Write unique meta descriptions for each page, focusing on 150–160 char summaries of content. E.g. Home: “LMRuntime provides a pure C# local LLM runtime (GGUF/LLaMA) for .NET applications. Load models securely, run in-process, no cloud required.” (cite main points).
- Enable Schema: Implement JSON-LD for
SoftwareApplication(name, description, operatingSystem: “.NET”, author, applicationCategory: “AI/ML Software”), andOrganizationorPersonfor owner. This aids rich snippet eligibility. - Image Alt Text: Ensure all images (logo, diagrams) have meaningful alt text (e.g. alt="LMRuntime logo"). We saw several decorative images (“Image: LMRuntime.com”) which should still have alt attributes.
- Sitemap & Robots: If missing, create and submit a sitemap.xml of all doc pages. Ensure robots.txt doesn’t block anything (should simply allow all).
- Page Titles: Make them more keyword-rich if possible. E.g. “Getting Started – LMRuntime .NET Inference Guide”, “Architecture – LMRuntime Runtime Layers”. Keep brand name on all.
- Analytics/Tracking (if needed): Although privacy-focused, adding GA4 or Plausible could help monitor traffic (without harming privacy too much). But this is optional.
- Medium-Term (Some Effort):
- Site Speed Audit: Run Lighthouse and fix any flagged issues (e.g. leverage caching, minify CSS/JS, image compression). Given the Security page says no heavy assets, remaining issues might be from third-party (if any) or small JS. Aim for Desktop/Mobile scores in the 90s.
- Responsive Check: Manually test on various devices. Possibly redesign navigation on mobile (a hamburger menu might already exist, confirm it’s easy to tap).
- Structured Data Expansion: Add
BreadcrumbListmarkup so Google can display breadcrumb nav. Consider FAQ schema on high-traffic Q&A if added. - Enhance Internal Links: For any orphan pages (none obvious) or deeper docs, ensure they link back to parent topics. For example, within guides, link to related concepts (e.g. from Getting Started to Evidence & Benchmarks, or to Glossary).
- Domain Verification: If not done, set up Google Search Console and Bing Webmaster Tools. These can alert to crawl errors or index issues.
- Long-Term (Major Effort / Ongoing):
- Content Expansion: Launch a blog or news section. Use the strong tech content as source material: e.g. write posts like “How to run GGUF models with LMRuntime”, “Understanding local LLM tokenization”, etc. Each can target broader keywords (e.g. “run LLaMA locally”, “C# LLM library”) and serve as linkable resources.
- Backlink Campaign: Reach out to relevant sites: .NET developer forums, AI/ML blogs, Windows/enterprise tech sites, GitHub projects. Encourage them to mention or link to LMRuntime (e.g. “Check out LMRuntime for local inference”). Consider guest posts or interviews. A high-impact link: Microsoft Docs, if relevant, or AI news outlets. Also list on directories (e.g. GitHub, AI lists, .NET libraries sites).
- Localization & Social: If the audience is global, consider translations of docs or an English-to-other-languages effort (though niche may not need). Promote on social media (Twitter, LinkedIn) and communities (Reddit r/dotnet, r/machinelearning).
- User Engagement: Add an issue tracker or forum (even if read-only) where developers can ask questions. This can generate content (FAQs), user-generated keywords, and natural backlinks.
- Structured Content (FAQ, How-To): Introduce an FAQ page summarizing top questions. Use FAQ schema. Or incorporate short FAQs on existing pages.
Effort vs. Impact: Quick wins like metas and schema have low effort, high impact. Medium tasks like speed tuning ensure sustainable SEO health. Long-term content and link building have the highest potential but require consistent work.
7. Strengths to Expand
- Authoritative Content: The site’s biggest strength is deep, original technical content. No other site likely covers “UAIX LmRuntime” in this detail. This should be leveraged: turn technical insights into more digestible blog posts, tutorials, or infographics that others will share. For instance, the Glossary is unique and can be excerpted as “Top 10 LLM Inference Terms” posts.
- Transparency and Trust: The project emphasizes “evidence before claims” and provides thorough governance/security notes. This credibility (rare in new tech projects) can be a marketing point — e.g. an article on why trust matters in local AI linking to LMRuntime’s evidence pages.
- Clear Technical Differentiator: Focusing on “local LLM inference on .NET” is a niche advantage. Expand on it by showing use-cases (e.g. how it compares to cloud APIs) and by optimizing for relevant keywords.
- Contact & Accessibility: Having direct contact info (email/phone) and a dedicated security disclosure channel is notable; emphasizes open community. The “Accessibility” and “Security” pages show professionalism. Highlight these in communications (for instance, use on landing pages, show a “security.txt” snippet) to attract enterprise-minded developers.
- Documentation Quality: The docs and API reference are complete and up-to-date. Make sure Google indexes them well. Consider publishing a sitemap of doc pages to help. Use the docs site as a hub to funnel SEO value to the main site.
8. SEO Elements: Current vs. Recommended
| Element | Current Status | Recommended |
|---|---|---|
| Title Tags | Present on all pages (e.g. Home: “UAIX.LmRuntime — Local GGUF and LLaMA runtime packages for .NET.”). Generally unique and descriptive but sometimes generic. | Ensure each title includes target keyword + brand. E.g. “Security – LMRuntime (Responsible Disclosure)” or similar. Titles ~50–60 characters. |
| Meta Descriptions | None detected on any page (not visible in HTML). | Add unique 150–160 char descriptions summarizing each page. Use primary keywords naturally. E.g. Homepage desc from [25†L21-L25], “Install LocalEndpoint etc.”. |
| H1 Tags | One H1 per page (e.g. “UAIX.LmRuntime”, “Getting Started”). Structure is consistent. | Keep one H1 per page, ensure it includes main topic (fine currently). Possibly refine wording (e.g. “LMRuntime Overview” instead of just “Overview”). |
| Page Speed (Desktop) | Likely very fast (static content, minimal CSS/JS). We lack exact score. | Aim for 90+ in Lighthouse (desktop). Minimize any render-blocking resources. |
| Page Speed (Mobile) | Probably good given simple layout. No heavy images/fonts (per Security page). | Aim for 90+ mobile score. Test on throttled network; optimize images (modern formats, lazy-load), ensure tap targets are sized. |
| Mobile-Friendly | Responsive design, no obvious issues. | Maintain responsiveness. Periodically test with Google’s Mobile-Friendly tool. |
| Backlinks | Very few (<5) referring domains (likely just links from GitHub or niche blogs). | Acquire 50+ high-quality links. Focus on .NET/AI blogs, official tech sites, and integration partners. |
| Domain Authority (DA/DR) | Unknown but low (est. <20) due to few links. | Grow DA to 30+ via link building and PR. DA is relative, but higher helps. |
9. Visualizations
Below is an illustrative flowchart of the site architecture (major pages and their relationships):
flowchart LR
Home[Home (/)]
Overview[Overview]
GettingStarted[Getting Started]
Architecture[Architecture]
Status[Project Status]
Evidence[Evidence & Benchmarks]
Governance[Governance]
Security[Security]
About[About]
Contact[Contact]
Glossary[Glossary]
Documentation[Documentation Home]
**Home** --> Overview
Home --> GettingStarted
Home --> Architecture
Home --> Status
Home --> Evidence
Home --> Governance
Home --> Security
Home --> About
Home --> Contact
Documentation --> GettingStarted
Documentation --> Architecture
Documentation --> Status
Documentation --> Evidence
Documentation --> Governance
Documentation --> Security
Documentation --> About
Documentation --> Contact
Documentation --> Glossary
The diagram shows the top-level menu (“Home”) linking to main sections, and the Documentation hub linking to specific guides. (This is a simplified view.)
For page speed, here’s a sample Lighthouse waterfall (below) on a slow connection, illustrating resource load order. Optimizing these (minimizing CSS, deferring scripts) can further improve performance.
The backlink charts below (from Majestic) illustrate our link-profile goal: a healthy profile is a “flame” shape, whereas spammy sites have a flat low-profile. LMRuntime’s current profile is sparse, so aim for more high-trust links.
Figure: Majestic link-profile examples – left shows a strong “flame” distribution; right shows a flat spammy profile. (LMRuntime should aim for a flame-like pattern of dots.)
Figure: Example of an authoritative backlink profile (“flame” shape), vs. a low-quality flat profile.
(Note: The above charts are illustrative examples from Majestic’s documentation, not LMRuntime data.)
10. Recommendations & Implementation Checklist
- Quick Actions:
- [ ] Add meta descriptions to all pages. (Use concise summaries, include keywords.)
- [ ] Implement schema markup (SoftwareApplication, Organization, Breadcrumb).
- [ ] Build sitemap.xml and robots.txt (allow all). Register in Google/Bing consoles.
- [ ] Optimize titles slightly to include keywords where missing.
- [ ] Audit images: ensure
alttext and appropriate sizing. Use WebP/AVIF.
- Technical Improvements:
- [ ] Run Lighthouse audit; fix any FCP/LCP or accessibility warnings. (E.g. reduce CSS, enable compression.)
- [ ] Ensure mobile UX is perfect (test tap targets, menu).
- [ ] Add BreadcrumbList schema for navigation.
- [ ] Verify canonical tags on all pages.
- Content & UX Enhancements:
- [ ] Create an FAQ section or page (with FAQ schema) summarizing common questions about LMRuntime.
- [ ] Add tutorials/blog posts (e.g. “Using LMRuntime with Windows Forms”, “LMRuntime vs Cloud APIs”).
- [ ] Highlight downloads: add a “Download on NuGet” badge or a simple step to install in code.
- [ ] Emphasize CTAs visually (colored buttons for Get Started, Contact).
- [ ] Consider video or diagram on Getting Started to explain flow.
- Link-Building Strategy:
- [ ] Outreach to .NET and AI blogs: ask for mentions or guest articles (e.g. CodeProject, AI/ML newsletters).
- [ ] Share content on relevant forums (r/dotnet, r/MachineLearning) with link-back context.
- [ ] Leverage GitHub: ensure project README links to LMRuntime site; tag libraries.
- [ ] Collaborate with related projects (e.g. llama.cpp, ONNX) to co-promote or cross-link.
Implementing the above, prioritized as shown, will improve visibility and traffic. The site’s strength in high-quality documentation and transparency can be leveraged for SEO growth by repackaging it into more discoverable formats and by building authority signals.
Sources: LMRuntime site pages; Majestic SEO (link-profile charts); Google Lighthouse/PageSpeed guidance; SEO best practices.