The BVC Corporate Disclosure Tracker watches the disclosure calendar of the Bourse de Casablanca and turns the noise into a structured feed. Every night, a scheduled GitHub Actions job pulls the published regulatory filings — earnings, capital increases, prospectuses — for ten listed companies, runs each one through an LLM extraction pass that pulls the key figures into a clean, labeled summary, and republishes the whole tracker automatically.

The result is a single place to follow what the market’s biggest names are disclosing, without wading through AMMC PDFs:

  • Live tracker → — every disclosure, newest first, each row flagged Unverified and linked to its source PDF, plus per-company history pages under Companies.
  • Key figures extracted — revenue, margins, loans, premiums and the like pulled into labeled metrics directly from the filing text.
  • RSS subscription — the feed is also published at /bvc-feed/index.xml, so you can follow new disclosures in any reader.

How it works

  1. Scrape — the AMMC publications page is polled nightly for new filings covering the ten tracked tickers.
  2. Extract — an LLM pass turns each filing into structured data: date, company, ticker, event_type, confidence, source_url, document_title, summary, and key_figures[].
  3. Publish — the export script writes data/bvc_feed.json, regenerates the detail pages, per-company history pages, and sitemap, then commits; Cloudflare Pages rebuilds the site.

The honest label

Every figure here is machine-extracted and unverified by a human — which is exactly why no row ever presents itself as confirmed. Each entry shows its extraction confidence and links straight to the source PDF, so the tracker is a triage layer over the filings, not a substitute for reading them.

Covered

Ten listed companies across banking, insurance, telecom, energy, agribusiness and materials — including BCP, Bank of Africa, CIH, Attijariwafa, Wafa Assurance, Maroc Telecom, TAQA Morocco, Cosumar, Marsa Maroc and LafargeHolcim Maroc. The full, up-to-date list lives on the tracker page.