Proof of work
What we fixed on this site.
Northline ran its own two-week technical sprint on north-line.net. This is the packet a client would get: findings, shipped tickets, and what we refused to fake. No other company’s name. No ranking promise. This page is also the live test case — further sprint work on this domain gets logged here.
Verdict
The site was already crawlable. The list is still long because a sprint is host rules, robots conflicts, canonical strings, social titles, and schema that matches the HTML — not “turn on SEO” in a CMS. A founder or SDR can understand the output. Owning the tickets is a deferred project they will not finish next to quota. If a client’s site is this clean, we say so. We do not invent rankings.
Week 1 — see it the way Google does
| Check | Finding |
|---|---|
| Crawl vs sitemap vs 200s | Twelve indexable URLs, all 200. Inquiry is 200 but noindex and off the sitemap. Thanks is disallowed in robots. A prospect’s site usually fails this comparison before anything else. |
| Sitemap format | Google fetches a urlset. A WordPress-style sitemapindex, or two sitemap generators at once, is a common miss. This site had to be one urlset with an XSL view — not two competing sitemap files. |
| Hosts: apex, www, http | www.north-line.net returned 200 as a second copy of the site. Canonicals already named the apex. http already reached https. Duplicate host is the kind of issue Search Console reports as two properties, not as a plugin checkbox. |
| Canonical vs sitemap loc | Homepage canonical was https://north-line.net (no trailing slash) while the sitemap loc was https://north-line.net/. Crawlers treat that as two URLs until they are the same string. |
| Title / H1 uniqueness | All twelve titles were unique. The journal index H1 was the word “Journal” — a template leftover. Offers H1 is a claim; the title is the query. That split is allowed. Cloned titles are what we look for on a client CMS. |
| Open Graph / Twitter inheritance | Root layout pinned one og:title and twitter:title on every URL. Slack and LinkedIn then previewed money pages as the homepage. Layout no longer sets those fields, so each document title wins. |
| 404 robots conflict | Not-found emitted noindex and a default index, follow tag in the same response. Two robots signals. The 404 now has a single noindex directive. |
| JSON-LD vs visible page | ProfessionalService on the layout. Article + Breadcrumb on journal URLs. Publisher had no logo URL. /offers now lists the two services as an ItemList with no prices, because the page has no prices. Markup that does not match the HTML is a trust problem, not a bonus. |
| Indexation queue | As of 11 Oct 2026 the homepage was in Google. Inner URLs were still discovered, not indexed. That is a new-domain wait. We do not treat Bing “discovered, not crawled” as a penalty, and we do not sell it as one. |
What shipped
Eighteen tickets on a twelve-URL site. That is the grain. Yours will be longer if templates multiply.
- Compared crawl, sitemap, and live status codes URL by URL
- Kept /inquiry noindex and out of the sitemap; blocked /inquiry/thanks in robots.txt
- Collapsed two sitemap generators into one urlset at /sitemap.xml, with XSL for humans
- 308 from https://www.north-line.net/:path* to the apex host
- Confirmed http already 301/308s to https://north-line.net/
- Aligned homepage canonical with the sitemap loc, including the trailing slash
- Audited title and H1 uniqueness on every indexable URL
- Rewrote the journal index H1 from the template word “Journal” to a real heading
- Removed sitewide og:title from the root layout
- Removed sitewide twitter:title from the root layout
- Verified /offers and /method social titles now match the HTML title
- Removed the layout default robots index, follow
- Set 404 to a single noindex robots directive
- Added Organization logo at https://north-line.net/logo.png
- Added Article publisher ImageObject pointing at the same logo
- Added OfferCatalog on the organization and an ItemList of two Services on /offers, with no prices
- Wired breadcrumbs on work URLs so nested pages inherit a Work parent
- Linked /offers, /method, and the sprint journal article into this readout
What this sprint is not
It is not a traffic graph. It is not a client logo wall, and not a claim that inner pages are indexed. Implementation on a client CMS is a separate pass. Dollar prices stay off /offers; quotes follow a diagnostic.
The working sequence is in A two-week technical SEO sprint for a B2B website. If your site is a 10–50 person shop with no SEO headcount, that is the product.