<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Adam McClarin</title>
    <description>The latest articles on DEV Community by Adam McClarin (@meraki6966).</description>
    <link>https://dev.to/meraki6966</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3920587%2Fb3dfc6b8-9e8d-4de2-bfd8-d2cdbf4f7d49.png</url>
      <title>DEV Community: Adam McClarin</title>
      <link>https://dev.to/meraki6966</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/meraki6966"/>
    <language>en</language>
    <item>
      <title>I Will Adopt New AI Tools When They Fit My Work. Fable 5 Is Not That Moment.</title>
      <dc:creator>Adam McClarin</dc:creator>
      <pubDate>Thu, 11 Jun 2026 15:25:34 +0000</pubDate>
      <link>https://dev.to/meraki6966/i-will-adopt-new-ai-tools-when-they-fit-my-work-fable-5-is-not-that-moment-571c</link>
      <guid>https://dev.to/meraki6966/i-will-adopt-new-ai-tools-when-they-fit-my-work-fable-5-is-not-that-moment-571c</guid>
      <description>&lt;p&gt;I watched Fable 5 launch on June 9. The numbers are real. The hype is loud. Everyone on social is reshuffling their AI stack, and I get the appeal. A new frontier capability with cyber safeguards that the rest of the industry is still years away from? That moves people.&lt;br&gt;
But I am not switching anything. Not yet. Maybe not ever, depending on what VeloxSync and the bigger scope projects actually need.&lt;br&gt;
Here is the thing about adopting new tools: the adoption is not the hard part. Integration is. When you run a production stack like mine, you do not pivot because something has a headline. You pivot because the work demands it and because you can measure the delta.&lt;br&gt;
Right now, my stack works. Claude for reasoning and building. Gemini for deep research. Together.ai for fine-tuned inference on Ei-Core. A handful of platforms that have earned their place through real projects, not visibility. VeloxSync runs on this. The Canopy Guard audit tool runs on this. Nail Check runs on this. Each tool has a job. Each job is done.&lt;br&gt;
Fable 5's cyber capability is gated anyway. The public version has safeguards. The version that actually finds zero-days and writes autonomous exploits, Mythos 5, requires verification I do not yet have. So what am I adopting? A model with the same reasoning ability as Sonnet with guardrails in front? Claude already does that. The thing that would make Fable 5 worth restructuring my workflow around, Mythos access, is not available to me and may not be for months.&lt;br&gt;
That is the actual picture people miss. They see the headline, they see the capability numbers, and they assume they need it now. But adoption without a real reason to adopt is technical debt. It is a new integration surface. It is refactoring prompts that already work. It is retraining context windows. It is slower.&lt;br&gt;
I will watch it. If VeloxSync reaches a point where the cyber reasoning matters more than Claude's reasoning does, if the education build requires a model that can hold multiple constraint sets at once better than it does now, if a major project lands that makes Mythos access necessary, then I will move. But I will know why I am moving. Not because everyone else did.&lt;br&gt;
The bandwidth to keep tools sharp is real. The temptation to chase every new capability is real. The difference between a working stack and a broken one is the discipline to say no until the work asks you to say yes.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mythos</category>
      <category>claude</category>
      <category>webdev</category>
    </item>
    <item>
      <title>80% of Anthropic's Production Code Is Now Written by Claude. Here Is What That Actually Means for Engineers.</title>
      <dc:creator>Adam McClarin</dc:creator>
      <pubDate>Sat, 06 Jun 2026 14:42:36 +0000</pubDate>
      <link>https://dev.to/meraki6966/80-of-anthropics-production-code-is-now-written-by-claude-here-is-what-that-actually-means-for-46l4</link>
      <guid>https://dev.to/meraki6966/80-of-anthropics-production-code-is-now-written-by-claude-here-is-what-that-actually-means-for-46l4</guid>
      <description>&lt;p&gt;Last week I shipped a full SaaS module without writing most of the code myself.&lt;br&gt;
