Task created 2026-08-21, scheduled the 5th — this is its first fire, so there was no
previous page to grade. Ships as draft PR #19418
(https://github.com/Selectra-Dev/cms/pull/19418), branch
countryos/tn/2026-09-05-content-calculateur-facture-steg, 6 files, 1 commit.
Also confirmed on the way in: PR #18264 (the TN-002 local faq-schema component)
merged 2026-09-02. gh pr list --search "countryos/tn" was empty before this run.
Next seo-audit can now spot-check that /steg/numero-vert emits a live 5-question
FAQPage — the last open item from the 08-31 arc.
The finding that shaped the whole run: every big cluster is already served
I ran the skill's three sources honestly and they came back almost empty of a
non-cannibalising candidate. This site is unusual: its demand is extremely
concentrated, and the pages built before July already sit on all of it. Measured over
2026-08-06 → 09-02 and rejected, each for cannibalisation:
coupures électricité tunisie — 24 053 impr, pos 8,4, the biggest page-two query
on the site. Served by /coupures/tunis, itself split with /coupures/tunis/tunis.
société tunisienne de l'électricité et du gaz (+ the unaccented spelling) —
23 561 impr, 5 clicks, pos 10,2/10,7. Served by /steg. Navigational: steg.com.tn
and Wikipedia own the SERP, the ceiling is genuinely low.
- facture / espace client / paiement — ~9 700 impr at pos 7-9, all on
/steg/facture,
which has a dedicated payment H2 and converts (76 clicks on
paiement facture steg par carte bancaire alone).
palier steg family — 936 impr; /tarifs already takes 738 of them at pos 2,8-6,4.
délestage family — 557 impr, pos ~10, and I nearly picked it: /steg/coupures
covers "que faire" not "pourquoi", and no page is about délestage. But
/coupures/tunis already takes 416 of the 557 impressions. Rejected.
Two standing candidates die on the skill's own rule ("if you cannot point at a
number, it is not a candidate"), and this is worth carrying forward:
- Compteurs intelligents — the August business review ranked it #4 and the skill
lists it first. Real demand over 28 days: 15 impressions. It is also already a
section on
/steg/facture. It is a good story, not a page. Stop proposing it until
a number appears.
- PROSOL / solaire — review's #2. 82 impressions, best position 7,2, most rows
at pos 25-34.
/steg/solaire exists. Same verdict.
The three top-ranked opportunities of the August review (#1 /steg/facture,
#2 /steg/solaire, #3 /steg/coupures) are all rework, not new pages — and
/improve is still blocked by the no-Python constraint (TN-005, rejected). That is
the real structural problem here, and it is now two months old: this site's
remaining upside is almost entirely in improving pages that already rank, and Country
OS has no tool that can do it. Worth a decision entry if a third month passes.
What I shipped instead, and why it is not cannibalisation
/calculateur-facture-steg — the bill simulator. The intent is real and it is ours
already: on /tarifs, the tool wording of the calculation intent (simulateur*,
simulation*, calculer/calcul*, estimation*) draws 1 585 impressions and 21
clicks at positions 8,5-13,6 — simulateur steg alone is 334 impr for 0 clicks.
Meanwhile /tarifs wins the barème intent (tarif steg tunisie 2026 pos 1,6,
167 clicks). None of its winning queries contains a tool word. So this is not a new
page competing with a winning one; it is an intent an explanatory tariff table cannot
serve. 14 clicks at risk, ~1 570 impressions earning nothing.
The blockers that had frozen this since August are all lifted, and I checked rather
than assumed: proposals/calculateur-facture/SPEC.md §2 (the incoherent 250 kWh
example / the 100 kWh switchover rule) was resolved on 08-18/19, and §3 (extract the
barème) is done — departments/tunisia-energy/data/tariffs.php exists with
verified_at. Reading the spec before writing anything saved the whole design; the
one useful lesson of 08-31 ("grep for prior art before building what a decision
authorises") generalises to read the proposal folder too.
No figure was written by hand. Page and JavaScript both read tariffs.php; I added
max_kwh per tranche (restating the bound already in range in machine-readable form —
the skill explicitly allows adding to that file). The arithmetic reproduces exactly
the three anchors the repo records against the official STEG simulator: 250 kWh at
1 / 3 / 4 kVA → 63 448 / 65 114 / 65 947 millimes. Tested with node before committing.
Design choices worth keeping: the scale table is server-rendered (50 → 1 000 kWh),
because the "combien coûtent N kWh" queries — including the Arabic ones — must be
answered in the served HTML, not inside a widget Google will not run. The widget is the
conversion, the table is the ranking.
One thing I deliberately did NOT build, and it is the honest half of the run:
SPEC §4's billed-period multiplier. Whether the RTT and the redevance are charged once
per bill or once per month is documented nowhere I could verify, and multiplying them
would have been a guess dressed as a feature. The simulator computes one month, says so
on the page, and tells the reader to divide a multi-month reading. Flagged in the PR.
One open factual question raised for the reviewer, not resolved: the tranche is
selected on consumption alone, per economic_band_max_kwh => 100, which carries no
power condition — but the barème's puissance column labels the 62/96 bands "1-2 kVA".
What does a 3 kVA subscriber consuming 80 kWh pay? Both verified anchors are at 250 kWh
and do not disambiguate it. If the answer is "the économique band is reserved to ≤ 2 kVA",
the fix belongs in tariffs.php and the widget follows for free.
steg.com.tn: unreachable a second consecutive month
Retried first thing, as the 09-01 entry instructed: curl timed out after 25 s
while google.com returned 200 in the same window. That is now two consecutive months,
which the 09-01 entry itself set as the threshold for escalating from bad luck to a real
dependency risk. It did not block this run — everything shipped derives from figures a
previous run already verified into tariffs.php, which is precisely the value of having
that file — but it will block content-freshness again on 2026-10-01.
A future run should open a decision entry rather than skip-and-flag a third time.
Next run
- Grade this page at merge + 28 days. The criterion is not this page's own traffic:
it is whether the family gained clicks. Baseline to beat: 1 585 impr / 21 clicks
on
/tarifs for the simulateur+calcul+estimation wordings, plus 429 impr / 14 clicks
on كم سعر 1000 كيلو كهرباء في تونس. Watch /tarifs does not lose
comment calculer facture steg tunisie 2026 (pos 4,9) or simulation facture steg 2026
(pos 7,2) — the 14 clicks knowingly put at risk.
- Next month's candidates, all weak, listed honestly — délestage (557 impr but
/coupures/tunis takes 416), an /ar/ pilot on this very calculator (SPEC §6; the
Arabic script section shows 945 queries / 10 819 impr at the same 2,9 % CTR as latin,
so Arabic is proportionally served, not starved — this is a growth bet, not a gap),
and nothing else above 500 impressions. If the next run also finds no clean gap, say
so and write nothing — that is a more useful month than a page nobody searches for.
- Standing backlog unchanged: ogImage 0/673 (11 audit runs), 6
/steg/* FAQ sections,
TN-003 relocation sweep still sitting above ## Resolved in decisions.md.