issue 001  //  09.08.2026  //  16:04 theme  //  snd: off
menu
homepage / 002 ux + product / Square website refresh / world model02 / 07

Square website refresh / world model

NDA
the images on this page are under NDA.if you have the password, you know what to do.
Square · design engineering · March to October 2026

Square website refresh and world model

Square's design team wanted a marketing site that builds its own pages for each visitor. i built the world model that holds what Square says about its products, then built the new page components in Square's production code.

production build of a new features page, before launch
roledesign engineer
skillssystems design · LLM pipelines · data visualization · front-end engineering
stackPython · Claude + GPT · Postgres · MCP · Svelte
teamme, an advisor, two Square Growth designers, and two engineers
timelineMarch to October 2026
the problem

squareup.com is thousands of pages, each edited by hand in a CMS for every product, region, and language. the design team wanted a few dozen components that fill in their own content for each visitor.

the work

i built the world model myself, with an advisor: an LLM pipeline and a dashboard that turn every page and email into facts with sources. then i built the new page components in Svelte from the designers' prototype.

the outcome

Square Growth Design uses the model to fill their prototypes with real content instead of copying it in by hand. the new components are merged and waiting on launch.

the designers wanted to stop editing hundreds of pages by hand for every launch, and spend that time designing.what the team asked for
chapter 01the world model
first findings01
01rates differ by countrycard processing is 2.6% + 10¢ in the US, 1.6% in Australia and 1.75% in the UK. a model writing from memory can mix them up.
02translation gaps98 Spanish pages still had English buttons.
03scattered factsthe right answers were on the live site, but spread across 3,046 pages and 988 emails, with nothing structured an agent could check.
the pipeline02

i built a pipeline that goes from the sitemap to facts any agent can look up.

01crawl3,046 web pages and 988 lifecycle emails
02extractGPT and Claude read the same pages: GPT for breadth, Claude for tagging
03mergefacts both models found get higher confidence, and disagreements are flagged
04cite and auditeach fact keeps up to five quotes from its source, checked against the live site
05servean MCP server (the standard way AI agents call tools) with seven tools
the graph view in the dashboard: entities colored by type and linked across pages
internal tool · dashboard

the graph view

every product, feature, price, call to action, and testimonial on the site, and the pages each one shows up on.

feedback from Growth Design03

Growth Design tested the model by filling their prototypes with it, and told me where it was wrong.

the feedbackthe fix
pricingprices and rates came out wrongpricing and legal disclaimers now come from their own source. the model holds variables that get filled from it, so those never depend on extraction.
other countriesweak on non-US, non-English pagesi tried different versions of GPT and Claude, alone and combined. combining them worked best: GPT caught more content and Claude tagged it correctly.
accuracythey needed to know it was rightevery fact keeps up to five quotes from its source, audits check them, and i wrote a plan for keeping it accurate.
accuracy04
01two modelsGPT picked up more units of content and Claude tagged them more accurately, so the pipeline runs both and merges the results. 4,245 facts were found by both.
02citationseach fact keeps up to five verbatim quotes with urls, so an agent can show where it came from.
03audits98.9% of 9,845 email citations checked out, and 91.5% of a sample from the live site. failures keep their reason.
04the email testAI-drafted emails written with the model had critical errors 16.7% of the time, down from 87.5% without it.
the dashboard overview, with my notes in red
internal tool · dashboard

the overview

this shows where the model fits: it feeds generated content, an adaptive layer picks content for each visitor, and a chat assistant sits on top.

coverage and translation gaps
internal tool · dashboard

coverage

empty cells get an outline, so a missing Spanish page is as easy to spot as a finished one. my notes mark where extraction still needed work.

chapter 02the components
stills from the new visual direction
design reference · by the two growth designers

the visual direction

the designers set the look: simple tiles for checkout, invoices, and QR pay inside bold product sections.

the designers' prototype of the features page
the designers' prototype

the features page prototype

i rebuilt it section by section as content-managed Svelte components in Square's web renderer.

  1. 01foundations: the shared base styles every section uses
  2. 02sections: pricing, hardware showcase, feature catalog, feature showcase
  3. 03personalization: a business lookup that picks the heading and features
  4. 04routing between product pages
the build05
01one component per preach section went in as its own code change, so reviews stayed small.
02checked against the prototypeat desktop and mobile widths before each review.
03content-managedsections pull their copy from the CMS.
04personalizedthe features section changes for the business a visitor searches for.
production build of the features page after a search for a restaurant
production build

the personalized features page

after someone searches for their business, the heading and cards change to match it. this one is for a restaurant. the default version is at the top of the page.

who used it06
01Square Growth Designtwo or three designers filled their component prototypes with real content from the model. they stopped copying content in by hand.
02Cash Apptwo people tried it on lifecycle emails, where Cash App does most of its marketing.
03afterpayone person started trying it before i left.
04Square firstwe decided to get it working end to end on Square before taking it to other brands.
by the numbers07
25,427facts, each with source quotes
7component prs merged before launch
what i learned08

this was my first time designing a system instead of screens.

most of it was new to me: scraping this much data, deciding where to host it, early prototypes with the data baked in, and later ones on Postgres that updated live. accuracy mattered most. i kept a last known good build, ran regression checks, cited every fact so it could be traced back, checked facts against their sources, and started trying Langfuse for tracing. i did most of it myself with advisors, and i really enjoyed it.

open source·

sitemapper ↗ is a personal project that uses the same approach: crawl a site, extract entities, and build a model you can query.

← homepage  //  002 ux + product © 2026 Naeema :)