Not a prototype. Not a one-off script. A production feature for VeloxSync: 10 database tables, 30-plus API endpoints, 12 frontend pages, Stripe billing integration, and 112 state academic standards mapped to AI-powered grade-band models. One extended Claude Code session, one engineer (me) directing and reviewing.&lt;br&gt;
That used to take weeks.&lt;br&gt;
This week, Anthropic published internal production data that explains why, and where this is heading. If you are building software professionally right now, the numbers in this report are worth looking at directly.&lt;/p&gt;

&lt;p&gt;What the data actually says&lt;br&gt;
This is not a benchmark report. Anthropic is publishing numbers from inside their own development process.&lt;/p&gt;

&lt;p&gt;80%+ of code merged to Anthropic's production codebase was authored by Claude as of May 2026&lt;br&gt;
8x increase in code merged per engineer per day compared to 2024&lt;br&gt;
Task horizon doubling every ~4 months: In March 2024, Claude reliably handled tasks that take humans about four minutes. By April 2026, that benchmark was 12-hour tasks.&lt;br&gt;
76% success rate on fully open-ended tasks in May 2026 (up 50 percentage points in six months)&lt;br&gt;
52x speedup on a code optimization benchmark by Claude Mythos Preview, vs. roughly 4x from a skilled human engineer in four to eight hours on the same task&lt;br&gt;
800+ fixes shipped by Claude in April 2026 in a single sweep; the engineer overseeing the work estimated a human would have taken four years&lt;/p&gt;

&lt;p&gt;These numbers are from the company's own production environment, not a controlled lab setting.&lt;/p&gt;

&lt;p&gt;The distinction you need to hold onto&lt;br&gt;
The report draws a line that I think is more useful than the usual "AI will take developer jobs" framing.&lt;br&gt;
The doing: Writing the code, running the experiment, generating the output.&lt;br&gt;
The directing: Deciding which problems matter. Choosing the approach. Judging whether a result is trustworthy. Knowing when to stop.&lt;br&gt;
The doing is already nearly free in human time.&lt;br&gt;
The directing is still human.&lt;br&gt;
Anthropic's internal analysis found that Claude can match or outperform skilled humans at executing a well-specified experiment. The remaining gap is in goal-setting: which experiments are worth running, when to trust an output, when to abandon a direction entirely.&lt;/p&gt;

&lt;p&gt;A real example from the report&lt;br&gt;
A routine upgrade started crashing tens of thousands of training jobs inside Anthropic. An engineer pointed Claude at the live incident with some text context and cluster access, minimal guidance beyond that.&lt;br&gt;
Working through running jobs and testing one environment setting at a time, Claude isolated a single obscure debugging flag that was triggering the crash, reproduced it reliably, and confirmed a fix.&lt;br&gt;
Time: about two hours.&lt;br&gt;
Equivalent human work: two to three days.&lt;br&gt;
The engineer still had to recognize this was the right kind of problem to hand off, set up the context correctly, and validate the fix. That judgment is not automated.&lt;/p&gt;

&lt;p&gt;The code quality question you are probably wondering about&lt;br&gt;
The report is honest here. Claude-written code was worse than human-written code at Anthropic in late 2025 in terms of readability and maintainability. Anthropic says it is roughly at parity today and expects it to be better within the year.&lt;br&gt;
They also deployed an automated Claude reviewer that runs on every proposed change to their codebase before merge. When they ran it retrospectively on past changes, it would have caught roughly a third of the bugs behind past production incidents on claude.ai. Written by engineers who are, as the report notes, among the best in the world at building these systems.&lt;br&gt;
That is the current state of the tooling. Not theoretical.&lt;/p&gt;

