All work
Case study / Company site, static · drawn as a survey plat · 2026

One trade, one area, one contractor.

ACMeridian is the company I run with my cousin Michael Cortes. We build and run local referral sites, the kind a homeowner finds by searching Google for a tree service or an appliance repair, and we send each request to one contractor per trade per area, free to try. Our own site has to make that offer to contractors in New Jersey and New York, so it is drawn as the offer: a survey plat of real county lines, with each territory staked in flagging tape. Astro, static output, no bundled JavaScript.

ProjectACMeridian (A&C, LLC)
RoleCo-founder · sole developer
Scope11-page static site + market-check API
Shipped2026 · live since October 16

/ the offer · as the site states it

acmeridian.co 11 pages · zero bundled JS
The ACMeridian homepage: the headline We get local contractors more customers, set over a survey plat of New Jersey and New York county lines, with Sussex County and Long Island each staked with a flagged lath and hatched in pink, and beside the headline a note with a Get a free market check button.

Project breakdown

/ The brief

Tell a contractor the whole deal, plainly.

A contractor already knows how leads usually work: an app sells the same homeowner to several companies, and whoever calls first gets the job. ACMeridian’s offer is the opposite, and the site has to make it believable to someone who has heard every pitch. So it says the whole deal in the order a contractor would ask about it. We check your market first and tell you if there isn’t enough demand. We build and run a referral site for one trade in one area, at our cost. Each request goes to you and nobody else. The first two months from your first request, or the first ten requests, are free; after that you pay per request or a flat monthly rate, at a price agreed up front, or you walk away. No contract, and no fee to leave.

Eleven pages came out of that: the home page, how it works, about, the FAQ, the market check, a page each for tree service and appliance repair leads, privacy and terms, a Google Business Profile guide and a free site audit. Every one of them static.

/ Part I · The plat

A whiteprint, a grid, and one colour that means something.

The site is a survey plat. Everything is drawn in ink on a whiteprint sheet with a 32-pixel drafting grid, and there is one fluorescent thing on it: the flagging tape on a stake that marks a claimed territory. That is the offer as a picture, one contractor per trade per area, and the rest of the site is made of the same sheet. The header is a title block, one ruled cell each for the name, the menu, the market check and the phone. The homepage steps are a survey traverse with a station at each step, and every numbered section on the inner pages sits under a station mark. The intro, the two forms and the 404’s message are sheets of notes laid on the plat.

The How it works band on acmeridian.co: the heading How it works, in four steps, over a surveyed line with four stations, the last one filled with pink tape. Under them: We check your market, We build and run the site, Requests go to you and only you, and Try it free, each with a short line of terms.
The traverse. The homepage’s four steps as survey stations, drawn along the line when the band comes into view. The last station, Try it free, is the one filled with tape. Captured from acmeridian.co, 19 October 2026.
  • The map is real. Its county lines are the US Census boundaries from us-atlas, projected by a script when the site builds, and the two claimed territories, Sussex County and Long Island, are the first two referral sites’ own. The drawing has no words on it, no place names and no numbers, and it is hidden from screen readers
  • Tape means two things only, a claim and the primary action. Pink #FF2D6F is never text, because it holds only 3.3:1 on the paper; where the hue has to carry text or a focus ring it deepens to #C4004A, at 5.5:1
  • The headline keeps 14.29:1 or better wherever it crosses the map
  • Every drawing on the site is SVG made in code, from real data or plain geometry. None of it is a generated image
  • Sign Grotesk Display and Body, self-hosted, with metric-matched fallbacks so the page doesn’t shift when they arrive
/ Part II · The opening

Staked as it opens, or simply staked.

The homepage opens on the plat. A stake drops into Sussex County with a small overshoot and its claim spreads out to the county line, and Long Island follows just over half a second later. Each claim is a hatched shape clipped by a circle centred on its stake, and the circle scales from nothing to the territory’s reach, so the claim grows from the point where it was staked. The animation is CSS. A script of about a kilobyte, inline and ahead of the hero, arms it before first paint, and only when it can also play: with reduced motion or no script at all, the class is never added and the plat simply arrives staked. A test holds it to that.

  • No bundled JavaScript on any route. The homepage’s inline scripts come to about six kilobytes, the motion arming among them, each pinned by hash in the Content Security Policy
  • No inline style attributes on any built page, which is what lets the policy stay that strict. The script Cloudflare inserts for bot detection gets a fresh nonce on every request instead of a loosened policy
  • The share card is rendered from the same plat and headline, and its address carries a hash of its own bytes, so a changed card is a new URL rather than a stale cache
/ Part III · The words, held still

