Full-time or contract

Hire the operator, not the channel.

Most companies solve this with three hires — an SEO, someone for “AI visibility”, and an analytics contractor — then discover the evidence lives in the seams between them. I own all three: the search architecture, the work that gets a brand quoted inside AI answers, and the measurement layer that says which of them produced revenue.

Remote · Europe-based, US hours overlapAsync, written-firstFixed rate · no commission or revenue share
Ihor Odariuk
The role

Three areas, one person, one context.

01

Search

Technical SEO, URL and internal-link architecture at the scale of hundreds of pages, cannibalization detected from live Search Console data rather than from a tool's guess, schema, indexation, and the content that has to exist for any of it to matter.

02

AI visibility (GEO / AEO)

Getting the brand quoted inside generated answers — ChatGPT, Gemini, AI Overviews, AI Mode, Perplexity, Copilot — by making pages extractable rather than by chanting keywords at them. Measured on a schedule, with the caveats attached.

03

Revenue tooling

The part most teams have nobody for: first-touch tracking, server-side lead logging, joins into the CRM by phone key, call transcription and classification, ad-platform and CRM API pipelines, dashboards. Python, JavaScript, React, n8n.

The third one is the reason to hire this combination rather than assemble it. Search and AI visibility both produce claims; only the measurement layer turns a claim into a number an owner or a board will act on. Built separately, they never join up — the SEO cannot see the CRM, the developer has no opinion on citations, and nobody is accountable for the gap.

Evidence

What that has actually produced.

One primary engagement, twelve months, a home services business across eight US metros running roughly 1,600 jobs a month. Every figure was pulled programmatically from the Search Console, CRM, call-log and ad-platform APIs, and each one links to the full write-up — including the two findings that destroyed results I would rather have kept.

11,724 jobs

Re-attributed to their real source after building a closed-loop chain from first-touch visit to invoice amount — in a CRM where 45% of jobs had no source field filled at all.

Method and numbers
63 → 2,605

AI responses citing a client site over six weeks across seven engines, tracked in twelve snapshots. ChatGPT alone went 1 → 813. Published with the caveats, including the part of the rise that belongs to the measurement tool rather than the work.

How it was built
6,119 → 260,233

Monthly search impressions over twelve months, with actual visits tripling — pulled from the Search Console API, on a 1,100+ URL architecture rebuild that took indexation from 64 to 1,174 pages.

Architecture work
97,800 calls

Call records transcribed, classified and matched to CRM jobs, which is what exposed two channels the business had been crediting to the wrong source — and proved a dispute automation of mine had stopped paying off: 3,614 filings, 14 credits in a later cycle, after an earlier one on the same account had worked.

Paid-lead layer
813 vs 26

Live ChatGPT page fetches in five days, against 26 analytics visits from all AI platforms across six weeks. Measured with a server-side logger I wrote because no third-party tool reports it.

The instrument
Working format

How I work, stated before you ask.

Async and written by default

Findings, decisions and reasoning arrive as documents, not as a meeting you have to attend to learn what happened. Calls when there is something to decide, not as a status ritual.

Judged on outcomes, not hours

Give me a number to move and read access to the systems that hold it. I would rather be measured on what the data says in ninety days than on activity reports.

No approval queue on wording

Strategy, scope and priorities are yours to set. Sentence-level sign-off on every paragraph is where this work goes to die — if the content needs legal or brand review, tell me the constraints once and I will write inside them.

Remote, US-facing

Based in Europe, working US clients and US hours overlap, fully remote. Comfortable being the only person who owns this area, and comfortable being the one who says the number came back bad.

Compensation

How I want to be paid, and how I do not.

Fixed, monthly, in one currency

A fixed monthly rate for full-time, or a fixed rate per engagement for contract. No commission, no revenue share, no equity standing in for salary. Not out of pessimism about the upside — it is that this work is measured in a system I build myself, and being paid out of numbers I control is a conflict of interest I would rather not have on the record.

The reference point is public

A single client on the monthly system pays $2,500–$4,500 a month for part of one person's week — those numbers are on the pricing page, not behind a call. Full-time is priced against that, not below it. Tell me the band you already have approved and you will get a straight yes or no in the first reply, not after three rounds.

Stack

What I actually use.

PythonJavaScript / TypeScriptReactNext.jsn8nSearch Console APIGA4 · GTMGoogle Ads APICRM & call-log APIsHousecall ProWordPressPostgreSQLWhisperClaude APISemrush · Ahrefs APIs

Ten years in business and marketing before search — brand management, B2B and B2C sales, e-commerce SEO for a major instrument distributor, a YouTube channel built to 25K+ subscribers, paid social budgets above $10K a month. That background is why the work reasons backwards from the invoice rather than forwards from a keyword list.

Probably not a fit

  • Compensation tied to commission, revenue share or equity instead of a fixed rate
  • A role that is content production only, with the measurement layer owned by someone else
  • Guaranteed-ranking promises made to clients before anything is measured
  • Daily standups as the primary reporting mechanism
Next step

Send the role, get a straight answer.

Email the description and what number you need moved. You get back, in writing, whether I think I can move it, what I would look at first, and what I would need access to. If it is not a fit I will say that instead of taking an interview slot.