&lt;p&gt;What this means for your work right now&lt;br&gt;
The report identifies "research taste" as the remaining human comparative advantage: the ability to decide which problems are worth working on at all.&lt;br&gt;
For engineers, this translates directly.&lt;br&gt;
Do you understand your system well enough to know which Claude Code session is worth running and which one will produce plausible-looking garbage? Can you review an AI-generated PR and spot the part that will fail under load? Can you translate a client's stated problem into the actual architecture they need?&lt;br&gt;
That judgment does not come from knowing which tools to use. It comes from having shipped things that broke and understanding why.&lt;br&gt;
The report also maps three possible futures: capabilities plateau at current levels and diffuse widely; AI development becomes substantially automated while humans retain research direction; or AI achieves full recursive self-improvement. Anthropic says they believe the second scenario is the most likely near-term outcome.&lt;br&gt;
In that world, an engineer directing ten Claude Code sessions with good judgment is worth more than an engineer writing 10,000 lines by hand. The question is how fast you develop the clarity to operate at that level.&lt;/p&gt;

&lt;p&gt;A practical read&lt;br&gt;
The full report is long and worth reading in full if you build AI-adjacent systems professionally: anthropic.com/institute/recursive-self-improvement&lt;br&gt;
If you want to see how I apply this at the solo studio level across VeloxSync and other active builds, I document a lot of it at veloxsync.app and in the Soulful Tech newsletter.&lt;/p&gt;

&lt;p&gt;Adam McClarin is a full-stack AI developer and founder of Meraki is Love (Soulful Tech). CISSP, Azure AI Engineer, 20 years across software, security, and AI.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>claude</category>
      <category>career</category>
    </item>
    <item>
      <title>The AI Stack Behind PTSD Care for Veterans (How It Actually Works)</title>
      <dc:creator>Adam McClarin</dc:creator>
      <pubDate>Fri, 05 Jun 2026 14:19:56 +0000</pubDate>
      <link>https://dev.to/meraki6966/the-ai-stack-behind-ptsd-care-for-veterans-how-it-actually-works-2aog</link>
      <guid>https://dev.to/meraki6966/the-ai-stack-behind-ptsd-care-for-veterans-how-it-actually-works-2aog</guid>
      <description>&lt;p&gt;I was at a VA clinic and watched something I had not expected to see: a veteran completing a clinical interview with an AI avatar. Not a video call. Not a chatbot. A purpose-built, research-backed system doing what standard clinical instruments had consistently failed to do: getting veterans to open up about trauma symptoms.&lt;br&gt;
