page.writing
Notes from running a business.
Practical writing on the work: search and AI answers for the trades, and inventory, pricing, and margin for online stores. Written from running the operation.
Web Design
Do I need a new website, or can this one be fixed?
Most sites do not need replacing. They need the things that were never done to them. A rebuild is the answer in five specific situations: you cannot edit it without paying someone, it does not work properly on a phone, it is slow because of what it was built on, there is nowhere to put a page for each service and area, or search engines were never able to read it properly. If none of those is true, the money is better spent on the work than on the rebuild.
Read the post
Local SEO
What a Google Business Profile is, and how to set one up
A Google Business Profile is the free listing that decides how your business appears in Google Search and Google Maps: the name, the address or the area you serve, the phone number, the hours, the photos, the services, and the reviews. For a local business it usually matters more than the website, because the three businesses on the map above the results are picked from profiles rather than from sites. Setup takes about twenty minutes. Verification is where people get stuck, so most of this is about that.
Read the post
Local SEO
How long does SEO take, and what you should see each month
Three to six months before the work shows in calls, and that answer is useless on its own, because it gives you no way to tell a slow start from a wasted year. The useful version is the order things move in. Map visibility first, then the searches you appear for, then where you sit in them, then clicks, then the phone. Here is what should be visible each month, in that order, and what it means when one of them stalls.
Read the post
Local SEO
How much does SEO cost, and what changes the number
Most SEO for a local business is sold as a monthly fee, and the number moves with four things: how many places you serve, how many services you sell, how hard the competition is, and whether the website itself has to be rebuilt first. My own plans start at $425 a month and are published on one page, which is rarer than it should be. Here is what drives the price, what the different ways of charging do to the work, and how to compare two quotes that look nothing alike.
Read the post
Local SEO
What SEO agencies actually do, and whether you need one
An SEO agency does seven things: technical fixes, keyword research, on-page work, content, local SEO, links, and reporting. The work is real and it is the same list whoever does it. What changes between providers is how much of your monthly fee reaches that list, and whether the person you talk to is the person doing it. Here is what each of the seven means, where an agency fee goes, and the questions that tell you which kind of help your business needs.
Read the post
Web Design
What makes someone call instead of scrolling past
Someone searching for a trade has four or five tabs open and is deciding between them in seconds, standing up, on a phone, usually with something broken in front of them. What makes them pick one is not the design. It is whether the page answers four questions fast: is this the right business, can they do my job, can I trust them, and how do I reach them right now. Most sites answer the first and leave the rest below the fold.
Read the post
Local SEO
What ongoing SEO actually means, month to month
Ongoing SEO is four things repeating on a schedule: pages that did not exist before, a Google Business Profile that gets fed, technical problems caught while they are small, and a report that says what changed. The reason it does not end is that none of it holds still. Competitors publish, Google changes, your hours change, a page breaks. Here is what a real month looks like, month one through month twelve, so you can hold anyone you hire to it.
Read the post
Measurement
What to check in Google Analytics before you panic about traffic
A traffic number on its own tells you almost nothing. Before you conclude the site is failing, or that your last provider wasted a year, there are six screens worth opening, and they take about twenty minutes. Two of them are in Google Analytics, three are in Search Console, and the sixth is the one most people never look at. Here is what each one answers and what a bad reading actually means.
Read the post
Local SEO
How to find out what your customers actually type into Google
The words a business uses for itself and the words its customers search are rarely the same words, and the gap between them is why a good site gets no traffic. You do not need a paid tool to close it. Six free sources will give you a list in an afternoon, and five of them are things you already own: your own search data, your phone, your reviews, Google's own suggestions, and your competitors' headings.
Read the post
Local SEO
Why you are not in the map pack, and what actually moves it
The three businesses on the map get the calls, and the website has almost nothing to do with which three they are. Google picks them on relevance, distance, and prominence, and for a business that is missing, the cause is usually one of five things: the primary category is wrong, the profile is half filled in, the reviews have gone quiet, the facts disagree between listings, or you are simply too far from where people are searching. Four of those five you can fix yourself.
Read the post
Local SEO
Why your website is not converting, even though it looks fine
If the site looks fine and the phone is not ringing, the design is rarely the problem. It usually comes down to six things: nothing is measuring the site, nobody has touched it since launch, it is written in your words instead of your customers', there is no local visibility behind it, there is no reason to call once someone is on the page, and something technical is quietly costing you. You can check all six yourself in an afternoon. Here they are in the order they usually turn out to be the cause.
Read the post
AI Search
AI visibility tools: what the trackers do, and the free way
A new category of software promises to tell you whether ChatGPT, Gemini, and Google's AI answers mention your business. Some of it is good. Most small businesses do not need it yet. Here is what the trackers actually measure, who they are for, and the spreadsheet method that gets a single-location business the same answer for free.
Read the post
AI Search
AI visibility: the number your rankings report does not show
AI visibility is whether your business appears, named, cited, or linked, when an AI answers a question about what you do, in ChatGPT, Gemini, Perplexity, Copilot, Google's AI Overviews, or Google's AI Mode. Your rankings report tells you where you sit in a list. It says nothing about that. AI visibility is measured differently, and in Portland the businesses that have it are often not the ones on the map. Here is what it is made of and how to check yours for free this afternoon.
Read the post
AI Search
GEO for contractors: the short version for every trade
Generative engine optimization is the work of being the business an AI names when someone asks it for a contractor. In Portland the businesses it names are often not the ones on Google's map. This is the short version for any trade, with links to the evidence for six trades and the parts that change from one trade to the next.
Read the post
AI Search
GEO for electricians: the AI ranked five companies by the price they publish
Generative engine optimization for an electrician is the work of being the company an AI names when someone asks it for one, and of publishing the facts it checks first, starting with what a site visit costs. I told ChatGPT my lights went out in Lake Oswego and asked for a few electricians, and whether any of them say what a visit costs. It came back with a table of five companies, a column for the visit fee, and a short list that put the two with the clearest and lowest published fee first. The company with no fee on its site came last. Here is the evidence.
Read the post
AI Search
GEO for gutter cleaners: the AI named three companies and read all three websites
Generative engine optimization for a gutter cleaner is the work of being one of the two or three companies an AI names for the job, and it comes down to a current website with a page for gutter cleaning that states the services and the price. I asked ChatGPT for a few gutter cleaners to get quotes from this weekend in Portland. It named three, and for each one it quoted the company's own website for the services, and for one of them the starting price. All three have that page. Here is the evidence.
Read the post
AI Search
GEO for holiday light installers: Google named three companies and the AI named five others
Generative engine optimization for a holiday light installer is the work of being one of the installers an AI names in September, while the season is still open. For a trade with no license board, the AI builds its whole answer from the installers' own websites. Google's map for "holiday light installation portland" shows three installers. I asked ChatGPT who to call for the same job and it named five, with phone numbers and two published prices, and none of the five are on Google's map. Here is the evidence and the steps.
Read the post
AI Search
GEO for HVAC companies: the midnight furnace call goes to whoever the AI can verify
Generative engine optimization for a heating and cooling company is the work of being the company an AI can verify, at a stated fee, tonight. Furnace repair near me ran 189,000 searches last October and 193,000 in January. Google's map for Portland shows three heating companies, all open 24 hours. The AI answers a different question: which company it can confirm, at what price, right now. Here is what Google shows, what the AI reads before it names a heating company, and the steps for the season.
Read the post
AI Search
GEO for plumbers: how a Portland plumber gets named by the AI
Generative engine optimization for a plumber is the work of being the company an AI names when someone asks for the best plumber in Portland, which is often not one of the three on Google's map. Asked exactly that, ChatGPT named a company outside the three-pack, explained why, and then steered emergencies to someone else because of weekend hours. Short version, with the Portland evidence and the plumbing-specific steps.
Read the post
AI Search
GEO for roofers: why the AI named a roofer that is not on the map
Generative engine optimization for a roofer is the work of being the company an AI names when someone asks for the best roofer in Portland, backed by the records it checks: the BBB, the review aggregators, and the state license board. Google's map for "roofers portland" shows three companies. Ask ChatGPT the question and it names a fourth, with reasons, and cites those records. Here is the evidence and the roofing-specific steps.
Read the post
AI Search
GEO vs SEO vs AEO: which one gets your business named
Search used to end in a list of links. More and more it ends in a written answer that names two or three businesses and stops. SEO gets you into the list. AEO gets you into the box above it. GEO gets you into the answer. Here is what each one means, what they share, and why the sites with the most to say are winning all three.
Read the post
AI Search
How to appear in Google AI Overviews as a contractor
Search "how much does a roof replacement cost in Portland" and Google answers before the links: a price range, a breakdown by roof size, and four sources it read to build it. Three of those sources are roofers. This is how the Overview chose them, what it means for a contractor's site, and the pages to write so the next one quotes you.
Read the post
AI Search
How to get ChatGPT to recommend your business
ChatGPT recommends a business when it can verify the same facts about it in several places it trusts: the Google profile, the BBB, the state license board, the review sites, and the company's own website. On September 6, 2026, I asked it for the best roofer in Portland and the best plumber. Both times it named a business that is not in Google's three- pack, and both times it said why. The answers are instructions. Here is what it looked for, the week of work that gives it what it wants, and how to check that it worked.
Read the post
Online Store Growth
Custom inventory management software: when it's worth building
Custom inventory management software is software built around one business's specific workflow, data model, and channel mix, rather than a general-purpose product configured to approximate them, and the business usually owns the code outright. Most businesses that ask about it should not build it. That is an odd thing to open with when I build them, but it is the honest starting point. Off-the-shelf inventory management is genuinely good now, and if your workflow is standard a product exists that handles it for less than building. This is about the cases where that stops being true.
Read the post
Online Store Growth
Amazon IPI score: what it measures and how to raise it
The Inventory Performance Index is a score from 0 to 1,000 that Amazon assigns to an FBA seller account, updated weekly, that measures how efficiently the account uses FBA space, and Amazon uses it to decide how much storage to give you. If you are reading this, there is a decent chance Amazon has already restricted your FBA storage and you are trying to work out why. It is, functionally, Amazon grading your inventory health and charging you for a bad grade.
Read the post
Online Store Growth
GMROI: the retail metric that beats inventory turnover
GMROI, gross margin return on investment, measures how many gross margin dollars you earn per dollar invested in inventory: a GMROI of 3.0 means every dollar tied up in stock returned three dollars of gross margin over the period. It fixes the blind spot in inventory turnover, which treats a 60% margin item and a 20% margin item as identical if they sell at the same rate. One is worth stocking and one is barely worth the shelf space, and turnover will never tell you which is which. GMROI does.
Read the post
Online Store Growth
Days inventory outstanding: formula, benchmarks, and what it misses
Days inventory outstanding is one of the few inventory metrics finance and operations both use, which means both groups are usually calculating it differently and neither knows. Finance wants the company-wide number for the cash conversion cycle. Operations needs to know whether to reorder a variant this week. Only one of those questions can be answered with it.
Read the post
Online Store Growth
SKU rationalization: how to cut the tail without cutting revenue
SKU rationalization is the deliberate review of your assortment to remove the items that consume more than they return, in inventory, warehouse space, listings, counts, reorder decisions, and attention. It usually goes like this: export a year of sales, sort by revenue, draw a line at the bottom 20%, cut everything below it. Six months later revenue is down more than the cut items were generating and nobody can explain why. A revenue- sorted list is the worst possible basis for the decision.
Read the post
Online Store Growth
Inventory aging report: what it should show and how to build one
An inventory aging report groups on-hand inventory into buckets by time in stock, usually 0 to 30, 31 to 60, 61 to 90, and more than 90 days, and shows what you are holding in each, so that every row implies an action. Ask ten multi-channel sellers to pull one and you will get ten spreadsheets that look the same: item number, quantity, days on hand, sorted descending. That is not a report, it is a list. It says what is old and nothing about what to do.
Read the post
Online Store Growth
How to spot dead stock before it's dead
Dead stock never announces itself. By the time a variant is obviously dead, the discount needed to move it has roughly doubled. Here's the method I use to catch it while a markdown still works, and you can run the first version of it in a spreadsheet this afternoon.
Read the post
Online Store Growth
Inventory turnover ratio: how to calculate it and what yours should be
Inventory turnover measures how many times you sold and replaced your entire inventory over a period, usually a year: cost of goods sold divided by average inventory at cost. A turnover of 6 means every dollar in stock came back and went out six times. Most sellers calculate it once a year, at tax time, using the revenue version of the formula, and then do nothing with the answer. That is a shame, because turnover is the single number that tells you whether your cash is working or sitting, and the company- wide figure is almost always useless on its own.
Read the post
Don't want to wait for the writing?
The tools on this site put these ideas to work. If your business needs one of its own, that's what I build.