6.4 KiB
6.4 KiB
Weekly log
One entry per week. The hypothesis and the metric are written before the change ships; the measurement is filled in by the following week's run. A week without a measurement is an unfinished week.
| Week | Date | Change | Hypothesis | Metric watched | Expected | Measured | Verdict |
|---|---|---|---|---|---|---|---|
| 0 | 2026-10-24 | Instrumentation: Plausible tag on 1,206 pages, Affiliate Click / Outbound Click custom events, UTM on 479 outbound links, CTA blocks on 6 homepages + 6 hosting hubs, weekly loop installed |
Without measurement every change is a guess | all | baseline established | n/a (setup) | keep |
| 1 | 2026-10-24 | .agents/product-marketing.md (d82af02): ICP, pains, objections, proof policy, positioning — the source of truth every later week reads |
Copy decisions were being re-litigated weekly; without fixed positioning each change invents its own | none (enabler); guardrail = no ranking loss | no regression | pending (week 2 run) | keep |
| 2 | 2026-10-24 | 2e0882d: removed the 3 invented testimonials, the ISO 27001 / SOC 2 trust badges and the placeholder phone from the 6 homepages |
Invented proof is an E-E-A-T and legal liability, and it undermines the affiliate pitch it sits next to | GSC impressions on / and the locale homes (guardrail: must not fall); Plausible outbound CTR |
no ranking gain assumed; risk removed | pending (Friday run) | keep |
| 3 | 2026-10-24 | 2e0882d: titles + descriptions rewritten on 3 pages covering 6 of the 17 page-1 zero-click queries (¿De dónde es Odoo?, Odoo en Honduras: facturación DEI, Odoo IA: qué automatiza) |
Those queries already rank page 1 and earn 0 clicks; the snippets were machine slug-dumps with a - <slug> | ES artifact eating half the description |
CTR on those queries, currently 0.00% | 0.19% site-wide CTR → 1%+ as the rewritten pages cycle through the SERP | pending (needs 2-4 weeks for GSC to re-crawl and re-rank) | keep |
| 4 | 2026-10-24 | 582a93e: broken internal links 1,370 → 0; empty PT page removed with its sitemap block and hreflang alternates; 23 relative canonicals made absolute and 62 duplicate canonicals removed; EN homepage title/description/H1 aligned to odoo experts |
1,370 dead ends wasted crawl paths and dropped readers on 404s; a relative canonical resolves to whichever host served the page, and apex and www both answer 200 | broken_internal_count, no_canonical, canonical_not_www in audit_site.py; position + CTR for odoo experts (75 impr @ 13.7, 0 clicks) |
audit counts at 0; brand query into page 1 | audit re-run: 0 broken, 0 relative, 1 page without canonical (404.html, deliberate) | keep |
| 5 | 2026-10-24 | a52f0f6: reworked /odoo/empresa-odoo-historia-fundacion-2025/ — intent-led head (Es belga, y así se usa en LATAM), an "Odoo en 30 segundos" fact block above the fold, a LATAM localisation section and a São Paulo CTA to the host |
6 queries (~400 impressions, positions 4.5-7.7) earn zero clicks: the snippet sold company history while the searcher is asking whether Odoo works where they live | CTR and clicks on de donde es odoo, odoo de donde es, odoo origen, odoo de que pais es, quien creo odoo, odoo de donde es originario; affiliate clicks on the page |
CTR 0% → 2%+ on those queries; first affiliate clicks traceable via utm_campaign=empresa-odoo-historia | pending (GSC needs 2-4 weeks to re-crawl; affiliate clicks unmeasurable until the Plausible goals exist) | keep |
| 6 | 2026-10-24 | dd4ead2: /odoo-ia/ rebuilt as a guide (intent H1, three routes nativo/integración/fuera, five curated entry points, FAQ + FAQPage schema, hub CTA); site-wide fix for 1,714 document.write(null) blocks on 840 pages that replaced the header/footer with the literal text "null" |
The hub ranked 6.8 for odo ia with 0 clicks on 279 impressions and answered nothing above the fold — a link directory, not an answer. Separately, a page with no navigation is a dead end for readers and crawl depth |
CTR and clicks on odo ia + variants; affiliate clicks from utm_campaign=odoo-ia-hub; crawl depth on the 840 repaired pages |
CTR 0% → 2%+ on those queries; nav restored site-wide | pending (GSC 2-4 weeks) | keep |
| 7 | 2026-10-24 | ebb21f2: /odoo-ia/ aimed at the ranking itself — definition block, six use cases with links, ItemList schema, and a body link from /odoo-hosting/ to the hub |
The page ranked 6.8 for odo ia but never defined the term; a directory of links gives Google no reason to lift it above the articles it points to. Internal linking was measured first and was already sound (162 inbound, 252 anchors "Odoo IA") |
position for odo ia, odo ia-variant impressions, CTR once position improves |
6.8 → top 3; CTR > 2% | pending (GSC 4-6 weeks for a hub-page move) | keep |
| 8 | 2026-10-24 | e3883d5: six 2027 country pages (Bolivia, Honduras, Guatemala, Chile, México, Paraguay) built on verified localisation facts, plus the page-dimension rollups now in every stats pull |
The site already ranks page 1 for odoo bolivia (8.4, 3 clicks) and odoo honduras (9.4, 0 clicks) with thin 2025 pages — the lever is depth, not position. Country demand was measured before choosing which six |
CTR and clicks on odoo bolivia, odoo honduras, the Guatemala cluster; affiliate clicks from utm_campaign=country-2027 |
2025 pages (position 8-9, 0-3 clicks) → 2027 pages earning clicks; first affiliate clicks from country traffic | pending (GSC 4-6 weeks) | keep |
| 9 | 2026-10-24 | 9fff72d: rewrote the page that actually owns odo ia — honest head dated 2027, three-layer definition replacing the 'asistente superinteligente' opening, and the affiliate CTA it never had |
434 impressions at 7.8 with 0 clicks, and it is the site's second-largest impression page; the snippet was a slug dump and the copy sold a fantasy instead of answering | CTR on the 6 queries the page owns (odo ia 251, odoo ia 67, .odo ia 59, ,odo ia 33, ia odoo 23); affiliate clicks from utm_campaign=que-es-odoo-ia |
CTR 0% → 2%+; first attributable clicks from IA traffic | pending (GSC 2-4 weeks) | keep |
Entry template
### Week N — YYYY-MM-DD
**Shipped:** <what changed, with commit hash>
**Hypothesis:** <why this should move a number>
**Metric:** <the one number that decides>
**Expected:** <direction and rough size>
**Measured (week N+1):** <actual, from growth_week.py>
**Verdict:** keep / revert / adjust — and why
**Next:** <carried into the following week>