I build AI for a living. That afternoon, I got to watch it work.&lt;br&gt;
Here is a technical breakdown of the major AI systems being deployed in veteran PTSD care, and what is actually under the hood.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;USC's Ellie: Embodied conversational AI for clinical interviews
Ellie is a virtual avatar built to conduct clinical mental health interviews. The system uses multimodal input including facial expression analysis, voice tone detection, and body language cues to guide a structured interview in real time.
The clinical insight here is not that the AI is better than a human clinician. It is that many veterans are more willing to disclose sensitive information to a non-human interviewer. The social risk calculus changes. Studies have consistently shown higher disclosure rates with Ellie compared to standard self-report instruments.
From a build perspective: this is a combination of natural language processing for response handling, computer vision for behavioral cue analysis, and rule-based clinical logic governing the interview structure. The avatar rendering runs on a separate graphics layer alongside the conversation model in real time.&lt;/li&gt;
&lt;li&gt;MACPI: ML-based PTSD detection from voice data
MACPI (Mining Audio Cues from PTSD Interviews) was developed by researchers at NYU Langone Health and MITRE. The system trains machine learning models on speech samples to detect PTSD-associated acoustic patterns.
The features it analyzes: fundamental frequency variation (pitch), voice quality measures, temporal patterns in speech (pauses, rhythm, rate), and spectral characteristics. The model achieves up to 90 percent accuracy in screening.
This matters because it removes self-report as the primary diagnostic mechanism. A veteran does not need to consciously disclose. The model operates on acoustic data, not stated content.
The architecture is a supervised classification pipeline. Feature extraction from audio using signal processing libraries (likely Librosa or similar), dimensionality reduction, and a classifier trained on labeled clinical interview data.&lt;/li&gt;
&lt;li&gt;REACH VET: Predictive risk modeling at VA scale
REACH VET runs inside the VA's healthcare infrastructure. It is a predictive modeling system that processes structured clinical data including medication records, diagnoses, appointment history, and behavioral health notes to assign risk scores for hospitalization and suicide.
The VA system covers millions of veterans. Running REACH VET at that scale requires a batch-processing pipeline capable of scoring records across a distributed data store. When a veteran's risk score crosses a defined threshold, a clinical alert is triggered and outreach is initiated.
From an engineering standpoint: this is a supervised learning problem (binary classification, high-risk vs. baseline) applied to longitudinal healthcare records. The challenge is not the model architecture. It is data quality, feature engineering across heterogeneous clinical data sources, and ensuring the trigger mechanism integrates cleanly with clinical workflows.&lt;/li&gt;
&lt;li&gt;Tiatros and CBT delivery at scale
The Tiatros Post Traumatic Growth platform analyzes written narratives submitted by veterans and maps them to CBT module sequences. This is applied NLP: topic modeling, sentiment analysis, and semantic similarity matching to clinical CBT taxonomies.
The output is a personalized module sequence rather than a linear program. A veteran who writes about sleep disruption gets different next-step content than one writing primarily about hypervigilance.
This is the pattern-matching problem between unstructured patient input and structured therapeutic content that large language models are now well-positioned to solve. Systems that predate LLMs used traditional NLP pipelines. New platforms building in this space are starting to use transformer-based classification and retrieval-augmented generation to handle the mapping.
What this space still needs
The systems above are working. The gaps are in interoperability, data privacy at the edge, and explainability. Clinical teams want to understand why a model flagged a particular veteran for outreach. Black-box scores are hard to act on in a clinical setting.
If you are building in health AI or veteran care specifically, those are the problems worth focusing on. Model accuracy is largely there. The infrastructure around trust, transparency, and clinical workflow integration is where the real engineering work remains.
I build at Meraki is Love. If you are working on adjacent problems, reach out.
&lt;a href="https://calendly.com/hello-merakislove/new-meeting" rel="noopener noreferrer"&gt;https://calendly.com/hello-merakislove/new-meeting&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Adam McClarin · Meraki Is Love | AI Engineer and Full-Stack Developer · adammcclarin.com&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>mentalhealth</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I need developers to break my scoring methodology (free audit tool, 47 signals)</title>
      <dc:creator>Adam McClarin</dc:creator>
      <pubDate>Thu, 28 May 2026 18:50:32 +0000</pubDate>
      <link>https://dev.to/meraki6966/i-need-developers-to-break-my-scoring-methodology-free-audit-tool-47-signals-3b8f</link>
      <guid>https://dev.to/meraki6966/i-need-developers-to-break-my-scoring-methodology-free-audit-tool-47-signals-3b8f</guid>
      <description>&lt;p&gt;I built Canopy Guard, a free website audit tool that scores domains across SEO, AEO, GEO, and security. I published the full scoring methodology openly and I want developers to challenge it.&lt;br&gt;
Here is what I want you to do:&lt;/p&gt;

&lt;p&gt;Scan your site at thecanopyguard.com&lt;br&gt;
Look at the scores&lt;br&gt;
Tell me where the numbers feel wrong&lt;/p&gt;

