Codetribe - Building Marketing Independence Into a Redesign

Codetribe was turning 10. The new site had to be ready and the dev team was buried in client work.

That's the position that Codetribe - a software engineering company with a decade of work behind them - was in when they brought me on. They'd just commissioned a beautiful visual identity and website redesign to mark their 10th anniversary. The design was excellent. The problem was getting it live in short notice.

Their engineering team was committed to client projects. Marketing and growth, the people who actually needed the new site, were stuck waiting on a dev queue that wasn't going to clear before the deadline. This is the bottleneck I see constantly: the website is a marketing asset, but it's held back by engineering availability.

So the first thing we did was reject the all-or-nothing launch.

Phase the launch

Instead of waiting for a complete site, we launched in phases - got the essential pages live, made the site public, then kept adding structure in bulk behind it. Marketing got a live anniversary site on time and we continued building the depth after. Nobody waited on a single monolithic handoff.

That decision set the tone for the rest of the project: keep the marketing team unblocked, solve the hard problems quietly underneath. But that wasn't everything...

The video issue nobody expected

Codetribe's homepage needed to feature a lot of case studies, and many of those case studies led with video and animated content. Two problems collided immediately:

1. Webflow's CMS doesn't natively host video. There was no built-in way to attach these videos to the case study records.‍

2. Too much video and animation tanks page speed, which directly damages SEO rankings. Loading a homepage full of heavy media the naive way would have meant trading visibility for visual polish.

Most devs solve this by dumping everything onto a third-party video hosting provider and accepting the load cost, or by cutting the video quality. I didn't want to do either.

Instead, I created a separate, non-public page, loaded all the case study videos onto it as static assets, and published it on the dev domain.

Non-public page with video assets
Non-public page with video assets

‍

With the videos now effectively hosted on the site itself, I pulled their direct URLs in both WebM and MP4 as a fallback...

‍

Video files URLs
Video files URLs

...and stored those URLs in custom fields on each case study CMS item.

‍

Custom CMS fields with hosted video URLs
Custom CMS fields with hosted video URLs

‍

On the front end, a custom code embed in the CMS collection item reads those fields and renders the video, behaving like a background-video element, but for CMS items, otherwise not supported natively in Webflow.

‍

Little piece of custom code with connected assets, that does the magic
Little piece of custom code with connected assets, that does the magic

‍

The WebM-first approach kept load times fast; the MP4 fallback kept it universally compatible. The videos were hosted on the site's own infrastructure, the CMS stayed manageable, and the SEO didn't suffer for the sake of the design. Both problems, solved with one mechanism.

‍

Page Speed Insights Mobile
Page Speed Insights Mobile
Page Speed Insights Desktop
Page Speed Insights Desktop

‍

These are the details that don't show up in a screenshot but decide whether a site feels finished or broken.

The Our Work page needed filtering. I used the well-known Finsweet Components List Filter as the foundation. But getting both the functionality and the aesthetics right took custom work on top of it.

One bug persisted in particular: the moment a filter was applied, the remaining videos and animations froze. Filtering re-renders the list, and the autoplaying background videos didn't survive the transition. So I wrote a routine that re-initializes and restarts video playback every time the filter updates, the list paginates, or the tab regains focus, so the page stays alive no matter how the visitor slices it.

‍

Custom code for restarting video playback
Custom code for restarting video playback

‍

‍

Built to be found and cited

A site can't be a growth engine if AI can't read it. So alongside the build, I made Codetribe's pages legible to the systems that increasingly decide what gets surfaced and cited.

‍

Schema Markup
Schema Markup

‍

Every page got structured data (schema), AND validated too, because schema that doesn't pass validation does nothing. Structured data is what lets search engines and AI models actually understand what a page is, rather than guessing from raw text. It's the single highest-leverage technical move for AI visibility at the moment.

‍

Validated schema
Validated schema

‍

Robots.txt is the one file these AI crawlers actually honor in practice, and it's the real lever for controlling how they access the site.

‍

Robots.txt - because AI needs the roadmap
Robots.txt - because AI needs the roadmap

‍

I'll be straight about this one: as of today, the major AI engines don't meaningfully read llms.txt yet. It's a proposed convention, not an adopted standard. I added it deliberately as a forward bet. It's cheap to ship, it costs nothing, and if AI agents do start routing on it, which is the direction the ecosystem is leaning - Codetribe is already positioned for it instead of scrambling later. Place your low-cost bet early!

Handing over the keys

The technical problems were mine to solve. But the real, long-term goal, that comes after the launch was making sure Codetribe's marketing team never had to wait on engineering again.

So I built them a system of editable, drag-and-drop components: modular blocks the marketing team could assemble into a new landing page themselves, in an afternoon, without a dev ticket. New campaign page, new case study, content edits — what used to mean filing a request and waiting in the engineering queue became something they just did.

‍

Drag-n-drop component system
Drag-n-drop component system...

‍

Then I made sure they could actually use it. I onboarded the marketing stakeholders directly and walked them through the system, so the handoff wasn't a set of files nobody understood, but rather a working capability the team owned. A component library nobody knows how to operate is just a prettier bottleneck. The point was independence, and independence only counts if the people who need it can use it without me.

‍

...that is easy to edit and publish.
...that is easy to edit and publish.

‍

That's the shift that mattered most: the website stopped being something the dev team maintains and became something the growth team operates.

The takeaway

The deliverable was a website. The actual job was making sure a marketing team could launch on time, rank well, and run the site themselves afterward - without a single engineering ticket.

A website should leave the marketing team more independent than it found them, not more dependent on whoever built it. That's what a growth engine is: not a brochure you file requests against, but a system the people closest to the market can operate at their own speed.

Check out the live website here.

Jane Doe

Nataša Miloščin

Head of Growth

, 

Codetribe

The way Dejan and his team always showed up, down to the last detail, made our collaboration feel like working with someone who genuinely cares about the outcome, not just the delivery. I had the pleasure of working with them on the project, and honestly, they set the bar high. Thorough, proactive, and always one step ahead, exactly the kind of partners you hope to find and rarely do. Can't wait to see what's next. Knowing how they operate, it's going to be something worth watching.

Nataša Miloščin

Head of Growth

, 

Codetribe

Jane Doe

Jasmina Tomašević

Marketing Manager

, 

Codetribe

I cannot recommend Dejan enough. He is a true Webflow master who helped us bridge the gap between design and a live, functional site seamlessly. His communication is flawless, and his ability to meet (and beat) deadlines is rare. What I loved most was that he didn't just 'do the work', he looked out for our long-term success. He integrated tools that made our lives easier and provided me with step-by-step tutorials so I could handle changes myself. He is a consultant and an educator as much as he is a developer.

Jasmina Tomašević

Marketing Manager

, 

Codetribe