Roger Mendoza

A marketing audit scored my SaaS a D — and the fixes were sitting in git

AffRank.ai's audit found weak trust signals, a contradiction on the pricing page and a site Googlebot saw as a single empty page. Half the fixes were already committed. None were live.

I ran a full marketing audit on AffRank.ai: a live crawl of the site plus a direct read of the source code. The composite score came back 49 out of 100 — a D.

The most useful line in the whole report wasn't a finding about marketing. It was this: the live site and the repository disagree.

AffRank.ai marketing scorelive site49projected after deploy55
The fixes worth ~6 points were already committed — they just weren't deployed. The remaining gap is technical SEO: every route rendered as the same empty single-page-app shell. Source: AffRank marketing audit.

The fixes were done. They just weren't shipped.

A batch of eleven quick wins had already been committed and pushed: replacing placeholder avatars on testimonials, fixing a refund policy that said 14 days in one place and 15 in another, adding guarantee and payment-security trust signals, showing the affiliate networks the product works with, a stronger headline, and real robots.txt and sitemap.xml files.

Worth roughly six points on their own. Earning nothing, because they were sitting in git.

It's an easy trap. Committing feels like finishing. But customers and search engines only see what's deployed, and "done in the repo" is a status only developers can see. The fix is procedural, not technical: make deploying part of every batch of changes, and check the live site — not the branch — before calling anything done.

The finding that caps everything: one page, many URLs

The deeper problem was technical SEO. AffRank's front end is a single-page app. A live fetch of the homepage, the pricing page and even robots.txt all returned the same 2 KB shell with the same title. As far as a crawler could tell, the entire domain was one page.

Real robots.txt and sitemap files help, but they hand crawlers a perfect map to pages that all render as the same empty shell. Until the marketing routes are pre-rendered — or at least given their own titles, descriptions, canonical URLs and structured data — organic search can't grow.

That's one reason this site, rogmendoza.com, is plain static HTML generated from Markdown. Every page arrives complete, with its own title, description and structured data. It's not fashionable, but a crawler sees exactly what a person sees.

Small contradictions cost the most trust

The refund-policy mismatch is the finding I keep thinking about. Fourteen days on one page, fifteen on another. Nobody would choose AffRank or not based on one day of refund window. But a visitor who notices it starts wondering what else is inconsistent — on a product whose entire pitch is accurate numbers about your money.

The same goes for placeholder avatars on testimonials. They're a template default, not a lie, but they read as one.

What I took from it

  1. Audit the deployed site, not the repo. The gap between them is a finding in itself.
  2. Make deploy part of "done". A fix that isn't live has a value of zero.
  3. Single-page apps need help to be found. Pre-render the marketing pages or give every route its own head tags.
  4. Consistency is a trust signal. Every number on a site should agree with every other number — especially on a product that sells accuracy.

The product's core advantage held up well in the audit: mapping a click to a page, a placement and real revenue is genuinely harder than what simple link-cloaking plugins do. The job now is to make the website tell that story as well as the product does.

Some links in these notes are affiliate links. If you buy through one, I may earn a commission at no extra cost to you. I only link to tools I use or would recommend.