1 · What the software does
An intelligence layer between the blockchain and the taxable base — not a block explorer, not a filing tool.
| It does | It does not |
|---|---|
| Reconstruct a flow: addresses, counterparties, amounts, on-ramps and off-ramps. | Prove the civil identity behind a wallet. It produces a lead to be investigated, never a verdict. |
| Screen an address or a name against the OFAC / UN index, with date, fingerprint and verification of the bytes actually loaded. | Replace your jurisdiction's official list. The index is a dated mirror, re-hashed at every publication. |
| Classify a transaction as a taxable event and compute the base, the rate and the estimated tax. | Replace the examiner's judgement: every row states its assumptions, the human decides. |
| Export an audit trail: 16-column CSV, decision and reason per row, printable report. | Retain personal data beyond the session: nothing is stored server-side, everything is computed in the browser. |
2 · The eight-minute walk-through
The shortest path through the whole suite, in the order an investigation unit actually works.
Load a working file — 40 s
Open the tracer, Overview tab, and click one of the three file cards. The terminal fills in: identifier, country, amount, risk score and the event chain. You can paste your own address in Trace at any point.
Read the graph and the score — 90 s
Graph: counterparties and conversion points. Risk: the score out of 100 and its four components (volume, typology, sanctions exposure, fiat gap). A score is not evidence — it is a priority order.
Screen against the real index — 30 s
Sanctions: paste an address or a name and run the screening. The answer shows the number of designations, the index date and the SHA-256 of the files actually loaded. This is the only module whose source is official.
Turn the flow into taxable matter — 2 min
Open the fiat–crypto engine: its 7 modules run from the overview to the administration dashboard. The classifier (module 5) says why a transaction is taxable, the score (module 6) says who to start with, the dashboard (module 7) aggregates and exports.
Quantify and conclude — 2 min
The calculators give the potential revenue and the regime comparison; the VASP screening case shows the final deliverable: 12 values submitted, 12 written decisions, false positives cleared on evidence, and an auditable CSV. That document is what you hand over — not the screen.
3 · The five applications
What you give them, what they return, and what they rely on.
| Application | Input → output | Source |
|---|---|---|
| Tracer & sanctions v1.2 |
An address, a transaction or a name → reconstructed flow, graph, score out of 100, report, dated and hashed screening verdict. | real index files = test set |
| VASP inventory screening v1.0 |
An inventory of addresses and names → one written decision per row (match, false positive cleared, unrecognised format) and a 16-column CSV. | real index inventory = test set |
| Fiat–crypto engine v1.0 |
Fiat and crypto flows → classified taxable event, base, rate, estimated tax, audit priority and an exportable dashboard. | live CoinGecko prices files = test set |
| Tax calculators v1.1 |
Country parameters and a volume → potential revenue, regime comparison, mining royalties, policy brief. | editable, sourced parameters |
| Mobile-money gap detector v0.9 |
Declared cash-out withdrawals and observed crypto activity → gap by country and operator, with calibration assumptions shown. | assumptions to calibrate |
4 · What is real, what is a test set
The distinction is carried on screen, not only in this guide — that is what makes the results citable.
| Item | Status | Available evidence |
|---|---|---|
| OFAC SDN + UN Security Council sanctions index | real, dated | 20,426 designations, 43,282 names, 505 addresses, snapshot of 12/10/2026, SHA-256 shown and recomputed in the browser. |
| Crypto prices | real, live | Public CoinGecko API, no key required; fallback is flagged when the API does not answer. |
| On-chain tracing | real with API key | Etherscan / BscScan key in the settings panel; otherwise the graph is a synthetic pattern and the screen says so. |
| Taxpayer files (tracer, engine, dashboard) | test set | 10 anonymised files with constructed amounts and identities; the computations themselves are real and reproducible. |
| Mobile-money gap | assumptions | Gap is computed, but volume calibration must be validated with an operator — flagged inside the application. |
5 · Audience questions
- Does this replace Chainalysis?
- No, and that is not the point. Chainalysis sells attribution data at global scale. The value here is the tax layer: turn a flow into a taxable event, quantify it, prioritise it, produce an auditable trail — with a verifiable official index and zero licence cost.
- Are your figures real?
- The sanctions index and the prices are, with date and fingerprint. Taxpayer files are anonymised test sets, and that is written on screen. No figure is presented as coming from a real taxpayer.
- Where does my address go when I paste it?
- Into your browser. Screening runs client-side against a static index; no form is posted to an application server. The CSV export happens on your machine.
- What if the index is out of date?
- The page shows the snapshot date and the file fingerprint; a screening that cannot load the index falls back to a frozen sample and refuses to count as a screening record. Rebuilding is scripted, never manual.
- How long to deploy it in our administration?
- A static folder: any web server will do, no database. The export script rebuilds the index and the suite sits behind any reverse proxy. The real work is calibrating rates and corridors to your national law.
6 · Reproduce and verify
Nothing is hidden: every displayed figure can be rebuilt from the published files.
| Operation | Command / file |
|---|---|
| Rebuild the screening index | python export_web_sanctions.py → data/sanctions_meta.json, sanctions_wallets.json, sanctions_names.json |
| Verify served integrity | Sanctions tab of the tracer: SHA-256 recomputed in the browser and compared with sanctions_meta.json. |
| Serve the suite locally | python -m http.server 8000 then http://localhost:8000/app.html (the file:// protocol blocks data loading). |
| Read the research file | Methodology and sources · VASP framework · Project tracker |