Owner tools
For the owner of FinnixPro (www.finnixpro.com).
Ownership
This launch is unclaimed.
Claim this launch to get an owner link, re-scan after fixes, track your score improvements, or remove your site from StackScope entirely.
Start here
Two fast-win fixes from the list below, ordered by impact. Each is a drop-in change you can finish in under 30 minutes.
- Add a sitemap.xml
-
Add a canonical link
No
<link rel="canonical">was detected on your page.
2 more score-affecting fixes below, plus advisory items.
Fixes that improve your score
Security
- HIGHAdd the missing security response headersMissing: Content-Security-PolicyWhyEach header limits a class of browser-side attack: clickjacking, XSS, MIME sniffing, plaintext fallback. Missing headers leave default-permissive behaviour in place.WhereMost are one line each in your server config, reverse proxy, CDN, or framework headers.
Discoverability
- MEDIUMAdd a sitemap.xmlWhyHelps search engines discover all your pages, including deep-linked ones not in the navigation. Without one, only pages reachable via crawl-from-homepage get found.WhereGenerate
/sitemap.xmland reference it fromrobots.txtwith aSitemap:line. Frameworks usually generate it (Next.jsapp/sitemap.ts, Astro@astrojs/sitemap).
Page basics & SEO
- MEDIUMAdd a canonical linkNo
<link rel="canonical">was detected on your page.WhyTells search engines which URL is the canonical version when the same content is reachable via multiple paths (with/without trailing slash, query strings, www vs apex).WhereAdd<link rel="canonical" href="https://your-domain.com/this-page">to each page's<head>. - MEDIUMUse HTML5 semantic elementsPage uses mostly generic
<div>s with no semantic landmarks detected.WhyScreen-reader users can't reliably skip past navigation to your primary content. Search engines also use these to identify which part of the page is the actual content for snippet generation.WhereReplace outermost<div>s with<nav>,<main>,<article>,<section>,<header>,<footer>where the structure fits.
Starter Content-Security-Policy
We didn't see a Content-Security-Policy header on your site.
Here's a starter policy built from the 1
third-party
vendor we detected
(posthog).
Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self' 'unsafe-inline' https://app.posthog.com https://eu.posthog.com; connect-src 'self' https://app.posthog.com https://eu.posthog.com; frame-ancestors 'none'; base-uri 'self'; form-action 'self';
Content-Security-Policy-Report-Only first (as shown above),
walk through your site with DevTools Console open, and relax the policy until no CSP
violations fire. Only then rename the header to Content-Security-Policy to
enforce.
We probably don't cover everything. Vendors that only load behind auth, self-hosted scripts, custom analytics, and anything we haven't fingerprinted yet won't appear here. Inline scripts work because we've included
'unsafe-inline'; you
can tighten that later with nonces once the basic policy is stable. The Report-Only
walkthrough will flag anything we missed. That's the whole point of starting there.
Optional improvements
These don't change your StackScope score but cover SEO, agent-readiness, security-researcher discoverability, and compliance items worth addressing.
Security
- LOWAdd /.well-known/security.txtWhyLets security researchers report vulnerabilities responsibly through a published contact channel.WhereCreate
/.well-known/security.txtwith aContact:email andExpires:date.
Legal & compliance
- HIGHAdd a cookie-consent bannerAnalytics detected on this site without a consent manager.WhyUK/EU GDPR requires opt-in before analytics scripts fire; about half of US state privacy laws now require honouring the Global Privacy Control browser signal as a universal opt-out.WhereDrop in Cookiebot, Usercentrics, Osano, or Iubenda Consent, or hand-roll a banner plus Google's
Consent Mode v2.
Email security
- MEDIUMMove DMARC from p=none to quarantine or rejectDMARC policy is
p=none(monitoring only).Whyp=none lets receivers log failures but still deliver spoofed mail. Real protection only kicks in at quarantine or reject.WhereAfter reviewing a few weeks ofrua=reports and confirming your real senders pass, change top=quarantine(sends spoofs to spam) and thenp=reject(blocks them outright). - MEDIUMConfigure DKIM with your email providerNo DKIM record found at the common selectors we check.WhyDKIM signs your outbound mail with a cryptographic key receivers can verify. Without it, receivers can't tell your real mail from a spoof.WhereAsk your email provider for their DKIM setup. It's usually one TXT record at
{selector}._domainkey.{your-domain}. - LOWAdd MTA-STSNo MTA-STS DNS record published.WhyPrevents mail to your domain being downgraded to plaintext mid-flight by a network attacker. Most launches don't have this, so deploying it puts you a tier above generic email-security checks.WherePublish a TXT record at
_mta-sts.{your-domain}plus a policy file athttps://mta-sts.{your-domain}/.well-known/mta-sts.txt. - LOWAdd a TLS-RPT recordNo TLS-RPT record at
_smtp._tls.{domain}.WhyReceivers can tell you when STARTTLS handshakes to your mail server fail. Without it, silent TLS failures are invisible.WherePublish one TXT record at_smtp._tls.{your-domain}likev=TLSRPTv1; rua=mailto:[email protected].
Agent / AI
- LOWAdd an llms.txt fileWhyHelps AI models understand your site's content and how to use it. Not yet a standard but gaining adoption.WhereCreate
/llms.txtat the site root with a brief overview and key URLs. - LOWDeclare a Content-Signal in robots.txtWhyStates how you'd like AI systems to use your content (training, search, agent input). Without it, AI crawlers fall back to whatever default policy each vendor applies.WhereAdd a
Content-Signal:line to yourrobots.txt. - LOWAdd Link response headersWhyLets agents discover your sitemap, privacy policy, and docs without parsing HTML, which most lightweight agents skip.WhereSet
Link:response headers in your server config or framework middleware.
If a tip looks wrong (for example it says "add a consent banner" and you already have one) the detection's the bug, not you. StackScope sees what's public from the outside: HTTP response, rendered HTML, cookies, and DNS. We can miss vendors that load behind consent, are self-hosted, or use an install shape we haven't fingerprinted yet. Email [email protected] and we'll look into it.
Copy into Cursor, Claude, or ChatGPT
This prompt includes the detected stack and only the fixes StackScope found. It asks the AI to make concrete file-level changes, not a vague website review.
Score-affecting basics only. Ask your AI to handle these first; come back for the optional hardening once they're done.
Everything: score-affecting fixes plus optional email security, agent metadata, and best-practice items. Longer prompt, more for an "all in one" agent run.
Using an autonomous agent?
Point the agent at this SKILL.md URL and ask it to follow the skill. The framing stops agents defaulting to an open-ended page review.
https://stackscope.dev/launch/6jqzps67/skill.md
Share your score
Your score card renders automatically when you share the link.
Or embed a badge
Two badge options. Pick whichever fits your story.
Current score
Shows the latest score and updates within a few minutes of any recrawl. Best for ongoing display: if you fix something and recrawl, the badge reflects the new score automatically.
<a href="https://stackscope.dev/launch/6jqzps67/finnixpro"><img src="https://stackscope.dev/badge/6jqzps67/current.svg" alt="StackScope score for FinnixPro" height="24" /></a>
Launch score
Pinned to your launch-day snapshot and never changes. Marked with a small gold corner ribbon. Best for press kits, launch retrospectives, or anywhere you want a permanent record of how you shipped.
<a href="https://stackscope.dev/launch/6jqzps67/finnixpro"><img src="https://stackscope.dev/badge/6jqzps67.svg" alt="StackScope launch score for FinnixPro" height="24" /></a>
Using a Content-Security-Policy?
Both badges are <img> tags from our domain, so your CSP needs to allow them.
Add stackscope.dev to your img-src directive
(example: img-src 'self' stackscope.dev;). Without it, browsers silently
block the badge and visitors see a broken image.