DEV Community

Cover image for I Got Tired of Paying for 3 SaaS Tools to Optimize One Website — So I Built Plyxo
Sameer Hassan
Sameer Hassan

Posted on

I Got Tired of Paying for 3 SaaS Tools to Optimize One Website — So I Built Plyxo

The problem that wouldn't leave me alone

A few months ago I was auditing a client's site and had five tabs open: Hotjar for heatmaps, Ahrefs for SEO, a spreadsheet for tracking fixes, ChatGPT for "why is this page not converting," and a half-finished Notion doc trying to tie it all together.

Somewhere around tab four, it hit me: none of these tools talk to each other, and none of them tell you what to actually do.

  • Hotjar and FullStory show you that people bounce off a page. They don't tell you why, and they definitely don't hand you a fix.
  • Ahrefs and SEMrush dump a spreadsheet of 300+ "issues" with no prioritization. Which one do you fix first? Good luck.
  • And increasingly, a growing slice of search traffic isn't coming from the 10 blue links at all — it's coming from ChatGPT Search, Perplexity, and Google AI Overviews summarizing an answer and (maybe) citing a source. Almost nothing measures whether your page is even citable in that world.

So I did what any reasonable/unreasonable person does with a Saturday and too much caffeine: I built the tool I wished existed.

It's called Plyxo, and it's free, open-source, and self-hosted.

Repo: https://github.com/pixelfogg/Plyxo-CRO-SEO-AIO-AEO-GEO

What Plyxo actually does

Plyxo isn't a single-purpose tool — it's three audits that usually live in three different paid products, combined into one:

1. Visual CRO auditing

Plyxo takes a screenshot of your live page and overlays bounding boxes around conversion friction points — a CTA buried below the fold, a form with too many fields, contrast that fails accessibility and readability at the same time. For each one, it estimates the dollar impact of the friction and generates a ready-to-paste React/Tailwind fix, so you're not just told "this is bad," you get the actual patch.

2. Technical + semantic SEO audit

Under the hood, Plyxo checks the boring-but-critical stuff: schema.org markup validity, Core Web Vitals, broken/dead links (crawled with SSRF protections so it's safe to point at arbitrary domains), and E-E-A-T signals that Google's algorithm increasingly weighs for content trust.

3. AEO/GEO — citation-readiness scoring

This is the part I haven't seen anywhere else. Plyxo scores a page against the patterns that make content more likely to be cited by AI answer engines — ChatGPT Search, Perplexity, and Gemini. Think: answer-first paragraph structure, clear entity naming instead of vague pronouns, FAQ-formatted sections, clean heading hierarchy. As more traffic shifts from "10 blue links" to "one AI-generated answer," this is quietly becoming as important as classic keyword ranking — and almost nobody outside a few very new startups (Profound, Otterly) is measuring for it, let alone bundling it with CRO and SEO.

Bonus: competitor keyword-gap analysis

Point it at a competitor's domain and Plyxo surfaces keyword opportunities they're capturing that you aren't.

Why self-hosted?

Two reasons, honestly.

First, principle. Crawling and analytics data is sensitive — it maps directly to your traffic, your funnel, your users. I didn't want to build something where that data has to leave your infrastructure and sit on someone else's server just to get an audit done.

Second, cost. Every existing tool that does any one of these three things is a $50–300/month SaaS subscription. Stack three together and you're paying for a team of tools before you've even fixed anything. Self-hosted and open-source means the only cost is your own infra — and a free-tier Gemini API key for the AI layer.

The stack

For the curious:

  • Next.js 16 + TypeScript for the app itself
  • Postgres with Drizzle ORM for storing audits, findings, and history
  • Gemini API powering the AI-driven scoring and fix generation (chosen mainly for its generous free tier — self-hosters shouldn't need a corporate API budget to try this)
  • Docker Compose for one-command local setup

What I learned building this

A few things surprised me along the way:

  • AEO scoring is genuinely unsolved territory. There's no established methodology yet for "will an LLM cite this page" the way there's decades of established wisdom for classic SEO. I had to build and iterate on heuristics rather than follow a playbook, which was equal parts frustrating and fun.
  • Visual CRO detection is harder than it looks. Screenshotting a page is the easy part. Reliably identifying which elements are actually causing friction — versus just flagging every button on the page — took a lot of tuning.
  • "Self-hosted" is a promise, not a checkbox. It's easy to say a tool is self-hostable; it's a different thing to make the setup process actually painless. I'm still iterating on this (Docker Compose helps a lot, but there's more to do).

Try it / break it / tell me what's wrong

This is early, and I'd genuinely rather hear "this feature is half-baked" now than after more people depend on it. If you run a SaaS, a blog, or any content site, I'd love for you to point Plyxo at it and tell me:

  • Did the CRO findings match something you already suspected was a problem — or surface something new?
  • Does the AEO/GEO score feel directionally right, or does it feel like guesswork? (Be honest — this is the part I'm least sure about.)
  • What broke during setup?

Repo, docs, and issue tracker are all here: https://github.com/pixelfogg/Plyxo-CRO-SEO-AIO-AEO-GEO

It's MIT licensed, so fork it, self-host it, or send a PR — all welcome. If you've got a "why didn't you just use X" question, ask it in the comments, I'll answer honestly (including the "yeah, X is better at that one thing" cases).

Thanks for reading — now go find out how many conversion dollars your homepage is quietly leaking. 😄

Top comments (1)

Collapse
 
citedy profile image
Dmitry Sergeev

curious how you handle multi-page site crawling since most AEO tools stick to single URLs

Some comments may only be visible to logged-in visitors. Sign in to view all comments.