A full-stack digital kitchen simmering strategy, design, code and AI into websites that pay for themselves — for businesses of any size.
One bowl.
Six ingredients.
Every Catsoup project blends the same six capabilities in different ratios. Start with one, stack the rest when you need them.
Web development,
cooked from scratch.
WordPress, headless CMS, or custom builds. Always responsive, SEO-ready from day one, and shipped with documentation your team can actually use.
SEO & SEM
Google-indexed from day one. Paid and organic tuned together for compound returns.
Social Media
Content calendars, community, paid campaigns. We keep the fire lit so you stay top of feed.
Graphic Design
Brand systems, collateral, visual identity. Design that holds together as you grow.
AI Integrations
Chatbots, smart search, content ops. Practical AI that pays for itself within a quarter.
Hosting & Care
SSL, backups, uptime, monthly tune-ups. Included free for your first year.
Clients we've
cooked for.
5 recent builds. Scroll the panel — every tile is a live project we shipped end-to-end.
Browse all 5 → Three bowls.
Pick your size.
Clear prices up front. Extras stack per page. Upgrade anytime.
Standard
- Responsive WordPress or Webflow or Custom build
- On-page SEO & analytics
- Contact form + basic CMS
- Free hosting · first year
- 30-day post-launch support
Premium
- Everything in Standard
- Custom design system + motion
- Blog, search, newsletter integration
- One AI integration (chat or search)
- 60-day post-launch support
Elite
- Everything in Premium
- Copywriting + photography included
- Headless / custom stack on request
- Two AI integrations
- 90-day care & retainer option
Answers
on the house.
The questions we get every week, on record.
Latest tastings.
Process notes, post-mortems, and launch recaps from the studio. Small plates, not buffets — head to The Sampler for the rest.

Postcards from a Satori OG factory
How we built a per-route OG card system for catsoupmedia.com — Satori + resvg, hash-deterministic mood cats, two CTA pools per locale, and the JS signed-int bug we hit along the way. Read post


