The most common freelance inquiry over the past two years has shifted from 'do you do SEO' to 'a client said ChatGPT recommended me' — or the opposite, 'a client said they couldn't find me anywhere.' Search is splitting into two tracks: traditional Google ranking (SEO), and being directly cited or recommended by AI answer engines (GEO — Generative Engine Optimization). This post lays out the difference and the practical steps, and along the way covers homework I just did on this very site.
SEO and GEO run on different tracks
SEO optimizes for a search engine's ranking algorithm, and the endpoint is "the user clicks into your site." GEO optimizes for which sources a large language model cites while generating an answer, and the endpoint is often "the user never clicks your site at all, but sees your name and description anyway." GEO is not a replacement for SEO — it is one more entry point you now have to cover. For freelance work, a business built on being personally named, showing up in an AI's recommendation list matters just as much as ranking on page one of search results.
What GEO actually cares about
AI answer engines favor three kinds of content when generating a response: concrete facts that stand alone as a sentence even stripped of context ("20 years of web development experience" gets cited far more easily than "extensive development experience"); clear structure — headings, lists, FAQ-style formatting that can be chunked and retrieved piece by piece, which extracts far more easily than one undifferentiated block of marketing copy; and structured data (schema.org), so a machine doesn't have to guess whether a block of text describes a person or a company, an article or a product.
What I just did for this site
Before writing this post I audited this repo and found an obvious gap: none of the blog post pages carried any structured data — every article was, to a search engine or an AI crawler, just an unlabeled block of plain text. I added schema.org BlogPosting JSON-LD to the BlogPost component — title, publish date, language, tags, and author, all tagged in a format machines can parse. That change shipped alongside this very post, not as separate follow-up work.
Why this matters more for freelance developers
Freelance work has a much shorter decision chain than e-commerce: search or ask an AI → see one or two names → contact directly. That means the unit actually being cited is rarely your whole site — it is usually one bio paragraph, one case study, or one article excerpt. Write those units concretely, keep them self-contained as sentences, and back them with structured data, and your hit rate goes up noticeably. The flip side: an "about me" that only ever says "passionate about technology, pursuing excellence" gets skipped by human readers and yields zero extractable facts for an AI.
A practical checklist
Concrete facts beat adjectives — years of experience, tech stack, industries served; use numbers and proper nouns instead of vague praise. Every technical article should have clear H2 section structure so it can be chunked and cited piece by piece. A personal site needs at minimum Person or ProfilePage structured data; case studies are better paired with CreativeWork or SoftwareApplication schema. On a bilingual site, do both languages — AI answer engines match the user's input language more tightly than Google does, so skipping one language halves your visibility outright. Articles need clear publish and update dates — a field this site's new BlogPosting schema specifically calls out — because stale content gets down-weighted by both kinds of engine.
Takeaway
SEO is twenty-year-old homework; GEO is the pop quiz that showed up in the last two years — but the underlying logic is the same: write content that is clear, concrete, and machine-readable, and both human readers and machines come out ahead. Rather than treating them as two systems to maintain separately, treat them as two grading rubrics for the same piece of work — this post, along with the JSON-LD it shipped with, is my own assignment turned in.
Max Chu