Skip to content

Stop the issuer-relevance gate rejecting the issuer's own market #1150

Description

@kevinhermawan

Summary

The issuer-relevance gate rejects coverage of the issuer's own market. Every ticker in the 2026-08-11 batch lost material to it, and it is unchanged from the August 10 write-up where it was already the largest coverage cost.

Ticker Rejected Why it is the issuer's market
DSSA Global coal price ×3, Kaltim's 114Mt shortfall, INDEF on RKAB revision Coal price and quota are the issuer's entire P&L
AGRO "Perang Bunga Bank Digital", "Waspada Bunga Tinggi Bank Digital" Bank Raya is a digital bank; this is its funding cost
ANTM INCO's forecast earnings jump, Vale's Tanamalia partner, downstreaming policy INCO is the closest listed nickel peer
BBCA "Survei BI: Harga Properti Residensial Masih Naik" BCA is a top mortgage lender
MORA APJII ×2, "AI Factory Butuh Rp 895 Triliun" Moratelindo is an APJII ISP and a data-centre operator
TLKM Mitratel's H1 net profit of Rp1.11T Mitratel is Telkom's own listed subsidiary

The new evidence: the gate is not deterministic within a single batch

Ticker Story Accepted Rejected
TLKM Indosat Zankore launch 12× at 0.60
AGRO POJK 8/2026 pindar reporting 3× at 1.00
DSSA Bahlil RKAB royalty priority 2× at 0.80
AMAN i-Sentra Lamongan 1× at 0.80 (shipped) 1× (Antara's version)
MORA vs TLKM APJII internet quality TLKM, 0.80 industryPulse MORA, rejected

The MORA/TLKM split is the most diagnostic: identical article, same batch, opposite verdicts for two telecom issuers, where the ISP association sits closer to Moratelindo than to Telkom. That points at issuer-context injection rather than at the article, and it means alias and competitor lists alone will not stabilise this.

Scope

  • In scope: per-ticker subsidiary and brand aliases, per-ticker named-competitor lists, and a commodity-to-issuer mapping derived from business_activity and sub_industry, all stored as data rather than code.
  • Out of scope: prompt rewording, until a baseline exists.

Acceptance criteria

  • A same-code baseline is measured first, over at least two runs of one unchanged batch, and recorded in the issue
  • Any claimed improvement is stated against that baseline, not against a single run
  • The treasures named in the reviews above score into a section on replay
  • No foreign-market article is admitted by the change

Notes

Recurs from item 5 of reviews/2026-08-10/IMPROVEMENTS.md; the mechanism analysis there still stands, including MARKET_ANCHOR_OVERRIDE_MIN and the issuerNamedInTitle fallback.

The baseline requirement is not process for its own sake: re-running article-analysis on unchanged code moves 15–25% of articles between sections, so a single before-and-after run cannot distinguish a real gain from noise. getDataSourcesForTicker already loads profile.competitors and issuerAliases, so the data plumbing exists on the generation side and needs mirroring into classification.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Priority P0article-analysis-agentArticle Analysis Agent initiative (MP-ART-ANALYSIS)bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions