The traffic arrives.The revenue doesn’t follow.
This page is the first piece of evidence in the argument. Its own load time is printed at the bottom, measured under the same throttling as every other number here.
You have the audience. The articles are there, the sessions are there, and the number at the end of the month is still lower than the traffic says it should be. Nobody can tell you exactly why, so it gets filed as the going rate for your niche.
The platform underneath it is the part nobody wants to touch. The developer who understood it has moved on, the plugin stack has been load-bearing for years, and every quote to rebuild comes back high enough to defer the decision one more quarter.
So the redesign gets deferred again, and the platform keeps making a revenue decision on your behalf every day it stays up.
02 / WHO IS TALKING
We’re publishers.We built this for ourselves first.
Every figure on this page comes from our own properties, measured 2026-09-12, with the method stated beside it.
BrandFactory LLC runs its own media properties. We hit the publishing cadence, we pay for the hosting, and we carry the consequences of every platform decision we make — because we make them on our own sites, not on a client’s.
We rebuilt our properties off legacy WordPress onto a stack we designed and still maintain. Then other publishers started asking who ran it. That is the whole origin of this: infrastructure built for our own network, now run for other people’s.
Which means you are not about to be told how publishing works by someone who read about it. Everything below was measured on our own domains, and the URLs are clickable so you can check the ones you care about.
03 / THE NETWORK, COUNTED
Four content properties.Three of them publish.
Counted on 2026-09-12 from the public sitemaps — the same XML files anyone can open in a browser tab.
- 8,864articlesCounted from the public sitemaps of the four content properties, 2026-09-12.
- 3.2articles per dayMeasured 2026-08-13 → 2026-09-12 across our two daily-publishing properties.
- 4content propertiesThree publishing daily. One held back on WordPress as the control.
| Property | Platform | Articles | Cadence | Status |
|---|---|---|---|---|
| trendingamerican.com | Next.js + Payload | 5,598 | 2.1 articles/day | Live, largest by volume |
| geeksaroundglobe.com | Next.js + Payload | 2,791 | 1.1 articles/day | Live |
| lifeatdubai.com | Next.js + Payload | 378 | Evergreen guides + dated news | Live |
| doctorsaroundglobe.com | WordPress | 97 | Frozen 2025-02-20 — on purpose | The control group |
Article counts from public sitemap XML; cadence from publish dates over a 30-day window, 2026-08-13 → 2026-09-12.
Every number on this page is one you can reproduce yourself in about ten minutes — open the sitemaps and count. We publish the figures that survive that test, which is why you will find article counts and publishing cadence here rather than an audience number nobody can check.
04 / THE INVISIBLE TAX
Your platform was chosen as a publishing decision.It charges you as a revenue decision.
Nobody picks a CMS thinking about revenue. You pick it for the editors, the plugins, the workflow, and what the last developer knew. That choice then runs for years, and it is not neutral for a single day of them.
The mechanism is concrete. Page weight decides how long the browser spends on your markup before ad code gets a turn at the network. Layout shift decides how many of your units render before the page moves under the reader’s thumb — and a slot that arrives after the jump is either wasted or never counted. Those two numbers, together, set how many of your ad slots actually fill on a mid-range phone on a mobile connection, which is where most of your traffic already is.
The same two numbers decide which demand you are allowed near at all. Premium networks measure them when you apply and keep measuring them while you are on the platform; falling short is a rejection or a quiet downgrade, not a warning email. Everything you can’t qualify for is demand that never bids on your inventory.
None of that appears on an invoice. It appears as a revenue line lower than your traffic says it should be, and it reads like the going rate for your category. It isn’t the category. It’s the platform, and it has been billing you quietly since the day it was installed.
We measured the mechanism on two of our own properties — one migrated, one still on WordPress. Both tables are further down, same test, same device, same day.
05 / THE STACK
One system.Six layers that only work together.
Not a menu of six products with six invoices. The layers share a runtime, a database and one deployment path, which is the only reason a small team can run this much of it.
- 01
Infrastructure
The servers, the web tier, the process supervision and the databases. Versions are published below, because versions are checkable and adjectives are not.
- 02
Migration
Your archive moves — posts, taxonomies, media, redirects and URL structure — off the legacy platform onto the same stack our own properties run on.
- 03
Production
The daily publishing work: drafting, structuring, images, scheduling. Measured as cadence, not as hours, because cadence is what shows up in your sitemap.
- 04
Design
Templates built against a page-weight budget before they are built against a mood board. Every image sized, nothing that reserves no space.
- 05
Monetisation
Ad operations that sit inside the same build rather than being pasted on top of it, so the cost of the ad code is visible in the same measurement as the page.
- 06
Operations
Deploys, uptime, restarts, backups and the boring recurring maintenance that decides whether any of the above is still true in six months.
Read off the host, 2026-09-12
- Runtime
- Node 22.23.1
- CMS
- Payload 3, across 38 applications
- Database
- PostgreSQL 18.2, 120 application databases
- Also in production
- SQLite, backing two live applications
- Web tier
- nginx 1.29.5
- Supervision
- PM2, 118 processes — zero restarts on all but two
- Host uptime
- 35 days at the time of reading
Those numbers were read directly off the machine on 2026-09-12, not copied from a capabilities deck. We publish version numbers because a publisher’s own developer can check every one of them in a minute.
Single read-only shell session on the production host, 2026-09-12. Version strings, process table and database list, unedited.
The reason one team can run a stack this size is that the repetitive part of the work — mapping a legacy archive onto a new schema, structuring content, the first pass at production — is done by models working to a fixed spec with a human reviewing the output.
That is not the product, and it is not what you are buying. It is the answer to the question you are about to ask, which is how the price can be what it is.
06 / THE ONE WE LEFT BEHIND
We ran the experiment on ourselves,
and we kept a control group.
We kept one property back. doctorsaroundglobe.com is still on WordPress and has not been touched since 2025-02-20 — the control group, left exactly as it was so the comparison below means something.
Here is the part we could have left off this page. It is the only property in our network currently serving ads — Google AdSense, confirmed firing at runtime on both the homepage and an article page on 2026-09-12. The control group is the only one earning.
And the ad code is a measurable part of why it is unusable. The four heaviest resources on that page are Google ad scripts, and its largest contentful paint swings between 4.7 and 11.4 seconds depending on which of them arrive in a given load. The thing making the money is a large share of what makes the page intolerable to read.
07 / THE MEASUREMENT
Same test. Same device. Same day.
Chromium under Playwright, 390×844 at DPR 2, mobile user agent, network throttled to 1.6 Mbps down / 750 kbps up / 150 ms round trip, CPU throttled 4×. Fresh browser context per run, measured 2026-09-12 from a single location in Sri Lanka. These are lab numbers from one vantage point, not Google’s field data, and we label them that way rather than calling them Core Web Vitals.
| trendingamerican.com ↗ | doctorsaroundglobe.com ↗ | ||
|---|---|---|---|
| Largest contentful paint | 1,136 ms | 4.7–11.4 s, unstable run to run | 4.1–10× faster |
| Transferred | 469 KB | 1,176 KB | 2.5× lighter |
| Requests | 28 | 80 | 2.9× fewer |
| Cumulative layout shift | 0.143 | 0.138 |
The WordPress site’s paint is unstable run to run because its ad scripts load inconsistently — four observations came back at 4.7, 4.8, 6.4 and 11.4 seconds. That is why the range is the figure in the table rather than one tidy number, and why the multiplier beside it is a range too: the low end is computed against its fastest observation and the high end against its slowest. Its layout shift, by contrast, reproduced at 0.1375, 0.1376 and 0.1377, so that one is quoted as a single value.
We publish the whole table, including the row that is not flattering: layout shift reads 0.143 on the migrated site against 0.138 on the WordPress one. We traced it to a single placeholder rendering without a reserved height, it is being fixed, and this table gets republished with the date when it lands. A vendor who only shows you the winning rows is showing you a brochure.
We are showing you this because the whole argument fits inside one domain. Ad code on an unoptimised platform is not free revenue. It has a price, it is paid in the same page that has to render it, and the only way to know what it is costing you is to measure the page with the ads on it and again with them off.
WordPress REST API (97 posts, newest 2025-02-20), public sitemap, and a headless-browser network capture of the live page. All 2026-09-12.
08 / WHAT HAPPENS NEXT
Migration, hosting, production and monetisation.One system, one team.
Your archive moves. The platform underneath it becomes ours to run. Production and ad operations sit inside the same build instead of being bolted on through four vendors and a coordinator. One contract, one number to call, one place where the page weight is somebody’s actual job.
We price it against what it produces, because that is how we are paid on our own properties too.
You will not find a revenue-lift percentage on this page. Every figure here is one you can re-run yourself this afternoon, and we hold the numbers we give you to that same standard — which is exactly what you should expect from the people who will be measuring your site.
So the first step is a measurement, not a proposal
A migration teardown of your site
Send the URL. You get back, in writing: what your current platform costs you in page weight and layout shift, which of your ad slots that affects, what moving the archive would actually involve, and what it would cost. Same method we published above, run on your property, with the numbers and the date on it.
Or a like-for-like comparison
We measure your property and one of ours under identical throttling on the same day, and send you both tables — including any row where yours wins, the way we printed ours above. You can re-run the whole thing yourself with an open-source tool.
Then you decide with two measurements in front of you instead of a quote and a feeling.
