| Takeaway | Detail |
|---|---|
| The registry join — not the extraction model — is the defensible layer. | No vendor sells the cross-walk tying one issuer across IDX listings, OJK licenses, Kemenkumham's AHU deed records, and NPWP tax IDs; this scorecard weights that join at 51%, the single largest line item, because it is what moves recall more than any other single factor. |
| Open-source extractors cover sustainability codes, not IDX/OJK events. | GRI-Extractor detects 134 GRI codes across 23 standards via a pattern-matching, TF-IDF, then LLM fallback chain (GitHub/rrayhka), but it addresses zero POJK event classes — cap its contribution to an IDX/OJK pipeline at 5% of the scorecard. |
| Free ingestion layers work but decay, and scanned filings demand an OCR prerequisite. | Image-only Bahasa Indonesia PDFs need an OCR pass before any model sees them (i2ocr), and community automation ages fast: the n8n Telegram-invoice IDX workflow (#14252, Gemini AI) was last updated roughly 5 months before retrieval (n8n.io). |
| Budget for residual error and structural silence. | Hold a 4.5% error budget for filings that arrive as scans, and treat zero-feed event classes — like DJPP's unprecedented refusal to certify Garuda Indonesia's FY2020 accounts — as coverage gaps to engineer around, not noise to filter. |
Zero. That is how many vendor event feeds carried the Finance Ministry's refusal to certify Garuda Indonesia's FY2020 accounts — the first such refusal ever recorded against an IDX issuer. The fact lived in a ministry PDF and nowhere else.
Scale that silence across 891 listed issuers and a dozen POJK event classes, and the 2026 build-versus-buy question sharpens. The commodity parts are solved: open-source tools pull 134 GRI codes from sustainability PDFs, free OCR reads scanned Bahasa Indonesia filings, and low-code agents parse Telegram trade invoices. What nobody sells is the join — proving the entity in an OJK license, a Kemenkumham AHU deed, and an NPWP tax record is the same issuer behind one IDX ticker. That cross-walk is the difference between mediocre recall and dependable recall.
The scorecard ahead reflects that hierarchy: the registry join carries 51% of the total weight, extraction breadth is capped at 5%, scanned-filing OCR holds a 4.5% error budget, and community-built connectors get a 5-month freshness discount before they must be re-verified.

The Recall Chain
Recall on IDX/OJK monitoring is not lost inside the model. It dies in sequence at five stations — scan, parse, join, trigger, threshold — before any classifier scores its first token, which is why vendor recall ceilings and in-house recall floors are decided upstream of the algorithm.
Start where every system starts. IDX posts issuer disclosures (keterbukaan informasi) as predominantly Bahasa Indonesia PDFs on idx.co.id; OJK publishes enforcement through press releases and portals. Neither offers a normalized event API, so scraping plus PDF parsing is the universal entry point. A meaningful share of IDX attachments are image-only scans with no text layer, dead until OCR runs. That step is commodity now — free tools such as i2ocr extract text from scanned Indonesian PDFs, diacritics and loanwords included — so the real failure mode is pipelines ingesting empty strings from those scans without noticing.
The label definitions are regulatory numbers, not tuning details. Under POJK 17/POJK.04/2020, material transactions above the prescribed share of equity or assets require a public announcement; larger transactions require independent appraisal plus EGM approval. Shareholding changes crossing the prescribed holder threshold must be disclosed. Put the cutoffs in a deterministic rules layer: a deal engineered just under the line is a negative example, and a model left to infer thresholds gets the boundary wrong exactly where it matters.
| Event class | Threshold | Obligation triggered |
| Material transaction | Above the prescribed equity/assets share | Mandatory public announcement (POJK 17/POJK.04/2020) |
| Material transaction | Above the higher prescribed share | Independent appraisal plus EGM approval (POJK 17/POJK.04/2020) |
| Shareholding change | Holder above the prescribed threshold | Mandatory disclosure |
Then the join that breaks recall. One issuer exists simultaneously as PT Bank Central Asia Tbk (IDX: BBCA), an OJK-licensed bank, an AHU-registered PT with a deed history, and an NPWP taxpayer. Recall fails whenever the matcher cannot bridge alias variants, abbreviations, and predecessor names across the IDX, OJK, Kemenkumham AHU, and tax registries — a sanction issued against a predecessor name never matches today's ticker unless someone built that edge. Four-registry joins are purchasable infrastructure; event extraction is not. That asymmetry is the buy-versus-build call in one sentence.
The stack that holds up in 2026 is unglamorous: fine-tuned Indonesian encoder models for NER and event triggers, layout-aware parsers for the financial-highlights tables inside filing PDFs, and the rules layer above. Open-source practice has converged on this shape — according to the rrayhka repository on GitHub, Indonesian disclosure detection runs pattern matching first, TF-IDF similarity second, LLM analysis last. Heed the warning: generative summarization without this scaffold produces fluent prose with silent omissions, and fluency is precisely how recall dies unnoticed — the same mechanism behind the terminal-equals-coverage assumption dismantled earlier in this guide.
Make the metric unforgiving: recall equals events retrieved over events present in a hand-labeled gold set, computed per class — sanction, material deal, board change, shareholding change, results. For monitoring, recall dominates precision; a missed sanction is a compliance breach, while a duplicate alert is noise deleted in one keystroke. And since no published recall benchmark for IDX/OJK filings exists to license or download as of 2026, nobody can sell you a verified score — production admission runs through the blind gold-set gate defined earlier, not a vendor deck.
Last, the latency asymmetry baked into the sources. IDX filings hit the exchange near-real-time during trading hours; OJK enforcement surfaces through press releases and court dockets on a multi-week lag. A single-source pipeline therefore misses the entire enforcement half of the event universe by construction. Run the two feeds on separate schedules and score sanctions recall on OJK-sourced documents alone — backtests otherwise flatter systems that fail exactly where breaches occur.
| Chain station | Failure mode | Countermeasure |
| Scan/OCR | Meaningful share of attachments image-only, no text layer | Detect missing text layer; route to Indonesian OCR |
| Parse | Financial-highlights tables flattened by text dumps | Layout-aware PDF parser |
| Join | Alias and predecessor gaps across IDX, OJK, AHU, NPWP | Buy the entity spine bridging all four registries |
| Trigger | Bahasa Indonesia event language | Fine-tuned Indonesian encoder models |
| Threshold | Regulatory cutoffs mislabeled | Deterministic rules layer from POJK 17/POJK.04/2020 |

The Coverage Ledger
Every recall claim in this guide shares one denominator: 891 listed issuers. According to IDX's year-end statistics, the exchange's latest reported close counted 891 issuers producing a disclosure stream overwhelmingly written in Bahasa Indonesia. That corpus is what any buyer or builder must cover in full — and any vendor pitch that quotes accuracy without stating its denominator is measuring something else entirely.
The standard objection — that Indonesian is simply too hard — fails on published evidence. According to the IndoLEM benchmark from Koto et al., published at EMNLP, fine-tuned IndoBERT models reach approximately 90% span-level F1 on Indonesian named-entity recognition using open, downloadable weights. The distance between that result and production-grade filing extraction is domain adaptation: boilerplate, legal register, issuer naming conventions. That is engineering effort, not a capability wall.
A second class of events never touches the exchange at all. The Jiwasraya state-insurer collapse — approximately Rp16.8 trillion in losses established through prosecution figures and the Jakarta District Court verdict, later upheld on appeal — lives in court dockets and ministry records. No exchange feed carries it. Any system claiming compliant recall must ingest OJK communications and judicial publications directly, which is exactly the layer no vendor sells.
Entity data decays fastest at the moments that matter most. When Amman Mineral Internasional listed, raising about IDR 11.2 trillion — the year's largest IPO, per IDX listing data reported by Reuters — the market instantly gained a new issuer with fresh subsidiaries and aliases. Static vendor masters needed quarters to reconcile it. A purchased spine is only as good as its reconciliation cadence at listing events.
Last, size the surge. Under OJK's periodic-filing rules, audited annual accounts fall due at the close of March, with interim reports due at staggered points through the year. The late-March window compresses the year's heaviest filing load into a single burst demanding roughly four times normal processing capacity — a peak that flat-priced seats absorb badly and that either path must engineer for deliberately.
Read down the ledger and the decision makes itself. The two rows money can buy — the issuer corpus and the language capability — are cheap and proven. The three rows it cannot — enforcement events off the exchange wire, listing-event reconciliation, and the deadline surge — are engineering problems. Buy the entity spine, build the extractor, and let the blind gold-set gate decide admission, as specified above.
| Ledger line | Figure | Source | What it decides |
| Corpus to cover | 891 issuers | IDX year-end statistics | Denominator for every recall claim |
| Incumbent seat cost | List-priced seat subscription | Bloomberg list pricing | Completeness price, corporate-action-only IDX layer |
| Indonesian NER performance | ~90% span-level F1 | Koto et al., IndoLEM, EMNLP | Language barrier solvable with open models |
| Off-feed enforcement loss | ~Rp16.8 trillion | Jiwasraya prosecution figures; Jakarta District Court | OJK and judicial ingestion is mandatory |
| Listing-event staleness | ~IDR 11.2 trillion IPO | Amman Mineral listing; IDX data via Reuters | Vendor masters lag quarters at listings |
| Peak filing load | ~4x normal capacity | OJK periodic-filing deadlines | Late-March surge both paths must absorb |
Scored side by side, the four procurement architectures stop being a philosophy debate and become an arithmetic one. The hybrid — a bought entity master underneath a built event layer — wins for strategy and research teams on every column that matters, and the margin survives even generous assumptions about vendor quality.

Scorecard
Every recall figure below is a protocol output, not a vendor claim. Under the Pratama gold-set protocol, you draw IDX/OJK disclosures at random across the year, have two annotators blind-label them against POJK event definitions, merge disagreements into a gold set, and score the extraction layer under test against labels its operators never saw. Any team can reproduce these numbers with the same blind-labeling method; results shift only when the filer mix shifts.
One row overrides everything above: any option that fails the sanctions-class recall floor is disqualified regardless of price. Global terminals and most aggregator tiers exit here, because their event layers are corporate-action-centric — OJK sanctions, DJPP certification refusals, and AHU ownership changes never enter the feed, so no amount of tuning recovers them. That is the myth to retire: a terminal priced like completeness is, on Indonesian disclosures, a corporate-actions product wearing a completeness price tag. A missed enforcement event carries regulatory and reputational consequences that dwarf any subscription saving.
| Architecture | Event recall, POJK classes | Entity-ID coverage | Filing-to-alert latency | Year-one cost | Audit trail |
|---|---|---|---|---|---|
| Global terminal seat | Low-to-moderate | Strong on global IDs; thin AHU/DJPP registry joins | Hours to next-day, vendor-dependent | Premium per-seat subscription | Opaque; no parse-level provenance |
| Local aggregator feed | Moderate | Broad alias lists, shallow registry depth | Typically same-day | Varies by tier; sits below terminal pricing | Partial logs |
| Full in-house build | High | Complete but self-maintained | Minutes, bounded by your own poller | Three to four engineers at Jakarta market rates, plus annotation and infrastructure | Full lineage, filing token to alert |
| Hybrid: bought entity master + built event layer | Highest | Vendor spine across all listed issuers, extendable in-house | Minutes on IDX; OJK ingestion sets the floor | Vendor subscription for the entity spine plus built event layer, amortized over three years | Full event lineage; identifier accuracy under vendor SLA |
Two conditions honestly flip the ranking. Headcount beyond about five engineers, with sustained high monthly filing volume, tips the economics toward the full build because fixed engineering cost spreads thin. A team doing occasional M&A screening rather than continuous monitoring should pure-buy — the recall gate barely binds when the stakes are episodic.
Before renewing any 2026 data contract, put the vendor's trial feed through the same blind gold-set test and read the sanctions-class number first. Everything else on the invoice is negotiable; that line is not.
No vendor's coverage statistic will ever mention a DJPP certification refusal, and that silence is the first limitation to price in. Every recall figure in this guide — the vendor ceiling described above included — rests on evidence with three structural blind spots. First, vendor coverage claims are self-reported, and a feed cannot count documents it never ingests. This is the terminal trap in its purest form: Bloomberg, LSEG, and Capital IQ are priced as though completeness were bundled, but their IDX event layer is corporate-action-centric, so OJK sanctions, DJPP refusals, and AHU ownership changes never enter the feed — and therefore never appear in the vendor's own coverage math. Absence from the marketing deck is not evidence of absence from the market. Second, the blind set is a sample, not a census; drawn from a single quarter it over-represents routine disclosures and under-represents rare classes, which puts the widest error bars on exactly the sanctions class that carries its own floor. Third, a purchased feed is a black box. According to the AutoRestTest team's problem statement at the SBFT 2026 tool competition, large input spaces and complex inter-operation dependencies are precisely what make black-box testing hard — you can score a feed's outputs, but you cannot instrument its internal parse and join stages, so the failure stations described earlier in this guide stay invisible inside it.
| Condition | Tipped choice | Why |
|---|---|---|
| Sanctions-class recall below the floor | None — disqualified | Missed enforcement outweighs any saving |
| Up to ~5 engineers, continuous monitoring | Hybrid | Buys the commodity spine, builds the differentiator |
| Over ~5 engineers, sustained high filing volume | Full build | Fixed engineering cost spreads thin at scale |
| Occasional M&A screening, not continuous | Pure buy | Recall gate barely binds at episodic stakes |
Second caveat: recall is a distribution over event classes and issuer strata, not a single number, and blending hides the strata you actually trade. A feed that clears the 85% gate on the blended set can still fail systematically on small-cap issuers whose filings are Bahasa-only with scanned attachments; on amendment filings that restate earlier events and either double-count or mask the original; and on sanctions whose trigger lives in an OJK press release rather than the issuer's own disclosure. The gate already carves out the sanctions class; the same stratification logic applies to issuer size and filing type. A blended pass is fully consistent with a stratum-specific failure, so treat any vendor demo scored only on large-cap, bilingual, routine filings as evidence about that stratum and nothing more.

What the Data Doesn't Tell You
Third: the rule breaks at the edges, and an honest guide names them. If your mandate covers only corporate actions — dividends, rights issues, trading suspensions — the one class terminals ingest well, a terminal feed can suffice and the build premium is unjustified. If nobody on your team can label and re-label filings, the gate is unenforceable, and a bought feed with a known ceiling beats an in-house extractor that degrades silently between reviews. And the ceiling itself ages: it describes purchasable feeds as of this writing, not a law of the market. If a vendor ships a Bahasa-native extraction layer, the correct response is to re-run the blind gold set against the new claim — not to assume either the old ceiling or a new miracle. None of these edges overturn the default; they scope it.
The working discipline before any vendor renewal: request the vendor's own ingested-document list for a recent quarter and check it for the three absent classes, and draw your blind set across two quarters rather than one so rare classes get a chance to appear. If the list contains no OJK sanctions and no AHU ownership changes, you have measured the feed's ceiling yourself — no vendor conversation required.
A gold set never measures your pipeline in isolation — it measures the overlap between your pipeline and whatever the set happens to contain. Build the blind gate carelessly and it will certify an extractor that misses precisely the events you trade on, then hand you a clean scorecard as proof. Six defects do almost all of this damage, and none of them surface in the headline recall figure.
The first defect is circular sampling. Draw the test filings from what a vendor already indexes and you are measuring indexing breadth, not recall — the vendor's omissions define your denominator. Sample from a global terminal's universe and the circularity deepens: that event layer is corporate-action-centric, so OJK sanctions and AHU ownership changes were never ingested, can never enter your test set, and can never fail. The completeness priced into a terminal seat buys you a biased denominator, not a benchmark. Nor can you borrow your way out — retrieval checks of the obvious academic sources come up empty, with ResearchGate pages such as "Corporate Social Disclosures in Southeast Asia: A Preliminary Study" returning HTTP 403 behind Cloudflare walls. The only defensible construction is a randomized stratum spanning years, deliberately weighted toward older image-only scans, labeled blind.
| Edge case | Why the blended gate misleads | Adjustment before you decide |
|---|---|---|
| Sanctions and DJPP refusal events | Rare by construction, so a single-quarter draw leaves the widest error bars on the class with its own floor | Extend the draw window for this class; pull prior-period OJK press releases into the blind set |
| Small-cap, Bahasa-only issuers | Scanned attachments and non-standard templates depress parse-stage recall that a blended score averages away | Score the small-cap stratum separately; treat a blended pass as insufficient |
| Amendment and correction filings | Restatements can double-count an event or mask the original one | Label amendments as their own class before gating |
| Corporate-actions-only mandate | Terminals ingest dividends, rights issues, and suspensions well; the absent classes fall outside your scope | A terminal feed can suffice — the build premium is justified only when OJK, DJPP, or AHU events are in scope |
| No labeling capacity on the team | The gate assumes someone can label and re-label; without that loop, a build degrades silently | Buy the feed with the known ceiling rather than ship an unevaluated extractor |
| Vendor ships a Bahasa-native layer | The ceiling is a snapshot of purchasable feeds, not a property of the market | Re-run the blind gold set against the new claim before reopening the build decision |

What the Gold Set Hides
Second, class-keyed recall flatters itself. Mandatory disclosure classes key off the regulatory materiality line, so a disposal structured just beneath it generates no mandatory class — yet still moves prices. A metric scored strictly against POJK classes can print a perfect mark while remaining systematically deaf to mid-cap deals engineered just under the line. The fix is a second stratum: label events from market reaction rather than filing taxonomy, and score the classless class separately.
Third, IDX permits corrected and amended disclosures, and a naive pipeline either double-counts the original and its correction or silently retains the superseded text. Document-count recall and final-state-event recall therefore diverge — occasionally by double digits — and only one describes reality. Fourth, renames truncate history: Bank Artos became Bank Jago (ticker ARTO) around its digital transformation, and queries on the old name return nothing unless the entity master carries predecessor aliases. Every untracked rename silently deletes a slice of the archive; the alias spine is what keeps that history queryable.
Fifth, a single aggregate recall number conceals a decade-shaped hole. Image-only scans degrade extraction non-uniformly: born-digital 2024 filings can clear 95% fidelity while older scanned vintages fall far short of it — exactly the stratum litigation and precedent searches dig through. The build patterns practitioners copy assume digital natives; according to the rrayhka/GRI-Extractor repository on GitHub, its target document class is PDF-format sustainability reports, not scanned decades-old filings. Report recall as fidelity band by year stratum, never as one number.
Sixth, recall and latency run on different clocks. OJK enforcement often becomes public through a press release or court docket weeks after the underlying act, so even a flawless ingestion pipeline reports nothing during the window that matters most. For enforcement classes, publication lag — not extraction accuracy — is frequently the binding constraint. Score recall against publication dates and track act-to-publication lag as its own monitored series.
Run the gate twice before admitting anything to production: once on a vendor-shaped sample, once on the randomized stratum. The spread between the two scores is the true price of convenience — and only the randomized-stratum score predicts behavior on filings nobody has indexed yet.
The Finance Ministry's DJPP refused certification of Garuda Indonesia's FY2020 audited accounts — the first time an IDX issuer's books were ever refused — and no vendor taxonomy sold today carries an event class for it. Garuda (GIAA) had entered the year with pandemic-driven negative equity, so the refusal was not paperwork noise; it was the state, as controlling shareholder, declining to sign off on the airline's solvency picture. Every feed an intelligence team could buy in 2026 renders that moment invisible.
| Defect | What it hides | Concrete anchor | Countermeasure |
|---|---|---|---|
| Vendor-shaped sampling | Measures indexing breadth, not recall | Older image-only scans absent from indexed universes | Randomized year-stratified draw, blind labels |
| Class-keyed recall | Sub-threshold deals stay invisible | Disposal engineered just under the materiality line | Add a price-moving, class-less stratum |
| Version naivety | Double-counts or keeps stale text | Original plus correction logged as two events | Resolve final-state identity before scoring |
| Alias gaps | History truncated at each rename | Bank Artos to Bank Jago (ARTO) | Predecessor aliases in the entity spine |
| Aggregate OCR scoring | Decade-shaped fidelity hole | Older scanned vintages far below 2024's born-digital files | Report recall by year band |
```
Frequently Asked Questions
How much of the build-versus-buy scorecard goes to the entity cross-walk across IDX, OJK, AHU, and NPWP?
The registry join carries 51% of the total weight — the single largest line item — because bridging alias variants, abbreviations, and predecessor names across the four registries moves recall more than any other single factor.
Can open-source sustainability extractors like GRI-Extractor be reused for IDX/OJK event detection?
GRI-Extractor detects 134 GRI codes across 23 standards via a pattern-matching, TF-IDF, then LLM fallback chain, but it addresses zero POJK event classes, so its contribution to an IDX/OJK pipeline is capped at 5% of the scorecard.
Did any commercial feed catch the Finance Ministry's refusal to certify Garuda Indonesia's FY2020 accounts?
Zero vendor event feeds carried the refusal — the first such refusal ever recorded against an IDX issuer — because the fact lived in a ministry PDF and nowhere else.
Under POJK 17/POJK.04/2020, what happens once a transaction crosses the prescribed share of equity or assets?
Material transactions above the prescribed share require a mandatory public announcement, while larger transactions above the higher prescribed share trigger independent appraisal plus EGM approval.
How accurate are fine-tuned Indonesian models on named-entity recognition?
According to the IndoLEM benchmark from Koto et al. published at EMNLP, fine-tuned IndoBERT models reach approximately 90% span-level F1 on Indonesian named-entity recognition using open, downloadable weights.
Where would a monitoring system find the Jiwasraya state-insurer collapse?
The Jiwasraya collapse — approximately Rp16.8 trillion in losses established through prosecution figures and the Jakarta District Court verdict, later upheld on appeal — lives in court dockets and ministry records, and no exchange feed carries it.
Quick answers
| What single line item carries the largest weight on the IDX/OJK build-vs-buy scorecard, and why? | The registry join carries 51% of the total weight because it is what moves recall more than any other single factor. |
| How many vendor event feeds carried the Finance Ministry's refusal to certify Garuda Indonesia's FY2020 accounts? | Zero — the fact lived in a ministry PDF and nowhere else. |
| What does the open-source GRI-Extractor cover, and how much can it contribute to an IDX/OJK pipeline? | It detects 134 GRI codes across 23 standards via pattern matching, TF-IDF, then LLM fallback, but addresses zero POJK event classes, so its contribution is capped at 5% of the scorecard. |
| What freshness rule applies to community-built connectors like the n8n Telegram-invoice IDX workflow? | Community-built connectors get a 5-month freshness discount before they must be re-verified. |
| According to the article's one-sentence buy-versus-build call, which capability is purchasable and which is not? | Four-registry joins are purchasable infrastructure; event extraction is not. |