&lt;p&gt;The scoring is based on weighted signals. Some examples:&lt;br&gt;
SEO: crawlability is weighted at 0.10 because it's a gate check. Meta description gets 0.05 for presence plus up to 0.05 for ideal length (120-160 chars). Word count is gradient scored: under 200 words = thin content penalty, 1500+ = full credit.&lt;br&gt;
AEO: FAQ schema presence is 0.10 but FAQ item count is scored separately up to 0.12. Five or more FAQ items gets full credit. One item gets 0.04. The theory is that a single question-answer pair is not meaningful coverage.&lt;br&gt;
GEO: chunking efficiency is 0.25. It factors in heading count, paragraph count, lists, tables, and overall content length. The idea is that well-structured pages produce cleaner retrieval chunks for RAG systems. Is this a valid signal?&lt;br&gt;
Security: CSP carries the highest individual header weight at 0.08 because it has the broadest protective scope. X-Content-Type-Options carries 0.04. Is this weighting defensible?&lt;br&gt;
I also added HSTS max-age as a fallback for HTTPS redirect detection after discovering that Railway's egress can't always test HTTP redirects. If HSTS max-age is 1 year+, the site is enforcing HTTPS regardless.&lt;br&gt;
Full methodology documented at the site. Every weight is visible.&lt;br&gt;
thecanopyguard.com&lt;br&gt;
Roast the scoring. I want it to be bulletproof before a bigger launch.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>security</category>
      <category>seo</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I built a 12-module website audit engine that cross-references visibility with security</title>
      <dc:creator>Adam McClarin</dc:creator>
      <pubDate>Tue, 26 May 2026 22:22:20 +0000</pubDate>
      <link>https://dev.to/meraki6966/i-built-a-12-module-website-audit-engine-that-cross-references-visibility-with-security-36p1</link>
      <guid>https://dev.to/meraki6966/i-built-a-12-module-website-audit-engine-that-cross-references-visibility-with-security-36p1</guid>
      <description>&lt;p&gt;I have been developing and testing this for months. The engine is Node.js and TypeScript on Railway. The frontend is React on Vercel. The scan runs 12 modules in parallel via Promise.all and completes in 5 to 15 seconds.&lt;br&gt;
I am going to walk through the architecture, the scoring methodology, and the one design decision that changed the way I think about website audits.&lt;br&gt;
The problem&lt;br&gt;
I audit websites for clients. Every audit required at least four tools: one for SEO basics, one for structured data validation, one for security headers, one for SSL checks. And the newest layer, how AI models discover, chunk, and cite your content, had no tooling at all.&lt;br&gt;
None of these tools cross-referenced their findings. A site could pass every individual check and still have a critical gap that only surfaces when you map the data together.&lt;br&gt;
The architecture&lt;br&gt;
Twelve modules, each returning a standardized JSON block:&lt;/p&gt;

&lt;p&gt;DNS Resolution (Google Public DNS API)&lt;br&gt;
TLS and Certificate Validation&lt;br&gt;
Security Header Scan (6 headers)&lt;br&gt;
HTML Structure Parse (H1, meta, canonical, title)&lt;br&gt;
JSON-LD Schema Extraction and Validation&lt;br&gt;
Q&amp;amp;A Content Density Analysis&lt;br&gt;
GEO Chunking and Citation Measurement&lt;br&gt;
robots.txt AI Crawl Policy Classification&lt;br&gt;
Exposed Endpoint Detection (12 paths, false positive filtering)&lt;br&gt;
Internal Link Depth Sampling&lt;br&gt;
Vulnerability Indicator Scan&lt;br&gt;
Content Provenance Check&lt;/p&gt;

&lt;p&gt;All twelve run via Promise.all. The response assembles into a unified schema with two branches: visibility_canopy (SEO, AEO, GEO) and security_roots (TLS, headers, endpoints, AI crawl risk).&lt;br&gt;
The false positive problem&lt;br&gt;
Module 9 (exposed endpoints) was generating false positives on SPA sites. A React app on Vercel returns 200 for every path because the catch-all serves index.html for client-side routing. So /.env, /.git/config, and /wp-config.php.bak all came back as "exposed."&lt;br&gt;
The fix uses three-layer detection. First, the engine fetches a guaranteed-nonsense path (e.g., /canopyguard-probe-{timestamp}) to detect catch-all behavior. Then every subsequent path check compares the response body length against both the homepage and the nonsense page. If the body is within 10% of either, it is the same catch-all page and gets filtered out. There is also a content-type check: if /.env returns text/html, it is clearly the SPA serving its shell, not an actual exposed environment file.&lt;br&gt;
Cross-Reference Intelligence&lt;br&gt;
This is the design decision that changed the tool. Instead of just scoring each layer independently, the engine maps visibility data against security data to surface compound gaps.&lt;br&gt;
Example: robots.txt policy is PERMISSIVE (allows all crawlers) and llms.txt status is MISSING (no citation guidance). An SEO tool says the robots.txt is valid. A security scanner says there is no vulnerability. But the cross-reference reveals the actual problem: AI models have full access to scrape your content with zero instructions on how to attribute it.&lt;br&gt;
This layer is qualitative, not scored numerically. It only fires when two conditions from different layers combine to create a gap.&lt;br&gt;
Copy-pasteable fix snippets&lt;br&gt;
Every failing check in the report has a FIX button that drops the exact code to resolve it. Security headers show tabbed snippets for Nginx, Apache, Vercel, and Cloudflare. Schema markup shows complete JSON-LD templates. The llms.txt snippet generates a complete starter file.&lt;br&gt;
I built this because the most common response I got to audit reports was "great, but how do I fix it?" Now the answer is right next to the finding.&lt;br&gt;
The scoring methodology&lt;br&gt;
Published openly on the methodology page. Every weight, every signal, every module. I published it because if you are going to define a standard for AEO and GEO scoring, it needs to be verifiable and challengeable.&lt;br&gt;
What I would do differently&lt;br&gt;
If I were starting over, I would add a headless browser module (Playwright) for JavaScript-rendered sites. The current HTML parser uses server-side fetch, which misses content rendered client-side. That is the biggest gap in the current scan accuracy.&lt;br&gt;
I would also add competitor comparison: scan two domains side by side and diff the results.&lt;br&gt;
Try it&lt;br&gt;
Free, no signup: thecanopyguard.com&lt;br&gt;
The code is not open source yet, but I am considering it. Would love feedback on the scoring methodology, especially the GEO layer.&lt;br&gt;
Adam McClarin, CISSP&lt;br&gt;
Meraki is Love Digital | Soulful Tech&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>security</category>
      <category>react</category>
      <category>devex</category>
    </item>
    <item>
      <title>I built a free audit tool that runs 12 checks in parallel against any domain. Here is the architecture.</title>
      <dc:creator>Adam McClarin</dc:creator>
      <pubDate>Fri, 22 May 2026 17:53:17 +0000</pubDate>
      <link>https://dev.to/meraki6966/i-built-a-free-audit-tool-that-runs-12-checks-in-parallel-against-any-domain-here-is-the-2icg</link>
      <guid>https://dev.to/meraki6966/i-built-a-free-audit-tool-that-runs-12-checks-in-parallel-against-any-domain-here-is-the-2icg</guid>
      <description>&lt;p&gt;I spent the past few months building Canopy Guard, a free website audit tool that combines SEO, AEO, and GEO visibility scoring with a full security posture check. One scan, one report, about 15 seconds.&lt;br&gt;
This is the technical breakdown of how it works.&lt;br&gt;
The problem&lt;br&gt;
I audit websites for clients as part of my regular work. Every engagement started with the same routine: run the site through an SEO checker, then a separate security header scanner, then manually check for structured data, then look at robots.txt. Four tools, four tabs, four different report formats, and none of them cross-referenced their findings.&lt;br&gt;
I wanted a single scan that checked everything and surfaced the gaps between visibility and security.&lt;br&gt;
Architecture&lt;br&gt;
The backend is a Node.js Express server written in TypeScript, deployed on Railway. The frontend is a React app on Vercel.&lt;br&gt;
When a user enters a domain, the frontend POSTs to /api/scan on the Railway backend. The backend runs 12 scan modules in parallel using Promise.all:&lt;br&gt;
const [dns, tls, headers, htmlStructure, schema, qa, geo, &lt;br&gt;
       crawlRisk, endpoints, links, vulns, bizLogic] = &lt;br&gt;
  await Promise.all([&lt;br&gt;
    checkDNS(domain),&lt;br&gt;
    checkTLS(domain),&lt;br&gt;
    checkSecurityHeaders(domain),&lt;br&gt;
    checkHTMLStructure(domain),&lt;br&gt;
    checkSchemaMarkup(domain),&lt;br&gt;
    checkQADensity(domain),&lt;br&gt;
    checkGEO(domain),&lt;br&gt;
    checkAICrawlRisk(domain),&lt;br&gt;
    checkExposedEndpoints(domain),&lt;br&gt;
    checkInternalLinking(domain),&lt;br&gt;
    checkVulnerabilities(domain),&lt;br&gt;
    checkBusinessLogic(domain),&lt;br&gt;
  ]);&lt;br&gt;
