Designing and hand-coding a podcast-first agency's website inside Squarespace — built so the founder can run it herself.
View Larj Media Site ↗Larj Media is an award-winning, sister-run podcast agency (since 2011) whose clients include Microsoft and the Gates Foundation. I owned everything after strategy: the visual system, every page layout, and the custom code that makes Squarespace do things it normally can't.
In my first meeting with the founders, they described a site "clogged up" with information. Four problems kept coming up.
It wasn't reaching the clients they wanted: brands, foundations, and comms leaders.
Visitors couldn't tell what a "podcast-first creative agency" does, or why it's different.
New services had nowhere to live. The business was growing faster than the site.
An audio agency still needs to show visual brand craft. The old site hid it.
The founder would maintain the site herself after launch — and she already found Squarespace limiting.
Started as a UW Communication Leadership engagement with content strategist Josiah Scott, then continued as a paid contract where I led design and build.
Design ran in weekly cycles with the founders, content strategist, and advisor. Build ran page by page in Squarespace.
1:1s with founders, strategist, and advisor. Squarespace data report. Sitemap feedback.
Brand story Q&A with the founders: "thoughtful, strategic, calm." Mood board in 2 directions.
Three Services page layouts (V1–V3), with written trade-offs for each.
Every color pairing tested for WCAG contrast before it went into the system.
The first sample design felt "stationary and academic." I rebuilt the look as "Fresh & Bright."
Paid contract. Every page coded and built in Squarespace, with weekly reviews.
Live on larjmedia.com. Editing guides for the founder.
In sitemap reviews, I pushed for changes that put proof and action in front of the visitor.
The founders described the brand as "thoughtful, strategic, calm" and "grounded and confident." I turned that into two mood board directions in Larj's existing colors.
"Turn the mood board into directions for the website." So I moved from mood boards to a digital brand guide and real sample sections.
Services had six offerings, each with a price, audience, and long checklist. I tested how much to show at once, and wrote down the trade-offs for the client.
Fast to scan. But "View details" hid what each service includes.
Room for detail. Slows readers down for high-ticket services.
Easy to compare prices. But cards got very long and uneven.
Rows support a Z-pattern for reading depth. Cards support an F-pattern for comparison. For services starting at $18K, depth won.
My first sample design used the original brand guide: script accents, Cormorant Garamond, and lots of ivory. It was clean, but it didn't feel like Larj.
"Style feels stationary and academic. Add more colors to brighten it up."
Tina, founder"Font size 16 minimum. Garamond feels old and traditional. Make Contact Us bigger."
Carrie, advisorI built the system as a living HTML document first, then mapped it into Squarespace Site Styles so native blocks and custom code look like one product.
Click a swatch to copy its hex.
Headlines · 900 / 700 · italic for one key word
Body & UI · 400 / 800 · caps eyebrows
Before any color went into the system, I tested each text / background pair. Pairs that failed were banned, and teal was darkened for text.
For the homepage, I prototyped three directions in code, so the founders could react to real, scrollable pages instead of static frames.
Three-column hero, magazine rhythm.
Kept: hero layoutHard borders, color blocks, soundwaves.
Kept: section structureSoft forms, warm cream backgrounds.
Kept: warm cream toneThe final homepage combines the editorial hero, the bold section structure, and the warm palette. Then I stripped the hero back to approved copy only — eyebrow, headline, subtitle, one CTA — because every extra element competed with the message.
My first stack hid the red card's text behind the gold one. I tested a hover fan-out, but it buried key facts behind an interaction. Final call: re-position all three so every fact is readable at rest.
Number + title, description, "Ideal for" + CTA. Each service gets its own accent from the system, so the page scans fast but still feels like one family. Pricing was removed at the client's request, but the structure can bring it back in one line.
Squarespace templates couldn't produce the design. Moving platforms would leave the client unable to maintain it. So I split the site into two layers.
/* ========================================== EDIT CONTENT HERE ONLY (Tina) One { week, title } per row. ========================================== */ var schedule = [ { week: 1, title: "…" }, { week: 2, title: "Podcast First Planning" }, ]; /* ======== END OF EDITABLE ======== */ // Responsive: JS class toggle, not @media function fit() { root.classList.toggle("is-mobile", window.innerWidth <= 768); } window.addEventListener("resize", fit);
@media queries broke inside Code Blocks.FixA tiny JS check toggles .is-mobile at 768px.::before on data-section-id..lm-card-01.Early on, I proposed prototyping in code instead of only in Figma, and the founders agreed. I used Claude as a pair programmer. That let one designer ship what usually takes a designer plus a developer — because I built a process around it.
Approved copy, tokens, page goal
AI builds an HTML prototype
Check system, copy, accessibility
Into Squarespace, desktop + mobile
Targeted edits from feedback
An early AI draft invented stats and copy the client never approved. I caught it and made a hard rule: source copy only, and any UI text I add gets labeled for review.
Tokens, naming, platform quirks, and "no images in code" live in one conventions doc, so every session starts from the same rules.
Every component keeps content in one config block at the top. Changing words never touches structure.
When a missing comma from a client edit blanked the schedule, I fixed it live and added a step: check the script is valid before every save.
AI made me faster. The design system, the rules, and the review made it good.
The founders asked for "thoughtful, strategic, calm" — not fancy animation. So I kept motion small and purposeful: things should feel on air, and everything must work without it. Try the demos.
Content arrives in reading order, so the eye follows the hierarchy.
A looping waveform and an "On Air" pulse say "audio" without words.
The prototype revealed the accent bar on hover. The client asked to drop hover effects, so it became always visible.
If a fact only appears on hover, mobile users never see it. Every card works fully at rest.
On Our Work, hovering or tapping a host's photo reveals their name and show.
Motion is enhancement only. With "reduce motion" on, this page falls back to static states.
Bounce rate dropped from 97% to 55%. And success wasn't just a launch — it was the client making changes without calling me.
Copy, schedules, and testimonials live in labeled config blocks. Galleries and new show sections use native Squarespace.
Step-by-step guides with annotated screenshots, like adding a new show while keeping the section color rhythm.
New pages like the Jumpstart Cohort were built from existing components and tokens.
A beautiful site fails if the client can't update it. "Who edits this next month?" shaped every component.
Squarespace's limits pushed me into a cleaner architecture than a blank canvas would have.
Speed came from AI. Quality came from tokens, rules, and review.