Studio Squalli

Work

Three sites, three problems, the same playbook.

For each one: what it looked like before, what I built, the SEO and AI-search work, the performance and Core Web Vitals, a UX problem I found and fixed, and where it stands now. Where I do not have a verified number yet, the copy says what was done rather than inventing a result.

Case study 01 · Bilingual local-service site · Montréal

LeTuteurScientifique.ca

Visit the live site →

A private tutor in Montréal who needed to be found by parents searching across two school systems (the French AEFE network and the Quebec system), in two languages, for a dozen different subjects and grade levels.

Before

No site that search engines or parents could navigate by intent. A parent looking for a Collège Stanislas maths tutor, or for cégep NYA calculus, had no page that matched that exact search. Nothing for an AI assistant to cite when asked "who tutors the French Bac in Montréal".

After

A static Astro site on Vercel with a programmatic SEO layer: a dedicated landing page for each subject, each grade, and each target school, generated from structured content rather than hand-built one by one.

What I built

  • ·A static Astro site on Vercel with a programmatic SEO layer: a dedicated landing page for each subject, each grade, and each target school, generated from structured content rather than hand-built one by one.
  • ·A full JSON-LD graph: a Person for the tutor, a LocalBusiness/EducationalOrganization for the practice, a WebSite node, plus per-page BreadcrumbList and Article schema.
  • ·A bilingual structure (French primary, English section for McGill and Concordia students) with hreflang wiring so each language version is served to the right audience.
  • ·A Google Business Profile connected to the site, GA4 and Search Console, and a Formspree-backed contact form with a clean thank-you flow.

SEO and AI-search (GEO) work

  • ·Unique title and 140 to 160 character meta description per page, with the target keyword in the first 100 words and a single H1.
  • ·Internal linking between subject, grade and school pages so authority flows and crawlers can reach every page in two clicks.
  • ·A sitemap with lastmod and a robots.txt pointing to it, submitted to Search Console.
  • ·An llms.txt index listing every page in plain language so ChatGPT, Claude and Perplexity can find and cite the right landing page for a given query.
  • ·Entity-clear copy: the schools, neighborhoods, exams and programs are named explicitly so both Google and language models can match the business to a specific intent.

Performance and Core Web Vitals

Static HTML, no JavaScript framework, system fonts, lazy-loaded images and a single small inline script for the menu. The pages render server-side and arrive ready to read.

{{LTS_LIGHTHOUSE}}

Lighthouse performance

{{LTS_LCP}}

Largest Contentful Paint

{{LTS_INDEXED_PAGES}}

Indexed landing pages

A UX problem, and the fix

The critique

An early version pushed every program and price into one long homepage, so a parent with a specific need (Brevet revision, or NYA calculus) had to scroll past everything irrelevant to them before finding their case.

The fix

I split intent into dedicated pages and added a breadcrumb trail plus a compact accordion navigation, so a visitor lands directly on the page for their child's exact grade and school, with the contact form one tap away.

Outcome

The practice now ranks for its target school and program searches and holds a verified 5.0-star Google Business Profile with 12 reviews. Organic visibility change since launch: {{LTS_TRAFFIC_DELTA}}.

Case study 02 · French local-business site · Paris

fabienne-voyance-paris.fr

Visit the live site →

A Paris-based practitioner who needed to be found for several distinct service topics and to turn that traffic into direct contact by phone and WhatsApp, while staying compliant with French and EU consent rules.

Before

A single generic page that tried to cover every service at once, so it ranked for none of them well and gave visitors no fast way to make contact. Analytics ran without a proper consent step.

After

A static site with a dedicated SEO landing page per service topic, each one written to answer one specific search rather than listing everything.

What I built

  • ·A static site with a dedicated SEO landing page per service topic, each one written to answer one specific search rather than listing everything.
  • ·Consent-managed GA4: analytics only loads after the visitor agrees, so the site respects French and EU privacy expectations by default.
  • ·Conversion-first contact paths: prominent WhatsApp and click-to-call buttons placed where the decision happens, not buried in a footer.
  • ·Structured data for the business and its services so search engines understand the offer and location.

