A compliance-first, public-source intelligence architecture monitoring strategic infrastructure convergence within the Dominican Republic across mining, energy, connectivity, logistics, telecom, and capital flows.
| Domain | Description |
|---|---|
| π‘ Mining & Resource Intelligence | Rare earths, concessions, geological signals |
| π’ Energy Infrastructure | Solar, BESS, grid, generation, PPAs |
| π΅ Connectivity & Telecom | Subsea cables, data centers, IXPs, spectrum |
| π Logistics & Trade Corridors | Ports, airports, free zones, cargo flows |
| π£ Capital Structuring | SPVs, project finance, institutional modeling |
| π΄ Risk & Regulatory Intelligence | Political, ESG, FX, compliance friction |
| β« Governance & Audit Integrity | Chain-of-custody, append-only logs |
| π§ Agentic RAG Intelligence Layer | Vector retrieval, claim citation, anti-hallucination enforcement |
DICS (DR Intelligence Command System) is a structured intelligence platform designed to detect, score, and prioritize strategic infrastructure signals across the Dominican Republic.
The system operates across three integrated layers:
- Intelligence Acquisition
- Structured Extraction & Scoring
- Capital-Ready Output & Governance
Every claim is traceable. Every document is hashed. Every alert is justified.
This is not commentary.
It is executable intelligence.
The platform continuously monitors 18 public sources across Tier 1β4 classifications.
- Source Registry & Tiered Credibility Model
- Conditional Fetching (ETag / Last-Modified)
- SHA-256 Deduplication
- robots.txt Enforcement
- Denial Logging to audit_log
This layer ensures:
- Legal compliance
- Conditional network efficiency
- Chain-of-custody integrity
config/sources.yaml (18 public sources, Tiers 1β4)
β
βΌ
ββββββββββββββββββββββ ETag / Last-Modified
β Collector β ββββββββββββββββββββββββ source_cache
β Node/TypeScript β
β axios-retry β
β + robots.txt β
ββββββββββββββββββββββ
β SHA-256 hash + raw + clean text
βΌ
PostgreSQL 16 / pgvector
Documents are processed through a Python 3.12 NLP pipeline.
- Named Entity Recognition (spaCy)
- Event Classification Engine
- Atomic Claim Detection
- Numerical Signal Extraction (USD, MW, Tons, KM)
- Sentence-Transformer Embeddings (vector(384))
All claims are stored in PostgreSQL 16 + pgvector.
Every extracted claim is linked to:
document.id- source URL
- tier classification
- composite score
Each claim is scored across five weighted dimensions:
Score =
(0.30 Γ Credibility)
+ (0.25 Γ Materiality)
+ (0.15 Γ Recency)
+ (0.20 Γ Opportunity)
β (0.10 Γ Risk)
| Dimension | Weight | Driver |
|---|---|---|
| Credibility | 30% | Tier Γ corroboration |
| Materiality | 25% | USD + strategic density |
| Recency | 15% | Freshness decay |
| Opportunity | 20% | Expansion / tender signals |
| Risk | β10% | Friction penalties |
Claims β₯ 0.65 are promoted to the alert pipeline.
DICS monitors cross-sector acceleration across:
Concessions Β· Rare earth claims Β· Beneficiation signals
Solar buildouts Β· BESS installations Β· Grid expansions
Submarine cable landings Β· Data centers Β· Telecom spectrum
Port expansion Β· Air cargo growth Β· Free zone activity
DFI financing Β· Project finance stack Β· SPV structuring
A five-dimensional risk radar tracks:
| Risk Category | Low | Medium | High | Primary Mitigation |
|---|---|---|---|---|
| Political | π’ | π‘ | π΄ | DFI co-finance + political risk insurance |
| Regulatory | π’ | π‘ | π΄ | Local counsel + compliance buffer period |
| ESG | π’ | π‘ | π΄ | Independent environmental audit |
| FX Exposure | π’ | π‘ | π΄ | USD-denominated contract structures |
| Execution | π’ | π‘ | π΄ | EPC guarantees + milestone escrow |
Mitigation pathways are embedded in the capital modeling layer.
DICS enforces:
- Append-only
audit_log - Append-only
proof_registry - SHA-256 document hashing
- Blockchain-ready anchoring
- Source traceability on every claim
No UPDATE or DELETE allowed at the database rule level.
Institutional integrity is enforced at schema level.
User Query
β
βΌ
Embedding Model (all-MiniLM-L6-v2)
β
βΌ
pgvector cosine similarity search
β
βΌ
Top 10 relevant claims
β filtered: credibility β₯ 0.70
βΌ
Response with claim_id + document_id citations
Anti-hallucination policy: If evidence is insufficient, DICS explicitly states missing evidence types.
Every promoted intelligence report can be cryptographically anchored.
| Column | Purpose |
|---|---|
document_hash |
SHA-256 of clean content |
chain_id |
Target chain: polygon Β· ethereum Β· xrpl Β· private |
chain_tx_hash |
On-chain transaction reference |
block_number |
Immutable block reference |
anchored_at |
Timestamp of on-chain confirmation |
Document β SHA-256 Hash β proof_registry β Web3 Anchor β On-chain Tx Reference
Table is append-only β UPDATE and DELETE are blocked at the database rule level.
Prometheus endpoint:
GET :9091/metrics
| Metric | Description |
|---|---|
collector_fetch_total |
All fetch attempts |
collector_fetch_ok |
Successful (2xx/3xx) fetches |
collector_fetch_fail |
Network or server errors |
collector_robots_denied |
URLs blocked by robots.txt |
collector_dedupe_skipped |
Duplicate content skipped |
collector_documents_saved |
New documents persisted |
extractor_claims_generated |
Claims extracted and scored |
alerts_sent |
Cloudflare webhook dispatches |
Health check:
GET :9091/health β { "status": "ok", "ts": "β¦" }
DICS does not speculate.
It does not scrape behind authentication.
It does not bypass paywalls.
It operates strictly within:
- Public-source intelligence boundaries
- robots.txt compliance
- Append-only governance
- Structured, traceable scoring
The output is defensible.
| Tier | Type | Confidence | Examples |
|---|---|---|---|
| 1 | Official government/regulators | 1.0 | MEM, INDOTEL, APORDOM, Banco Central |
| 2 | Multilateral & data agencies | 0.9 | World Bank, IDB, USGS, ITU |
| 3 | Industry trade publications | 0.7 | DatacenterDynamics, PV Magazine, JOC |
| 4 | Corporate press rooms | 0.6 | Google Blog, Amazon Newsroom, AES |
| 5 | Community / social signals | 0.4 | Chambers, verified accounts |
All 18 configured sources are in config/sources.yaml.
Province-level operational context derived from World Bank, IDB, and ONE.
| Province | Population | Workforce | Primary Sector | Infra Readiness | Risk Score |
|---|---|---|---|---|---|
| Santo Domingo | High | High | Services / Trade | Advanced | Medium |
| Santiago | High | Medium | Manufacturing | Growing | Low |
| La Altagracia | Medium | Medium | Tourism | High | Medium |
| San Pedro de MacorΓs | Medium | Medium | Free Zones | Established | Low |
| Pedernales | Low | Low | Mining (emerging) | Developing | High |
| MonseΓ±or Nouel | Low | Low | Mining / Forestry | Underdeveloped | High |
- Docker Desktop (Postgres + Redis)
- Node.js 20+
- Python 3.12+
cp .env.example .env
# Edit .env β set POSTGRES_PASSWORD at minimumdocker compose up postgres redis -dcd collector
npm install
npm run dev # metrics at http://localhost:9091/metricscd extractor
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python -m spacy download en_core_web_sm
cd src && python main.pydocker compose up --buildcd alerts
npm install
wrangler secret put WEBHOOK_SECRET
wrangler secret put SLACK_WEBHOOK_URL
npm run deployβββ .github/
β βββ copilot-instructions.md
β βββ workflows/deploy.yml GitHub Actions β Netlify CI/CD
βββ alerts/ Cloudflare Worker β HMAC webhook β Slack
β βββ src/index.ts
β βββ package.json
β βββ wrangler.toml
βββ collector/ Node 20 / TypeScript fetch pipeline
β βββ src/
β β βββ index.ts Entrypoint β scheduler + metrics server
β β βββ lib/
β β β βββ logger.ts Structured pino logging
β β β βββ metrics.ts Prometheus /metrics endpoint
β β βββ scheduler/ CronJob + p-queue orchestration
β β βββ fetcher/ axios-retry + robots.txt guard
β β βββ normalizer/ @mozilla/readability HTML β clean text
β β βββ deduper/ SHA-256 duplicate detection
β β βββ storage/ PostgreSQL persistence + audit log
β β βββ config/ sources.yaml loader
β βββ Dockerfile
β βββ package.json
β βββ tsconfig.json
βββ dashboard/ Next.js 14 live intelligence console
β βββ src/
β β βββ app/
β β β βββ page.tsx Executive overview dashboard
β β β βββ layout.tsx Dark theme + sidebar navigation
β β β βββ api/ 8 serverless API routes
β β βββ components/ 8 intelligence components
β β βββ lib/
β β βββ db.ts Serverless-safe PostgreSQL pool
β β βββ types.ts 13 TypeScript interfaces
β βββ netlify.toml
β βββ package.json
β βββ tsconfig.json
βββ extractor/ Python 3.12 NLP pipeline
β βββ src/
β β βββ main.py Poll loop + orchestration
β β βββ ner/extractor.py spaCy entity/event/claim extraction
β β βββ scoring/scorer.py 5-dimension claim scoring
β β βββ embeddings/embedder.py sentence-transformers β pgvector
β β βββ storage/db.py psycopg2 + pgvector persistence
β βββ Dockerfile
β βββ requirements.txt
βββ shared/
β βββ db/001_init.sql Full schema + pgvector + proof_registry
β βββ schemas/ 8 JSON Schema definitions
βββ config/
β βββ sources.yaml 18 monitored sources, Tier 1β4
βββ docker-compose.yml pgvector/pg16 + Redis 7 + services
βββ .env.example
βββ README.md
| Table | Purpose |
|---|---|
documents |
Raw + clean text, SHA-256 hash, dedup key, tier, tags |
entities |
Named entities: ORG, GPE, PERSON, ASSET, PERMIT, AGENCY |
events |
Typed events: ConcessionAward, TenderRelease, CapexAnnouncement |
claims |
Scored atomic statements with vector(384) embeddings |
relationships |
Entity graph edges with typed relations |
audit_log |
Append-only event log β UPDATE/DELETE blocked at DB level |
source_cache |
ETag / Last-Modified per source for conditional GETs |
proof_registry |
Blockchain anchoring registry β append-only |
[Government Agency]
β issues
βΌ
[Concession Permit]
β enables
βΌ
[Mining Project] βββββ finances ββββ [DFI / Infra Fund]
β
β secured by
βΌ
[SPV Vehicle]
β generates
βΌ
[Revenue Streams]
Relationship types: finances Β· owns Β· operates Β· regulates Β· partners_with Β· awards_to
config/sources.yaml
β
βΌ
βββββββββββββββββββ raw docs ββββββββββββββββββββ
β Collector β βββββββββββββββΊ β PostgreSQL 16 β
β Node/TypeScriptβ β + pgvector β
β β’ Scheduler β βββ ETag cache β β β’ documents β
β β’ Fetcher β β β’ entities β
β β’ Normalizer β β β’ events β
β β’ Deduper β β β’ claims β
βββββββββββββββββββ β β’ relationships β
β β’ audit_log β
βββββββββββββββββββ extracts to β β’ proof_registryβ
β Extractor β βββββββββββββββΊ β β
β Python 3.12 β β (pgvector for β
β β’ spaCy NER β β RAG retrieval) β
β β’ Scorer β ββββββββββββββββββββ
β β’ Embedder β
βββββββββββββββββββ βββββββββββββββββββββββββ
β β Cloudflare Worker β
βββ high score ββββΊ β Alert Webhook β
β β Slack notification β
βββββββββββββββββββββββββ
βββββββββββββββββββ
β Dashboard β βββββ PostgreSQL queries
β Next.js 14 β
β β’ 8 API routes β
β β’ 8 components β
β β’ Convergence β
β β’ Trend Engine β
βββββββββββββββββββ
β
βΌ
https://dics-dr-intelligence.netlify.app
- Only public sources are fetched β no paywall bypass, no login bypass, no CAPTCHA circumvention
robots.txtis respected on every run; denials are recorded inaudit_log- Every claim traces to a
document.id+ source URL audit_logandproof_registryare append-only at the database rule level- SHA-256 content hash is stored on every document for chain-of-custody
- High-impact claims require corroboration β₯ 2 sources before alert dispatch
DICS is designed to support:
- Institutional capital committees
- Infrastructure allocators
- Strategic advisory firms
- Sovereign development analysis
It transforms fragmented public signals into structured, capital-grade intelligence.
Live Dashboard: dics-dr-intelligence.netlify.app
Repository: github.com/FTHTrading/DR