Skip to content
Skip to main content
Novel Systems home
Decision log
D-107August 18, 2026

The homepage says its own name, and the footer links it in words rather than only in a logo

Affects: app/page.tsx (route metadata, HOME_DESCRIPTION, WEBSITE_JSON_LD, the <h1> and the subhead), config/site.ts (footerNav.company), app/about/page.tsx, app/contact/page.tsx, app/engineering/page.tsx.

The problem

Searching either "Novel Systems" or "novelsystems.ca" returned /about above /. For a brand query, the homepage losing to a subpage is not a ranking nuance; it means the site had not established which page is the entity.

The diagnosis, in the exact strings

Not an opinion about SEO. Four measurements, each taken against the built output rather than the source.

Title. The homepage emitted Enterprise CPQ & field service management | Novel Systems — Vertical SaaS CPQ & FSM — 83 characters, with the brand starting at character 43, past where a result truncates. /about emitted About & coverage | Novel Systems — Vertical SaaS CPQ & FSM — 58 characters, brand at 20. The subpage was the one presenting a brand-first title, because the root title.template appends the suffix to a child's plain string while the homepage was spending its first 42 characters on a category description.

Description. The homepage ran 279 characters — roughly twice what a result displays. /about opened with ORIGIN_SUMMARY, which begins by naming the company. Exact-match phrase, first words, inside the budget.

Body copy. The string "Novel Systems" appeared zero times in the rendered visible text of the homepage. Its only occurrence in app/page.tsx was inside the meta description. /about interpolates COMPANY.operatingName dozens of times. A crawler reading both pages for the entity name found it on one of them.

Internal links. / had six inbound source-level links, three of them from /dashboard behind auth and one from the 404 page. The two public ones were both anchored on an SVG lockup, so their anchor text was the aria-label, not prose.

What was decided

Five changes, no restructuring.

title became { absolute: "Novel Systems | Enterprise CPQ & Field Service Management" } — 57 characters. absolute is required, not stylistic: a plain string here would have the root template append the suffix and print the brand twice.

HOME_DESCRIPTION is a new owned constant at 159 characters with the brand in the first two words, and it is the single source for both the meta description and the JSON-LD description, so the two cannot drift.

The <h1> became Novel Systems — CPQ & Field Service Management for specialty trade contractors (78 characters, up from 73). Still exactly one <h1>; the class list is unchanged, and the five extra characters did not require touching the responsive sizing. The subhead moved from imperative to third person and now names the company, with the same three clauses in the same order.

A WebSite node was added to / alone. It lives in app/page.tsx rather than beside Organization and SoftwareApplication in the root layout because WebSite is the node that establishes a site's name and its documented placement is the homepage. It carries no potentialAction — there is no search endpoint on this site, and a template URL that 404s is a fabricated capability. alternateName is COMPANY.primaryDomain rather than shortTitle, which would have repeated name verbatim.

footerNav.company gained Novel Systems Home at the top, which is the first site-wide link to / whose anchor text is words.

What was rejected

A "Home" item in the primary nav. mainNav is six wide, and the comment above it records that Careers was given up to fit Engineering. Adding a seventh item to solve a linking problem would spend a nav slot that was already contested.

Adding links until `/` tops the table. Rendered inbound links to / went from 282 to 423 — 13th to 6th of all destinations — and /about, the page that was actually beating it, sits at 140. Above / are /privacy (837), /terms (558), /platform/cpq (435), /developers (427) and /engineering (427), all of which are site-wide chrome. Closing a 12-link gap to /developers would mean a fourth chrome link to the homepage with nothing to say, which is link-stuffing with a metric for an excuse. The three contextual links added to /about, /contact and /engineering each say something a reader might act on; that was the stopping condition, not the ranking of the table.

What would have to change for this to be wrong

If /about still outranks / for the brand query in four weeks, the cause is not on-page — every on-page signal now favours the homepage — and the next place to look is the external link profile, where inbound links point and what their anchor text says. Re-measuring the same four strings would be wasted work.

What this does not promise

Re-ranking is not deterministic. Re-crawling and re-evaluation typically take one to two weeks and sometimes do not change the result at all. This entry records that the signals were made correct and consistent; it should not be read as a prediction that the order flips.