Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
Ask a question in natural language to find the official dataset and see if it exists
AI summary · website content
DataPython · HTMLGitHub @booluckgmieOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A discovery layer for Malaysian official data. A user asks a question in plain words (English, Bahasa Malaysia or both) and the platform points to the right official dataset, report, dashboard or live feed, then sends them to the original source.
The platform holds metadata only. It never copies, generates or displays data values. Every result links to the agency's own page.
harvest/harvest.py datagovmy-meta, BNM, MOH, NAPIC, docs, ... -> registry/registry.json
harvest/verify_links.py checks every page and file URL -> registry/registry.json, registry/link_report.md
harvest/build_app.py registry + app template -> dist/index.html
Python 3 standard library plus curl (BNM and ElectionData reject Python's TLS handshake). Run in this order:
python3 harvest/harvest.py # clones datagovmy-meta and the MOH repos into .cache/ on first run
python3 harvest/verify_links.py # about 1,400 URLs; results cached 12 hours in .cache/
python3 harvest/build_app.py
| Kind | Source | Records |
|---|---|---|
| Dataset | data.gov.my / OpenDOSM / KKMNOW catalogue (data-catalogue/) | 297 |
| Dataset | Bank Negara Malaysia Open API: one record per statistical table, from BNM's own specification (harvest/bnm.py) | 341 |
| Dataset | Ministry of Health open-data repositories covid19-public and data-darah-public on GitHub (harvest/moh.py) | 36 |
| Dataset | ElectionData.MY catalogue, an independent project compiling Election Commission results; always Tier 3 (harvest/electiondata.py) | 202 |
| Dataset | Archive copies in booluckgmie/sharecode (APIMS air pollutant index, GSO electricity generation, Sabah job portal, NAPIC 2022 property tables, MPOB palm oil prices, Bursa PN17/GN3); allowlisted folders only, always Tier 3 (harvest/sharecode.py) | 7 |
| Dataset | Toll sources (harvest/tolls.py): LLM's directories of 33 operating and 3 under-construction highways, read directly from llm.gov.my | 2 |
| Dashboard / Dataset | Toll rate lookup (kadartol.llm.gov.my) and two old data.gov.my toll datasets: identified through web search only, not read, flagged unreachable | 3 |
| Report series | NAPIC (JPPH) property publications: 14 series across market, stock, status and price/rental indices, read from napic.jpph.gov.my (harvest/napic.py) | 14 |
| Dashboard | NAPIC open transaction data, an embedded Tableau Public dashboard | 1 |
| Dataset / Report series | MPOB public pages (harvest/mpob.py): daily CPO price (rolling 3 years, Excel per year), the latest monthly industry performance report and year summary, and the annual Overview of the Malaysian Oil Palm Industry (10 PDFs, 2016 to 2025) | 4 |
| Report series | DOSM publications (pub-dosm/), editions grouped into series, with technical notes attached | 94 |
| Report series | DOSM release archive (harvest/dosm_archive.py): edition history back to 2014 added to 8 labour and wage series (Salaries & Wages 15 editions, Labour Force 194), plus a new series, Job Vacancies Advertised Online | 1 new |
| Dashboard | portal dashboards and explorers (dashboards/, explorers/) | 56 |
| Live feed | DOE APIMS public API: hourly Air Pollutant Index by station, last 24 hours (harvest/doe.py) | 1 |
| Live feed | data.gov.my realtime APIs read from the developer docs: weather forecast, weather and earthquake warnings, flood warning, GTFS static and realtime for KTMB, Prasarana and BAS.MY (harvest/devdocs.py) | 10 |
| API | data.gov.my static query APIs from the same docs: the Data Catalogue API and the OpenDOSM API | 2 |
Of these, 66 are withheld from the page: 6 dashboards whose portal page is gone, and 60 BNM tables that the agency lists but whose endpoint returns no records.
See registry/SCHEMA.md for the record format and registry/tiers.json for the provisional reliability tiers.
api.data.gov.my allows 4 requests per minute per API, so the pipeline spaces and caches its calls to it, and checks one endpoint per API record.registry/link_report.md. A network error never hides a record./api/chalice-search/...): not called. JobStreet's terms say "You may not use data mining, robots, screen scraping, or similar automated data gathering, extraction or publication tools on our websites and apps", and its robots.txt disallows its job search API paths. The endpoint is undocumented and the pasted URL carried personal user and session ids, which are deliberately not stored here. DOSM's Job Vacancies Advertised Online (built from job ads on major private recruitment platforms) is the official source.| What | Pattern |
|---|---|
| Daily CPO price, table | /admin2/price_local_daily_view_cpo_msia.php?more=Y&jenis={1W,1M,3M,6M,1Y}[&tahun=YYYY] |
| Daily CPO price, chart | /admin2/chart_cpomsia.php?jenis={1W,1M,3M,6M,1Y}&tahun=YYYY |
| Daily CPO price, Excel | /admin2/price_local_daily_view_cpo_msia_excel.php?val=YYYY&excel=Y |
| Monthly performance report | /stat/web_report1.php?val=<id>&val1=<MM>: latest month only; <id> cannot be derived for other months |
| Annual overview | /images/overview/Overview_of_Industry_YYYY.pdf (2016 to 2020), Overview{YYYY}.pdf (2021 on) |
Daily is the finest granularity published. Only the last three years answer (2024 to 2026 when checked); earlier years return an empty file. price.mpob.gov.my and the export duties page need a login and are not touched.
archive/)The registry holds metadata only. archive/ is a separate, deliberate exception: preserved copies of source files that an official site stops serving, so the history survives. The registry still sends users to the official page first.
archive/mpob/cpo_daily_YYYY.csv: MPOB's daily crude palm oil price, one tidy file per year, columns date, price_rm_per_tonne, status where status is price, public_holiday, no_trade or pending. MPOB serves only the last three years, so each year is saved while it is still available and never deleted afterwards. 2023 was imported from an earlier scrape of the MPOB price pages; 2024 to 2026 come straight from MPOB's Excel export. The parser was checked against that independent scrape (0 differences over 628 days). Future public holidays and weekends in the current year are listed by MPOB in advance and appear with their status and no price.harvest/archive_mpob.py does the download and parsing. It rewrites a file only when the parsed content changes (the Excel files embed a new timestamp on every download)..github/workflows/archive-mpob.yml runs it every Monday and can be started by hand. It has not yet run on GitHub: the first run needs the Actions tab, and GitHub runs scheduled workflows from the default branch only.sharecode adapter is an allowlist. That repository also holds personal, employer and research files, which are never read. Weather (Open-Meteo, not official), data_oku (origin undocumented) and SARA2025 (third-party platform, business addresses) are left out on purpose.emisonline.moe.gov.my/risalahmap/) resets the TLS handshake and www.moe.gov.my returns 403. Run the pipeline from another network, or add the host to the environment's allowed domains and retry.kadartol.llm.gov.my) and the old data.gov.my toll datasets could not be read from the harvesting environment (503, connection reset, and a firewall 403). They are indexed as pointers from search results, marked unverified, and no rate values are stored. Rerun from another network to read them./year/{year}) cannot be link-checked beyond their portal page.frequency_inferred.devdocs DRIFT when they differ. Titles and descriptions are written in the adapter, not taken from the docs.data-catalogue/openapi/ carry no titles and mostly duplicate catalogue datasets, so they are not indexed.The page loads Vercel's cookie-free analytics script (/_vercel/insights/script.js, served only on Vercel once Web Analytics is enabled for the project). It sends no search text and no custom events. The "Site usage" section shows aggregate visitors, pageviews, daily trend, top pages, countries, devices and referrers from app/analytics.json, a snapshot taken at build time. Refresh it with VERCEL_TOKEN=... python3 tools/fetch_analytics.py, rebuild, and commit. Hobby plans keep 31 days of data.
talentcorp.com.my, 66 occupations) and earlier editions back to 2015/2016. It carries no salary figures; it scores shortage using vacancy and wage-premium indicators. It does list a data scientist and analyst occupation as in shortage, with respondents reporting vacancies mostly at junior level (1 to 3 years). It is useful as demand evidence, not as a pay source. No LinkedIn-published Malaysia salary report was found; LinkedIn's talent insights are not public.pnb.com.my, 49 pages) analyses the MEF Salary Survey, which MEF sells. It shows its series as charts, so the numbers are not in the PDF text and were not extracted from images. It is a third-party analysis of private-sector members only.belanjawan.mof.gov.my/pdf/belanjawan2026/sp/LAMPIRAN-A.pdf, 3 pages) lists minimum and maximum monthly pay for every public-sector grade under SSPA. It covers public-service posts only and is by grade, not job title. The 2017 data.gov.my dataset "Minimum and Maximum Median Monthly Basic Salary by MSIC and MASCO" is on archive.data.gov.my, which this environment cannot reach. Lampiran A is extracted to data/mof/sspa_pay_scales/2026; the 2017 dataset is not.