527 strings in, 527 strings out.

When the site was redrawn as the plat, the copy was frozen. Every visible string and every page’s word stream, 527 strings across the nine routes the site had then and the 404, was extracted before the redesign and after it, and the two were diffed. The one change the diff shows is order, not wording: in the footer the phone number now comes after the one-line description, because each cell of a title block holds one thing.

The two trade pages came out of Querywright. Their target searches were measured across the US and the plan was approved there on October 17: about 210 searches a month for tree service leads and for appliance repair leads, and 50 for exclusive contractor leads, which the homepage targets. The pages’ copy lives in one data file, word for word and in order, and the build was diffed against the markdown it came from.

The Exclusive Tree Service Leads page on acmeridian.co: the headline, a paragraph opening A dead oak leaning toward the house. A limb on the roof after a storm, a Get a free market check button, and below it the first station, Where the requests come from, naming Sussex County Tree Help.
A trade page. /tree-service-leads, written from the plan approved in Querywright and set in the same frame as How it works. Captured from acmeridian.co, 19 October 2026.
  • Each trade page’s FAQ and breadcrumb structured data is built from the list the page renders, so the schema can’t say what the page doesn’t
  • The same record set aside “thumbtack alternative”, because the results for it are consumer apps
  • The Organization in the structured data names A&C, LLC and lists the three referral sites it runs
0
Bundled JavaScript on every route
527
Visible strings, diffed through the redesign
3
Browser engines every release runs in
/ The gates

A push that breaks Firefox does not reach production.

Deploys are not run from a machine. A push to main type-checks, lints, checks the copy, the structured data and the dependencies, builds, and asserts things about the output: the policy is hash-based with no unsafe-inline, and no inline style attribute exists. Then it runs eight suites in real Chromium, Firefox and WebKit, with axe. Only if all of that passes does the release branch fast-forward, and only the release branch is what Cloudflare Pages builds.

  • The degradation suite loads the site with JavaScript off and with reduced motion on, so the plat has to arrive staked in every engine
  • On the release that added the trade pages, the page suite passed 150 of 150 in each engine, the head checks 164 of 164 and the contact API 23 of 23
  • The market check posts to one Function with a honeypot, Turnstile verified on the server, a hashed-IP rate limit, and the database write before the email, so a request never lives only in an inbox
/ Decisions

What I picked, and what I didn’t.

  1. 01

    Staked, over Carbon and Measured.

    I asked for the whole site to be redrawn for contractors, with the copy frozen and the direction picked from working prototypes rather than pictures of them. Three were built. Carbon was a carbon-copy work order and Measured was a tape measure. Staked is a picture of the offer itself: a territory claimed for one contractor, which is the thing we actually sell. It also gave the site a map it could make from real boundary data instead of drawing one.

    Considered: Carbon, a carbon-copy work order; Measured, a tape measure

  2. 02

    Old addresses answer 410, not a redirect.

    Only the addresses that became something on the new site redirect. The other 46 retired URLs answer 410 Gone with the 404 page’s body, from one shared module and one small route file per prefix, never a catch-all on every path. A 410 for an address that never existed would be its own small lie, so a URL under a retired prefix that was never a page still answers 404.

    Considered: a map of about 35 redirects to the nearest new page, one catch-all rule

  3. 03

    “Our sites” stayed dark until a site was live.

    The section that lists the referral sites was built before any of them launched, and kept dark. One field decides it: a site with no URL renders nowhere, and giving it one turns on the menu item, the homepage section and the footer line together. Each site was checked before it went on for the line that tells homeowners their request goes to an independent local company, as the terms promise.

  4. 04

    The privacy page, read against the running system.

    I read the policy against the code and the Cloudflare account and found three things it got wrong. It called Google Analytics the only third-party script, when Cloudflare’s analytics beacon, its bot detection and Turnstile also load. It didn’t say the bot detection sets a cookie on any page. And it didn’t name the services a submission passes through, Resend and Gmail. All three changed in one push, because a policy that is wrong about what runs is not out of date. It is wrong.

/ Result

Live since October 16, with three sites behind it.

The site went live on October 16, and the trade pages followed the next day. All three referral sites are live and linked from it: Sussex County Tree Help, Long Island Appliance Help and NYC Cleaning Help, each one telling homeowners plainly that it passes their request to an independent local company. Querywright’s Search Console connection covers the company site and all three, so what happens next is kept on the record, dated, from Google’s own reports.

The site is honest about the wait. Its own How it works says a new site takes time to show up on Google: expect months before steady requests, not weeks. What it promises is what the business can show from the first request on: a contractor sees every request we send, and judges the results for themselves.