Bulk Upload API · Providers + Investors · Connected to Match AI
Checking worker...
Upload Asset Providers — Multiple at once
What this does
Upload a batch of asset providers (companies with properties to tokenize). Each provider gets: a reference number (CZ-{COUNTRY}-{SEQ}), an SDK key for API access, KYB tracking, and immediate Match AI eligibility — their assets will appear in investor matches. Upload CSV, paste JSON, or use the form. Supports up to 5,000 providers per batch.
Upload Investors — Multiple at once
What this does
Upload a batch of investors from your CRM, database, or Excel export. Each investor is: assigned a reference ID, linked to Match AI (their mandate is scored against all listed assets), KYC status tracked, and immediately available for outreach. Supports up to 5,000 investors per batch. Pull from external sources by pasting the API JSON, or use CSV export from any CRM.
Upload Results & Live Database
Providers in D1
Investors in D1
Total Transactions
API Reference — worker-v18js endpoints
POST /api/db/providers — Bulk upsert providers
POST https://worker-v18js.assets-cityzeen.workers.dev/api/db/providers
Content-Type: application/json

{
  "providers": [
    {
      "company_name": "AMORIA Stars",
      "contact_name": "Frank Weyner",
      "email": "franky@amoriastars.com",
      "country": "Spain",
      "asset_types": "Residential,Wellness,Water",
      "total_aum_eur": 12000000,
      "esg_avg_score": 92,
      "sfdr_tier": "Art. 9"
    }
  ]
}
POST /api/db/investors — Bulk upsert investors
POST https://worker-v18js.assets-cityzeen.workers.dev/api/db/investors
Content-Type: application/json

{
  "investors": [
    {
      "name": "Jean Dupont",
      "email": "j.dupont@amundi.com",
      "type": "institutional",
      "country": "France",
      "aum_eur": 50000000,
      "sfdr_preference": "Art. 9",
      "esg_min_score": 85,
      "currency": "EUR"
    }
  ]
}
POST /api/ai/match — Match investor to assets
POST https://worker-v18js.assets-cityzeen.workers.dev/api/ai/match
Content-Type: application/json

{
  "investor": {
    "preferences": ["Eco Residential","ESG 90+"],
    "riskTolerance": "moderate",
    "targetROI": "7%",
    "budget": 500000,
    "geographyPreference": "Spain",
    "esgMinimum": 90
  },
  "assets": [...],   ← array of asset objects
  "top_n": 3
}
Connected flow: Upload → Match AI → Dynamic Pricing
1. Upload investors via /api/db/investors → D1 stores mandate
2. Match AI (/api/ai/match) scores each investor mandate vs all listed assets
3. For approved members: Dynamic Pricing (/api/pricing/dynamic) adjusts token price per investor tier
4. Results shown in investor portal + emailed via Make.com automation

The unique form pattern: Any investor uploaded here is immediately visible to Match AI. When the investor logs in, their stored mandate auto-populates the Match AI form. New asset listings trigger an automatic re-match notification to all investors with matching mandates.