← All case files

Case file 016Content hub

The problem

“We run four websites. Changing one testimonial means asking a developer to redeploy.”

Solved

For
12Monday’s websites: 12Bot, 12Pilot, 12Commerce and 12Monday
Built
12 Admin: the content hub, its public API and a lead router
Stack
Next.js admin · Express API · MongoDB · S3 with signed links
Result
Metric to confirm
Before: the change waits for a developer, the leads wait for anyone3D pixel film · made by me

01 · The pain

Four websites, and every change goes through a developer.

  • Four websites, each with its own copy of the blog, the FAQs and the testimonials.
  • One new testimonial and a developer has to edit code and redeploy.
  • A lead from a form lands in an inbox, and whoever sees it first maybe calls back.

02 · The fix

Every lead finds an owner, and only one.

The hub’s lead router, played by hand with the real rules and sample people. Let offers expire and watch the lead move on, or make two people accept at the same moment.

Team · 12Pilot

  • SanaOffered
  • BilalOffered

Community · verified, available

  • Ayesha online—
  • Hamza online—
  • Mariam online—
  • Zain offline—

Lead #1 · with the team

  1. Lead #1 arrives from the 12Pilot site. Offered to the whole team (3 h).

03 · How it works

One hub, four sites, one owner per lead.

  1. One admin for every site

    Blogs, testimonials, FAQs, news, portfolio, roadmap, legal pages, training videos, forms and newsletter sign-ups, all edited in one place by the marketing team.

  2. Each site asks for its own

    A site calls the hub with its product name (12bot, 12pilot, 12commerce or the main site) and gets only its own published content. Drafts never leak out.

  3. Leads get an owner

    Form submissions become leads with a clock on them: the team first, then the community one person at a time, then the team again, until someone owns it.

The hard part

Two people, one lead, the same second.

A lead can be on several screens at once: the whole team sees it, and later the community does. If two people tap Accept together and the app checks first and saves second, both of them win, and the customer gets two calls.

So accepting is one database operation: “mark this lead accepted, but only if it is still open.” The first tap matches and wins. The second finds nothing open and is told the lead is gone. Every other open offer is then closed.

Check, then save → two taps, two owners

Save only if still open → two taps, one owner

04 · What changed

Marketing edits the sites. Developers build them.

Websites fed by the hub
4
Leads routed
—
Time to first contact
—

Also in the hub: community members, events, courses and a referral system. Blanks: metrics to confirm.