Shipping daily
Nov 1DATAAll 646 projects re-verified: 6,419 developer claims tested against registers, courts and pressNov 1DATAMalaysia TEDUH and Philippines DHSUD licence checks: expired licences and approved delays foundNov 1DATAThailand ONEP register: 2 condos found selling before environmental approvalNov 1DATAMexico PROFECO contract register checks: one sales registration belonged to a laundryNov 1DATAAbu Dhabi ADREC inspections and RAK RERA permit list added: % built straight from the regulatorNov 1SHIPPEDNew stage filter: completed but still sellingNov 1SHIPPEDPublic database page: verification levels, disclosure distribution, every marketNov 1DATA+212 projects in one day, round 3: USA, Caribbean, Gulf, Africa, Japan, AustraliaNov 1SHIPPEDStage on every case: off-plan or under constructionOct 31SHIPPEDVerification level per check on every case card: registry, independent, developer, contradicted
Changelog →

Kolaboro / Public log

Public log

Every day the system writes one line that fixes what we published. Each line contains the fingerprint of the previous one, and each is timestamped in Bitcoin. Rewriting history afterwards, even by us, would show.

Checking the log in your browser…

What one line fixes

  • Dataset: the SHA-256 of the open dataset file /data/bali-cases.json at that moment. Every open API answer carries the fingerprint of the dataset it came from in the x-kolaboro-dataset-sha256 header.
  • Page fingerprints: a Merkle root over the fingerprint of every developer page our research agent read. For any single project you can get a short inclusion proof at /api/open/proof/ID and check it on Verify, without trusting us or downloading everything.
  • Site evidence: one root over the fingerprints of every accepted photo and file from site visits.
  • Admin audit trail: the head of a hash-chained log of every action taken in our admin (payments recorded, case updates, status changes). The chain is re-verified before each line is written; if anyone edited or deleted an entry, the line says so and the team is alerted.

All lines

DayLine (head)ContentsCheck
Loading…

Check it yourself

The rule, so you can recompute any line with any SHA-256 tool:

head = SHA-256( "kolaboro-log-v1|" + day + "|" + dataset_sha256 + "|" + projects_root + "|" + projects_count + "|"
                + evidence_root + "|" + evidence_items + "|" + audit_head + "|" + audit_count + "|" + previous head or "genesis" )

The log itself is served signed: /api/open/log carries an Ed25519 signature in x-kolaboro-signature, checkable with the public key at /.well-known/kolaboro-keys.json.

Or use our open-source checker, kolaboro-verify.js (MIT, no dependencies, browser or Node 18+), with test vectors taken from real records:

const KV = require('./kolaboro-verify.js');
const log = await (await fetch('https://kolaboro.com/api/open/log')).json();
console.log(await KV.verifyLog(log.heads));              // { ok: true, checked: N, errors: [] }
const p = await (await fetch('https://kolaboro.com/api/open/proof/BALI-014')).json();
console.log(await KV.verifyProof(p));                     // true
// Bitcoin timestamp of a line: https://kolaboro.com/api/kb/stamp?hash=HEAD (OpenTimestamps proof)

A new line is written every morning at 07:15 UTC. The dataset changes several times a day when the research agent adds projects; each line fixes the version live when it was written. System status · Verify evidence · Open scoring code

Protect my purchase