Each module is an async function that fetches specific data from the target domain and returns structured results.&lt;br&gt;
The scan modules&lt;br&gt;
DNS: Resolves the domain via Google's public DNS API (dns.google/resolve). Returns whether the domain resolves and the IP address.&lt;br&gt;
TLS: Checks HTTPS reachability, HSTS header presence and max-age value, and whether HTTP redirects to HTTPS.&lt;br&gt;
Security Headers: Checks for all six critical headers: Content-Security-Policy, Strict-Transport-Security, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy.&lt;br&gt;
HTML Structure: Fetches the full page HTML and parses it for H1 count, meta description presence and length, canonical URL match, and page title.&lt;br&gt;
Schema Markup: Extracts all  blocks, parses them, identifies FAQPage and Organization types, and flags structural errors like missing &lt;a class="mentioned-user" href="https://dev.to/context"&gt;@context&lt;/a&gt;.&amp;lt;br&amp;gt;
Q&amp;amp;amp;A Density: Strips HTML tags, splits into sentences, and calculates the ratio of question-pattern sentences to total sentences. This measures how &amp;amp;quot;answer engine ready&amp;amp;quot; the content is.&amp;lt;br&amp;gt;
GEO: Measures chunking efficiency (how well content divides into ~350-token blocks based on header/paragraph structure), citation precision (ratio of specific data points to generic text), and checks for llms.txt at the domain root.&amp;lt;br&amp;gt;
AI Crawl Risk: Fetches robots.txt, classifies the policy as PERMISSIVE/BALANCED/RESTRICTIVE/NONE, checks for AI-specific bot blocks (GPTBot, Anthropic, Google-Extended, CCBot, ByteSpider), and looks for crawl-delay directives.&amp;lt;br&amp;gt;
Exposed Endpoints: This one was interesting to build. It probes 12 common sensitive paths (/.env, /.git/config, /graphql, etc.). The tricky part: sites with catch-all redirects return 200 for every path. So the module first fetches a guaranteed-nonsense path to detect catch-all behavior. If detected, it compares each probe&amp;amp;#39;s response body length and content-type against the catch-all fingerprint to filter out false positives.&amp;lt;br&amp;gt;
Internal Linking: Counts unique internal links on the homepage and samples a few to estimate link depth.&amp;lt;br&amp;gt;
Vulnerabilities: Checks server headers for version disclosure and outdated software signatures.&amp;lt;br&amp;gt;
Business Logic: Checks for author/publisher attribution markup and cross-references sitemap URLs against homepage links to find orphaned pages.&amp;lt;br&amp;gt;
Scoring&amp;lt;br&amp;gt;
Each module feeds into a scoring function that normalizes results to 0-1:&amp;lt;br&amp;gt;
const seo_score = scoreSEO(htmlStructure, links);&amp;lt;br&amp;gt;
const aeo_score = scoreAEO(schema, qa);&amp;lt;br&amp;gt;
const geo_score = scoreGEO(geo);&amp;lt;br&amp;gt;
const security_posture_score = scoreSecurity(&amp;lt;br&amp;gt;
  tls, headers, crawlRisk, endpoints, vulns&amp;lt;br&amp;gt;
);&amp;lt;br&amp;gt;
The scoring weights are calibrated based on what actually impacts discoverability and security posture. For example, in SEO scoring, crawlability gets the highest weight (0.25) because nothing else matters if bots cannot reach your page. In security scoring, TLS validity (0.15) and security headers (0.25 distributed across 6 headers) carry the most weight.&amp;lt;br&amp;gt;
Cross-Reference Intelligence&amp;lt;br&amp;gt;
This is the differentiator. After scoring, the report engine maps findings across layers:&amp;lt;/p&amp;gt;

