KanDong · English

Don’t trust us. Verify us.

KanDong reads Chinese contracts, medical check-up reports and insurance policies, and explains every risky clause in plain language. It is sold per call to AI agents over x402.

The product output is in Chinese, so if you don’t read Chinese you cannot judge its content. This page is about something you can judge: our method, and whether the claims we make about it hold up when you check them yourself.

The three claims we make

  1. Every quote is verbatim. Each finding cites a passage copied character-for-character from the user’s own document. A finding whose quote cannot be located in the source is dropped by the pipeline before it ever reaches the user.
  2. Every finding has an official source. Not “according to Chinese law” — a specific article number, national standard, or regulatory document, resolvable to its text.
  3. We publish no accuracy figure. Before external blind testing, any percentage would be unverifiable marketing. We say so on the record rather than picking a flattering number.

Verify claim 1 and 2 yourself — four requests, no payment

We publish the source documents behind our demo reports precisely so this can be done without our cooperation. All four endpoints are free.

Step 1 — get the original document
GET https://kandong.xyz/api/demo-source?id=demo-contract-01
Returns the raw text plus its SHA-256, which matches the digest published on /proof. Synthetic sample — no real personal data.
Step 2 — get the machine-readable report
GET https://kandong.xyz/api/report?id=demo-contract-01
Step 3 — check every quote against the document
For each flags[].quote, strip whitespace and search the source text. Every one should be found. If any is not, claim 1 is false and you should say so.
Step 4 — resolve every citation
GET https://kandong.xyz/api/rules?id=rent-001
Returns the rule’s name, severity, statute number and the statute text itself, so you can compare it against what the report claimed.

Or run all of it at once — scripts/verify.sh in the repository does exactly these checks across all three demo reports and prints a pass/fail count. A live version of the same invariants is recomputed on every request at /api/selfcheck (it returns HTTP 500, not a pretty message, if any invariant fails).

What one finding actually looks like

From demo-contract-01, a residential lease. Field by field:

rule_idrent-001 · the identifier you can resolve at /api/rules
finding — 押金退还无标准 · “No standard for returning the deposit”
quote — 是否存在损坏由甲方检查认定,扣除标准由甲方确定,乙方对认定结果不得异议。
“Whether damage exists is determined by Party A’s inspection; the deduction standard is set by Party A; Party B may not dispute the determination.”
This string appears character-for-character in the source document.
evidence.source — 民法典第510条 · Civil Code Article 510
The article on what happens when a contract leaves quality, price or performance terms undefined — which is exactly the defect in this clause: it hands the definition to one side.
verify_url — resolves that article to its full text

Note what is not there: no verdict on whether the contract is enforceable, no advice on whether to sign, no predicted outcome. The service tells you what you are agreeing to. It does not decide for you.

Why this is built for agents

The buyer is an agent, not a browser. It reads the service contract at /metadata (or /openapi.json), sees the declared input and result schemas before paying, pays over x402 on X Layer, and gets back {ok, receipt, report} — where report is the machine-readable half: every finding with its rule_id, verbatim quote, official source and verification URL.

The verification loop closes programmatically. That matters: a claim like “every finding is traceable” is worth nothing to a buying agent if the traceability only exists on a web page a human has to read.

What we do not claim

Where to look next

Found something that doesn’t hold up? That is the most useful thing you could tell us. Corrections, refunds and privacy requests go through the OKX.AI platform — our service page ↗ (listing currently under review). Platform-side transaction records make such requests checkable in a way an inbox is not.