1. Purpose & Scope
This Standard Operating Procedure (SOP) governs all personnel, field coordinators, and technical subcontractors operating on behalf of OurSiamDream Foundation across Thailand. It enforces compliance with the Personal Data Protection Act B.E. 2562 (PDPA), the Personal Data Protection Committee (PDPC) sub-regulations, and international cross-border non-profit standards.
This document applies to:
- Field survey ingestion during community workshops in Bangkok, Phuket, Pattaya, Krabi, Chiang Mai, and Hua Hin.
- Beneficiary database records for eco-tourism training, micro-grants, and language exchange programs.
- Public photography, media assets, and digital event registration forms.
2. Tiered Legal Consent Workflows
+-----------------------------------------------------------------+
| Beneficiary Interaction |
+-------------------------------+---------------------------------+
|
v
[Is PII required for direct service delivery?]
/ \
YES NO
/ \
v v
+-------------------------------+ +---------------------------------+
| Provide Bilingual PDPA Form | | Ingest Anonymous Aggregated |
| - Purpose specification | | Metrics Only (Village Headcount)|
| - Retention timeframe (2 Yrs) | +---------------------------------+
| - Opt-in toggle for media/news|
+---------------+---------------+
|
[Consent explicitly signed?]
/ \
YES NO
/ \
v v
+-------------------+ +-------------------------------------+
| Ingest to Vault | | Omit PII from system. Provide |
| (AES-256 GCM) | | program services anonymously. |
+-------------------+ +-------------------------------------+
3. Data Classification & Security Requirements
| Classification Tier | Data Attributes | Encryption Requirement | Permitted Storage |
|---|---|---|---|
| Tier 1: Sensitive PII | Health status, dietary religious restrictions, Thai National ID | AES-256-GCM + Salted Hashing | Isolated HashiCorp Vault / Encrypted Postgres |
| Tier 2: General PII | Full name, LINE ID, phone number, village name | Encrypted at Rest (AES-256) | Role-restricted CRM with MFA enforcement |
| Tier 3: Telemetry / Public | Solar generation kW, soil moisture %, ambient temp | Plaintext with integrity HMAC | Public Grafana & open RAG APIs |
4. Field Anonymization Script (Python)
Field teams syncing community feedback to analytical clusters must pass data through the internal pseudonymization engine prior to ingestion:
import hashlib
import os
SECRET_SALT = os.environ.get("OSD_PII_SALT", "secure_local_dev_salt_change_in_prod")
def pseudonymize_participant(national_id: str, village_id: str) -> dict:
"""
Transforms Thai national identifier into an irreversible,
consistent pseudonym for multi-year cohort tracking without PII leakage.
"""
clean_id = national_id.strip().replace("-", "")
salted_string = f"{clean_id}:{SECRET_SALT}:{village_id}"
token = hashlib.sha256(salted_string.encode('utf-8')).hexdigest()[:16]
return {
"anon_id": f"TH-PART-{village_id}-{token}",
"pdpa_compliant": True,
"salt_version": "2026.1"
}
# Example Output:
# {'anon_id': 'TH-PART-PKT-04-a9f3b281c7e2d410', 'pdpa_compliant': True, 'salt_version': '2026.1'}
5. Field Audit & Verification Checklist
- Confirm paper consent notices feature both Thai (Prompt/Sarabun font) and English text with identical opt-in choices.
- Ensure camera operators obtain verbal and sticker consent before capturing high-resolution photos of minors.
- Verify that field tablets use device-level disk encryption (BitLocker / LUKS / Android Knox) with PIN locks.
- Validate that test exports to CSV immediately redact columns containing phone numbers and National ID strings.
- Run automated quarterly purge cron to decommission database records with expired 24-month retention flags.