SEO and AI-search (GEO) work

  • ·One topic per URL, each with its own title, meta description and focused copy, so each page can rank for its own query.
  • ·Clear local and service entities in the copy and schema so the business is matched to the right intent and place.
  • ·Fast, crawlable, server-rendered HTML that both search engines and AI assistants can read without executing scripts.
  • ·Internal links between related service pages to spread authority and keep visitors moving toward contact.

Performance and Core Web Vitals

Lightweight static delivery with deferred, consent-gated analytics so the tracking layer never blocks the first paint. Images sized and lazy-loaded.

{{FV_LIGHTHOUSE}}

Lighthouse performance

{{FV_LCP}}

Largest Contentful Paint

Yes

Consent-gated analytics

A UX problem, and the fix

The critique

The original layout asked the visitor to read a wall of text before offering any way to get in touch, and the contact options were inconsistent from page to page.

The fix

I led each page with the answer the visitor came for, then placed a consistent WhatsApp-and-call block at the natural decision point, so making contact takes one tap from any page.

Outcome

The site now presents a clear, per-topic structure with compliant analytics and direct conversion paths. Topic pages give the business a chance to rank and be cited for each service individually. Traffic change since launch: {{FV_TRAFFIC_DELTA}}.

Result metrics are being measured; placeholder tokens above are filled with verified figures before this page goes live.

Case study 03 · English content & authority site

analystengineering.com

Visit the live site →

A content site that needed to establish topical authority in its field and capture an audience over time, while being readable and citable by AI assistants, not just search engines.

Before

Scattered posts with no clear topical structure, no email capture, and nothing telling AI crawlers what the site was an authority on.

After

A five-pillar topical architecture: content organized into five core themes with supporting articles under each, so depth accumulates around a defined set of subjects.

What I built

  • ·A five-pillar topical architecture: content organized into five core themes with supporting articles under each, so depth accumulates around a defined set of subjects.
  • ·A newsletter capture flow to convert readers into a subscribed audience the site owns, independent of any platform.
  • ·An llms.txt index so AI assistants can discover the pillar pages and understand what the site is an authority on.
  • ·Structured data and clean semantic HTML so each article is parseable by both search engines and language models.

SEO and AI-search (GEO) work

  • ·Pillar-and-cluster internal linking so each theme reads as a coherent body of work rather than isolated posts.
  • ·Answer-formatted content and clear entity naming so passages can be lifted into an AI-generated response with attribution.
  • ·llms.txt plus a sitemap with lastmod, giving both AI crawlers and search engines a clean map of the content.
  • ·Fast, statically rendered pages that crawlers can parse without running JavaScript.

Performance and Core Web Vitals

Static generation keeps articles fast to load and easy to crawl. The newsletter and any third-party scripts are loaded so they do not block reading.

{{AE_LIGHTHOUSE}}

Lighthouse performance

{{AE_LCP}}

Largest Contentful Paint

{{AE_SUBSCRIBERS}}

Newsletter subscribers

A UX problem, and the fix

The critique

Readers arriving on a single article had no sense of the surrounding body of work and no reason to stay or return, so the site leaked the attention it earned.

The fix

I added pillar navigation and contextual links from every article into its theme, plus a single clear newsletter prompt, so a reader who lands on one piece is shown the rest and given a reason to subscribe.

Outcome

The site now has a defined topical structure, an owned audience channel, and an AI-search layer (llms.txt and structured data) built so assistants can find and cite the content. Subscriber and traffic figures: {{AE_SUBSCRIBERS}} and {{AE_TRAFFIC_DELTA}}.

Result metrics are being measured; placeholder tokens above are filled with verified figures before this page goes live.

Want this for your site?

Start with a free audit. I will show you exactly where your current site is losing visibility and conversions.