AIO Helper is an SEO operations SaaS we are building. It ingests search data, has AI propose page-level improvements, applies the proposals a person approves, and then checks whether each change actually worked. These four stages run on one screen and one database. Ingest. It pulls page- and keyword-level numbers every day from Google Search Console and other sources. Propose. AI proposes improvements per page: titles and descriptions, internal links, additional content, and more. Each proposal carries an expected impact, a confidence level, a risk, and an effort. Apply. Approved proposals are applied to pages. Titles and descriptions are written to AIO Helper's per-page SEO settings, which the site reads through an API. For pages on our own CMS, Plovant, there is also a setting that applies low-risk proposals automatically every day. Verify. It observes each applied change in 14-day windows and sorts the result into "improved," "no change," "worsened," "insufficient data," and so on, using rankings, clicks, and impressions.
The history of applied changes, and the lessons people record after looking at each verification, go back into the material the AI searches when it writes the next proposal. This article walks through the four stages with the actual screens and code.
AIO Helper started as the SEO features inside our CMS, Plovant. Plovant was first built as an SEO platform. Later, a CMS and an SEO product began to live in the same repository, so I split the SEO features out into a separate product. That product is AIO Helper.
Producing improvement ideas is not that hard anymore. Search Console numbers tell you which pages "get many impressions but few clicks," and if you ask an AI, it will suggest a rewritten title.
The hard part comes after that. Which of the proposed ideas actually went onto a page? When did it go in, and what were the rankings and clicks before the change? After it went in, did it work, or did it make things worse? Is it safe to roll a change that worked out to other pages?
Once you start tracking this in a spreadsheet, you quickly lose track. The place where ideas come from, the place where pages are rewritten, and the place where you look at the numbers are all separate.
So in AIO Helper, each improvement idea is held as a single record called a "proposal," and that record changes state as it is approved, applied, and verified. The point is to be able to trace, proposal by proposal, what was done to which page and how the metrics changed.
At the top of the screen, you can switch the viewer's role between "Operator," "Manager," and "Executive." The same data is shown differently for the person running daily changes, the person setting priorities, and the person who only wants the overall numbers.
The first stage is ingesting search data. The core is Google Search Console data; there are also ingestion jobs for Google Analytics 4, PageSpeed Insights, and ad data.
The order is set so that the numbers ingested that day feed that day's proposals and verifications.
What I had to be careful about in ingestion is that Search Console data takes time to finalize. If you fetch yesterday's data on the same day, it can still be zero rows. If you treat zero rows as "ingestion complete," that day's data stays missing.
So the daily ingestion re-fetches 7 days at a time. By default, that is the 7 days ending 3 days ago.
Days that were already ingested are overwritten with the finalized values. Fetching the same day again does not change the result, so repeating the re-fetch every day does not create duplicates. This "completed with zero rows and left a gap" problem is one I fixed after it actually happened. I will cover the details in another article in this series.
Ingested numbers go into the database per page, per keyword, and per day. Besides the rankings of tracked keywords, the Keywords screen shows "keywords that have search volume but where the site does not rank yet" as gaps. Propose
The second stage is AI-generated improvement proposals. The "Strategy Pipeline" screen lists proposals per page.
A single proposal is data shaped like this. I took one demo-data item straight from the API response.
(The riskreason and summary values are Japanese in the actual response; they are translated here.)
The main proposal types include title and description changes (Meta), body rewrites (Content), adding a group of related pages (Cluster), internal links (InternalLink), site structure (Architecture), page speed (Performance), and brand notation (Brand).
