Pulley Labs — a web design and build studio
Small sites that carry more than they look like they should.
Static HTML, with no framework runtime to boot. Contrast measured against AA rather than eyeballed, and every page readable with JavaScript off.

- 0 KB
- of framework JavaScript reaches your browser
- 17.2:1
- contrast on body text, where AA asks for 4.5:1
- 0
- cookies set, which is why nothing asked you to accept any
What we do
Design, build, hand over.
One offering, scoped in writing before anything is built. It is narrow on purpose: a studio that claims everything has specialised in nothing.
Design
Structure before surface. What the page has to do, who lands on it, what they need to decide.
- Site structure
- Visual system
- Copy hierarchy
Build
Static first, so the page is a file rather than a program that has to run before anything appears.
- Hand-written HTML
- No framework runtime
- Real content
Hardening
A strict policy from the first commit, so a third-party script added later has to be a decision somebody makes.
- Content-Security-Policy
- Response headers
- Verified forms
Handover
The repository, the hosting and the domain move to you, with a written record of every decision.
- Repo transfer
- Written README
- Thirty days of fixes
How a project runs
Four stages, all visible.
A fixed scope and a fixed price, agreed before anything is built. You see the work as it happens, so there is nothing to reveal at the end. Timings are typical for a small site and are agreed per project.
Scope
A call, then a written scope: the pages, the features, what is explicitly not included, and a fixed price. If the scope is wrong, this is the cheapest possible place to find out.
Week one
Design
Designed in the browser rather than in a static mockup, so what you review is the real thing at real widths. Changes happen while they are still cheap.
Weeks one to three
Build
Content, forms, metadata, performance and the accessibility pass. Deployed to a preview URL from the first week, so there is never a reveal at the end.
Weeks two to five
Handover
Transfer of the repository, hosting and domain, a written README, a recorded walkthrough, and thirty days to find anything that was missed.
Final week
Proof
No client logos. This page instead.
A new studio asking you to take its standards on trust is asking a lot. Every figure here is true of the page you are reading, and you can check all of them in a minute.

- 0 KB
- React reaches your browser. It renders at build time and never ships.
- 1
- inline script on the whole site, allowed by its hash. A build fails if it drifts.
- 17.2:1
- contrast on body text. AA asks for 4.5:1.
- 0
- cookies set, which is why nothing asked you to accept any.
- 6
- response headers sent on every route, listed in full below.
The headers this page was served with
Read from the response your browser received a moment ago, not from a screenshot. Every site we build is handed over configured this way.
content-security-policy: default-src 'self'; script-src 'self' 'sha256-nBHdSgxP97BbONHl5eJBoLWuDihotU1HsdIdMoxu0wA=' https://challenges.cloudflare.com https://static.cloudflareinsights.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data:; media-src 'self'; connect-src 'self' https://cloudflareinsights.com; form-action 'self'; frame-src https://challenges.cloudflare.com; object-src 'none'; worker-src 'self'; manifest-src 'self'; base-uri 'self'; frame-ancestors 'none'; upgrade-insecure-requests
strict-transport-security: max-age=63072000; includeSubDomains
x-content-type-options: nosniff
x-frame-options: DENY
referrer-policy: strict-origin-when-cross-origin
cross-origin-opener-policy: same-origin
Showing the policy committed in this site’s repository.
Handover
What you own afterwards.
A site you cannot edit, move or understand is not an asset. None of this depends on us still being around.
| Item | What it is | When | Owned by |
|---|---|---|---|
| The repository | At handover | You | |
| Hosting | At handover | You | |
| The domain | At handover | You | |
| A written README | At handover | You | |
| A recorded walkthrough | At handover | You | |
| Thirty days of fixes | After launch | Us |
What needs building?
You will get a straight answer within two business days: whether it is a fit, what it would involve, and roughly what it would cost. If it is not a fit, we say so.