&amp;lt;p&amp;gt;geo_branch.llms_txt_status vs ai_crawl_risk.robots_policy: If llms.txt is MISSING and robots is PERMISSIVE, flag as CRITICAL. AI scrapers have access with no citation guidance.&amp;lt;br&amp;gt;
application_security.exposed_endpoints vs GEO context: If endpoints are exposed, AI RAG parsers can index internal routes from JavaScript bundles.&amp;lt;br&amp;gt;
business_logic_gaps.data_provenance_leak vs overall visibility: If content has no attribution markup, AI training sets can ingest without linking back.&amp;lt;/p&amp;gt;

&amp;lt;p&amp;gt;Lead capture&amp;lt;br&amp;gt;
When a user wants their PDF report, they enter their email. The frontend sends the lead data to the Railway backend, which writes it to a Notion database via the Notion API. Name, email, domain, all four scores, full report JSON, and a Status field (New/Reviewed/Booked/Closed).&amp;lt;br&amp;gt;
The PDF generates entirely in-browser using a print-ready HTML template opened in a new window.&amp;lt;br&amp;gt;
What I would do differently&amp;lt;br&amp;gt;
If I were starting over, I would add a headless browser module (Playwright) for JavaScript-rendered sites. The current HTML parser uses server-side fetch, which misses content rendered client-side. That is the biggest gap in the current scan accuracy.&amp;lt;br&amp;gt;
I would also add a competitor comparison feature: scan two domains side by side and diff the results.&amp;lt;br&amp;gt;
Try it&amp;lt;br&amp;gt;
Free, no signup: &amp;lt;a href="https://thecanopyguard.com"&amp;gt;https://thecanopyguard.com&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;
The code is not open source yet, but I am considering it. Would love feedback on the scoring methodology, especially the GEO layer.&amp;lt;br&amp;gt;
Adam McClarin, CISSP&amp;lt;br&amp;gt;
Meraki is Love Digital | Soulful TechShareContent{&amp;lt;br&amp;gt;
  &amp;amp;quot;$schema&amp;amp;quot;: &amp;amp;quot;&amp;lt;a href="https://json-schema.org/draft/2020-12/schema"&amp;gt;https://json-schema.org/draft/2020-12/schema&amp;lt;/a&amp;gt;&amp;amp;quot;,&amp;lt;br&amp;gt;
  &amp;amp;quot;title&amp;amp;quot;: &amp;amp;quot;UnifiedVisibilityAndSecurityAudit&amp;amp;quot;,&amp;lt;br&amp;gt;
  &amp;amp;quot;description&amp;amp;quot;: &amp;amp;quot;Data schema for a combined SEO/AEO/GEO optimization and cybersecurity audit report.&amp;amp;quot;,&amp;lt;br&amp;gt;
  &amp;amp;quot;type&amp;amp;quot;: &amp;amp;quot;object&amp;amp;quot;,&amp;lt;br&amp;gt;
  &amp;amp;quot;required&amp;amp;quot;: [&amp;lt;br&amp;gt;
    &amp;amp;quot;audit_id&amp;amp;quot;,&amp;lt;br&amp;gt;
    &amp;amp;quot;target_domain&amp;amp;quot;,&amp;lt;br&amp;gt;
    &amp;amp;quot;timestapastedPlatform at a glance&amp;lt;br&amp;gt;
The CNAPP features offered by Singularity™ Cloud Security brings hyper automation and AI into security auditing. The platform offers modules for cloud security posture management (CSPM), cloud detection and response (CDR), and cloud infrastructure entitlement management (CIEM),pasted&amp;lt;/p&amp;gt;
&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>security</category>
      <category>seo</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
