Search engineering log

Search work on StellarReach, recorded as it ships

A running record of the search work on stellarreach.app, a product we build and run ourselves.

Every entry states what we found, what we changed, and what we expect to happen, written before the outcome is knowable, and marked confirmed or wrong once it is.

Property
stellarreach.app
Log opened
10 August 2026
Entries
1
Predictions settled
0 of 5

A second log, and a different kind of finding. The Gematria.Today log opened with a fault in the code: a loop that manufactured its own worst pages. This one opens with a fault in the words. It is the less technical of the two and the easier to miss, because nothing about it is broken: every page loaded, every page was indexable, and the site simply addressed half the audience it sells to.

The ledger · every change, every call, most recent first

Shipped Entry What we said would happen Outcome
2026‑08‑10 001: The site was written for half its own audience The eight retitled pages move before the five new ones do; the new pillar, not the older post, becomes the page Google picks for the head term. Falsified if both rank for it. Measuring
One row per shipped change. The outcome column starts as measuring and is only ever moved to confirmed or wrong, never quietly deleted.

The site was written for half its own audience

StellarReach sells to the people who build websites for a living, from freelancers working alone through to agencies with a team of reps. Across its 34 public pages, agency and its variants appeared 293 times. Freelance appeared 23 times, and 14 of those were on two pages about rival tools. The exact phrase web developer appeared once, on the privacy policy.

The symptom

What the source said

This entry quotes no Search Console figures, and the reason is worth stating plainly rather than burying: the pages it is about did not exist until the day it was written. There is no baseline for them yet. What there is instead is the site’s own source, counted at the commit immediately before the change, a measurement anyone can reproduce from the repository.

“Agency” mentions 293 On 32 of 34 public pages
“Freelance” mentions 23 14 on two competitor pages
“Web developer” 1 Whole public site, exact phrase
Pages for solo operators 0 Against one for agencies

A ratio of roughly thirteen to one is not a stylistic preference. It is a site that has decided who it is talking to, and the decision does not match who it sells to.

The finding

What the structure showed

Counting words says something is off. It does not say what to do. Four structural facts did:

There was a door for one audience and not the other. A /for-agencies landing page existed with no counterpart. A freelancer who reached it read about a seat and an inbox per rep, sends rotating across a team, and a market-exclusivity add-on: every argument on the page priced for a company with employees.

Eight pages were named after a nav label. Features - StellarReach, Pricing - StellarReach, FAQ - StellarReach, Blog - StellarReach. Nobody searches those words. Google rewrites a weak title anyway, so the cost is not that the title is wrong: it is that the page hands the search engine nothing to work from.

28 of 34 public pages carried no structured data at all, including all seven comparison pages. Those are the highest-intent pages on the site: someone searching for an alternative to a tool they already pay for is shopping, not browsing.

Three blog posts and no hub. The site’s own marketing plan had specified a pillar page with supporting posts around it. Only the supporting posts had been written, so there was nothing for them to link into and nothing accumulating their authority.

The obvious keyword here is the one we deliberately did not target.

The audience is web developers, so web developer looks like the term to rank for. It is not. Search intent for that phrase is dominated by two groups: people learning to code, and people looking to hire a developer. Neither buys prospecting software. Ranking for it would have delivered traffic that could never convert, and the effort would have been indistinguishable from progress right up until someone checked what the visitors did next.

The commercial intent sits in the job to be done: how to get web design clients, web design leads, without cold calling. So the messaging speaks to web developers and the keywords target getting clients. That decision is written into the project’s own marketing notes rather than left in someone’s head, because the obvious wrong move stays obvious and someone will propose it again.

The change

What shipped

One pull request, reviewed and merged the same day. Four changes, in descending order of how much they matter:

A second door. /for-freelancers, the mirror of /for-agencies: one seat rather than a team, the flat-price offer, and prospecting that keeps running through a busy delivery week. The two pages link to each other, so whichever one a visitor lands on can hand them to the other.

Titles that match a search. Eight pages retitled, with og:title and twitter:title moved in step: a page retitled in the browser tab but not in the link preview is worse than one left alone, because the two now disagree.

The cluster that was specified but never built. A pillar plus three supporting posts, interlinked in both directions with the three that already existed. The pillar targets the head term; the older post keeps the long-tail variant it already owned.

Structured data on the 28 pages without it. Breadcrumbs throughout, a collection type on the two hubs, and about/contact types where those are actually true. Two things were deliberately left out: the product type on every feature page, since the home and pricing pages already declare it once and repeating it per page is noise; and FAQ markup on any page without a visible FAQ on it.

Files changed 43 One reviewed pull request
Lines added 3,109 Against 53 removed
New public URLs 5 Sitemap 31 → 36
Tests passing 6,366 None failing, one skipped

The call

Recorded before deployment

Written on the day the change merged, with the baseline fixed and the expected outcome stated in advance, including the way this one is most likely to go wrong.

Recorded before deployment 10 Aug 2026 · baseline: 31 indexed-eligible URLs, 3 posts, no pillar
  • EXPECT Indexation is the first thing to check, and the first thing that can fail. The five new URLs have no inbound links from any other site. Discovery runs through the sitemap and internal links only, so a page that never gets crawled will look exactly like a page that ranks badly, and the fixes are different.
  • EXPECT The eight retitled pages move before the five new ones. They are already indexed and already have history; a title is re-evaluated on the next crawl. If anything shifts inside a month, it should be those, not the new posts.
  • TARGET The new pillar becomes the page Google picks for the head term: how to get web design clients. Before this change the only page on the site addressing that phrase was the older post about avoiding cold calls.
  • FALSIFIES If both the pillar and the older post rank for the same query, the differentiation failed. They would be splitting signal rather than compounding it. The agreed remedy is recorded now, before anyone is invested in a different one: tighten the older post’s title toward its long tail. Not merge them, not delete either.
  • TIMING Weeks to months, on a domain with little authority. Two checks are already scheduled rather than left to memory: indexation on 20 August 2026, rankings and the cannibalisation question on 5 October 2026.

One category of number is absent throughout: anything from Search Console. The pages are new, so there is no before-figure to compare against and no honest way to quote one. Writing “impressions up” here would have been the easiest sentence in this document and the only dishonest one. The next entry will carry real figures; this one does not pretend to.

OUTCOME · PENDING

Nothing measurable yet: the change merged the day this was written. The first honest read is the indexation check on 20 August 2026, and the first ranking read on 5 October 2026. This block gets the actual figures then, whichever way they go, and the prediction above will not be edited to match them.

The check

How it was verified

Most of this change is copy, which is exactly the kind of work that gets shipped without verification because there is apparently nothing to verify. There was. A title is duplicated across three tags, a new page has to be reachable through the routing layer, and structured data is invalid in ways no browser complains about.

So the whole suite ran (6,366 tests, none failing) and four checks were written against the published output directly: that every JSON-LD block on all 39 public pages parses, that all 36 sitemap URLs resolve to something servable, that every internal link resolves against the routing rules or a real file, and that the retitled pages carry the same title in the tab and in the link preview.

The test that mattered was the one nobody would have thought to write.

Adding a link to the site’s footer broke a test in a different part of the codebase, and the reason is the sort of coupling that only a test finds. The public guide is generated from the logged-in help pages, and it lifts its header and footer from one of the marketing pages. That generator carries an allowlist of paths considered public; anything not on it has its link stripped, on the reasoning that a logged-out reader should not be sent to a page behind the login wall.

The new page was not on that list. Without the test, the footer link would have shipped everywhere on the site except the one page where it was silently removed: no error, no warning, and no reason for anyone to look.


Method

How we work

An audit tool would have caught two of the four findings here. It would have flagged the thin titles and the missing structured data, because both are visible from outside and both have a rule to check against.

It would not have found the other two, and those are the ones that mattered. No crawler knows that a company sells to freelancers as well as agencies, so no crawler can notice that only one of them has a page. No crawler knows that a marketing plan specified a pillar that never got written. Both findings needed someone to read what the business says it does and compare it against what the site actually says.

A site can be technically perfect and still be talking to the wrong half of its market. Nothing in the reports will tell you.

The keyword decision in this entry is the same shape. Targeting the audience’s job title looks correct in every tool: real search volume, clear relevance, an obvious fit. It is still wrong, and the only way to know is to ask who is actually typing the phrase and what they want when they do.

This log is kept for a product we own, which is the only place we can publish predictions before results without asking a client to carry the risk of being wrong in public. Client work follows the same method and gets the same write-up privately.

StellarReach is built and operated by Lunar Web Studio LLC. Every figure in entry 001 comes from the project repository at the commits stated and is reproducible from it; no search-performance figures are quoted, because at the time of writing there are none. Entries are appended, not rewritten: where a prediction turns out wrong, the original wording stays and the outcome block says so.

Free · No obligation

Is your site talking to the wrong half of your market?

It is a hard thing to see from the inside, because every page reads fine on its own: the pattern only shows up when you count. If you have a site today, send us the address and we will rebuild your homepage around your own brand and words, back within one business day. If what you need is a look at why search isn’t working, tell us and we will come back with what we find instead.