DataProteins × HERE Technologies

Trust & Security

How the Location Copilot keeps its answers verifiable and your data safe — written for IT Security, Compliance and IT Audit reviewers.
ระบบ Location Copilot รักษาความถูกต้องของคำตอบและความปลอดภัยของข้อมูลอย่างไร — เขียนสำหรับผู้ตรวจสอบด้าน IT Security, Compliance และ IT Audit

1 · What this system is

The Location Copilot is a location-intelligence assistant for Thailand. Its flagship use case is EV charging-station site selection; the same engine answers site questions for other business types. Every answer is produced from two live data APIs plus one AI model, all called at question time:

1 · ระบบนี้คืออะไร

Location Copilot คือผู้ช่วยวิเคราะห์ทำเลสำหรับประเทศไทย — use case หลักคือการเลือกทำเลสถานีชาร์จ EV และเครื่องยนต์เดียวกันตอบคำถามทำเลของธุรกิจอื่นได้ด้วย ทุกคำตอบสร้างจาก API ข้อมูลสด 2 ชุด บวกโมเดล AI หนึ่งตัว ซึ่งถูกเรียก ณ เวลาที่ถามเสมอ:

BrowserMap + chat UI. Never holds server API keys.แผนที่ + แชต — ไม่เคยถือ API key ของ server
DataProteins serverAuthentication, siting model, audit log, output guardsยืนยันตัวตน, โมเดลคัดทำเล, บันทึกการใช้งาน, ยามตรวจคำตอบ
HERE APISupply side: live POI / charging stations, geocoding, isolinesฝั่ง supply: สถานีชาร์จ/POI สด, geocode, isoline
DataProteins API (dpapi)Demand side: district metrics (population, condos, retail, land price …)ฝั่งดีมานด์: ตัวชี้วัดรายอำเภอ (ประชากร คอนโด ค้าปลีก ราคาที่ดิน ฯลฯ)
Anthropic API (Claude)Language model that orchestrates tool calls and writes the answerโมเดลภาษา — เรียกเครื่องมือและเรียบเรียงคำตอบ

2 · How we prevent AI hallucination

The model is not allowed to answer from its own memory. Controls are enforced in code, not only in prompts:

  • Tool-grounded numbers. Every number, coordinate and place name must come from an API call made in the same turn. Ranking, scoring and distances are computed by our deterministic code — the model reports them, it does not invent them.
  • The “Behind this answer” panel. Every answer ships with the full list of API calls that produced it (system, endpoint, result). Users can audit any answer themselves, on screen.
  • “Not measured” is never rendered as zero. Supply data is always in one of three states — measured (real distances from a live search), empty (searched, none found), or unknown (not measured — the score falls back to demand-only and no distance is ever claimed).
  • Mandatory geocoding. The model is forbidden from recalling coordinates; addresses and place names must go through HERE Geocoding, and unresolvable places are reported as not found — never guessed.
  • Server-side output scrubbing. Responses are filtered server-side before display (internal identifiers are stripped) — a code-level guard, independent of the model's behaviour.
  • Scope refusal. General-knowledge questions (news, history, coding…) are declined. If it cannot be traced to an API call, the system does not answer it.

2 · เรากัน hallucination ของ AI อย่างไร

โมเดลไม่ได้รับอนุญาตให้ตอบจากความจำของตัวเอง — มาตรการบังคับในโค้ด ไม่ใช่แค่ในพรอมป์ต:

  • ตัวเลขต้องมาจากเครื่องมือ — ตัวเลข พิกัด และชื่อสถานที่ทุกตัวต้องมาจาก API call ในเทิร์นนั้น การจัดอันดับ คะแนน และระยะทางคำนวณโดยโค้ด deterministic ของเรา — โมเดลมีหน้าที่รายงาน ไม่ใช่แต่งเอง
  • แผง «เบื้องหลังคำตอบนี้» — ทุกคำตอบแนบรายการ API call ที่ใช้ (ระบบ endpoint ผลลัพธ์) ผู้ใช้ตรวจสอบเองได้ทุกคำตอบบนหน้าจอ
  • "ยังไม่ได้วัด" ไม่มีวันถูกแสดงเป็นศูนย์ — ข้อมูล supply มี 3 สถานะเสมอ: วัดแล้ว (ระยะจริงจากการค้นสด) · ค้นแล้วไม่พบ (ผลค้นจริง) · ยังไม่ได้วัด (คะแนนถอยเป็นดีมานด์ล้วน และจะไม่อ้างระยะทางใด ๆ)
  • บังคับ geocode — ห้ามโมเดลนึกพิกัดจากความจำ ที่อยู่/ชื่อสถานที่ต้องผ่าน HERE Geocoding หาไม่เจอ = บอกตรง ๆ ว่าไม่เจอ ไม่เดาต่อ
  • ยามกรองคำตอบฝั่ง server — คำตอบถูกกรองก่อนแสดงผล (ตัดรหัสภายในทิ้ง) เป็นยามระดับโค้ด ไม่พึ่งพฤติกรรมโมเดล
  • ปฏิเสธนอกขอบเขต — คำถามความรู้ทั่วไป (ข่าว ประวัติศาสตร์ โค้ด ฯลฯ) ถูกปฏิเสธ อะไรที่สืบกลับ API call ไม่ได้ ระบบไม่ตอบ

3 · No internet access at answer time

When answering, the system can reach exactly two data sources: the HERE API and the DataProteins API. The model has no web-browsing or search capability in this application. Nothing is pulled from the open internet, so answers cannot be contaminated by unverified web content.

3 · ไม่มีการค้น internet ตอนตอบ

ขณะตอบ ระบบเข้าถึงแหล่งข้อมูลได้เพียง 2 ชุด: HERE API และ DataProteins API — โมเดลไม่มีความสามารถท่องเว็บ/ค้นเว็บในแอปพลิเคชันนี้ จึงไม่มีทางที่คำตอบจะปนเปื้อน เนื้อหาจากอินเทอร์เน็ตที่ตรวจสอบไม่ได้

4 · Is customer data used to train the AI?

No — not by default, per Anthropic's published policy. This system calls the Claude model through the commercial Anthropic API. Anthropic's data policy states:

“By default, we will not use your inputs or outputs from our commercial products (e.g. Claude for Work, Anthropic API, Claude Gov, etc.) to train our models.” Source: Anthropic Privacy Center — “Is my data used for model training?” (privacy.claude.com)

The stated exception is when a customer explicitly submits feedback/bug reports to Anthropic — this application has no such feedback channel, so no conversation is ever shared for training through it. If a user pastes business data (e.g. real sales figures) into the chat, it is used in-context only to answer that conversation: it is not written into DataProteins' analytical database and not used to train any model.

4 · ข้อมูลลูกค้าถูกนำไปเทรน AI หรือไม่

ไม่ — โดยค่าเริ่มต้น ตามนโยบายที่ Anthropic ประกาศเป็นลายลักษณ์อักษร ระบบนี้เรียกโมเดล Claude ผ่าน Anthropic API เชิงพาณิชย์ ซึ่งนโยบายของ Anthropic ระบุว่า:

“By default, we will not use your inputs or outputs from our commercial products (e.g. Claude for Work, Anthropic API, Claude Gov, etc.) to train our models.” ที่มา: Anthropic Privacy Center — “Is my data used for model training?” (privacy.claude.com)

ข้อยกเว้นเดียวที่นโยบายระบุคือกรณีลูกค้ากดส่ง feedback/รายงานบั๊กให้ Anthropic เอง — แอปนี้ไม่มีช่องทาง feedback แบบนั้น จึงไม่มีบทสนทนาใดถูกส่งไปเทรนผ่านช่องทางนี้ ถ้าผู้ใช้วางข้อมูลธุรกิจ (เช่น ยอดขายจริง) ลงในแชต ข้อมูลนั้นถูกใช้เฉพาะในบริบทของบทสนทนานั้น เพื่อตอบคำถาม — ไม่ถูกบันทึกเข้าฐานข้อมูลวิเคราะห์ของ DataProteins และไม่ถูกใช้เทรนโมเดลใด ๆ

5 · What we store, and for how long

DataWherePurpose
User accounts (username, salted PBKDF2-SHA256 password hash, role) App database (SQLite, server-side)Authentication; admin-managed, no self-signup
Usage audit log — timestamp, user, question text, tools used, duration, token counts, HERE-call count, client IP App databaseSecurity audit and usage accounting (a customer requirement)
API keys entered by the user (⚙ panel) Browser localStorage only — attached per request, never persisted server-side, never logged Bring-your-own-key testing
Map/POI results from HEREServer RAM cache, 5-minute TTL — never written to disk (per HERE's terms: no offline bulk storage)Latency + quota efficiency

Accounts and audit entries can be deactivated/deleted by the administrator on request.

5 · เราเก็บอะไร นานแค่ไหน

ข้อมูลที่เก็บวัตถุประสงค์
บัญชีผู้ใช้ (username, รหัสผ่านแบบ salted PBKDF2-SHA256 hash, role) ฐานข้อมูลของแอป (SQLite ฝั่ง server)ยืนยันตัวตน — admin สร้างบัญชีให้ ไม่มี self-signup
บันทึกการใช้งาน — เวลา ผู้ใช้ ข้อความคำถาม เครื่องมือที่ใช้ ระยะเวลา จำนวนโทเคน จำนวน HERE call และ IP ฐานข้อมูลของแอปตรวจสอบความปลอดภัย + บัญชีการใช้งาน (ข้อกำหนดของลูกค้า)
API key ที่ผู้ใช้ใส่เอง (แผง ⚙) localStorage ของเบราว์เซอร์เท่านั้น — แนบไปต่อ request ไม่บันทึกฝั่ง server ไม่ลง log ทดสอบด้วย key ของผู้ใช้เอง
ผลลัพธ์แผนที่/POI จาก HEREcache ใน RAM ของ server อายุ 5 นาที — ไม่เขียนลงดิสก์ (ตามข้อกำหนดของ HERE: ห้ามเก็บ bulk แบบ offline)ความเร็ว + ประหยัด quota

บัญชีและรายการ log ปิดใช้งาน/ลบได้โดยผู้ดูแลระบบเมื่อร้องขอ

6 · Access control & application security

  • Per-user accounts with roles (admin / user); accounts are created by the administrator only.
  • Passwords hashed with PBKDF2-HMAC-SHA256 (200,000 iterations, per-user salt); never stored in plain text.
  • Sessions via HttpOnly, SameSite cookies; only a SHA-256 hash of the session token is stored server-side; sessions are revoked on password change or account deactivation.
  • Login rate limiting per source IP; failed attempts are logged.
  • Server-held API keys (HERE / Anthropic / DataProteins) are never exposed to the browser — map tiles are proxied server-side specifically so the HERE key cannot leak.
  • All traffic over HTTPS/TLS in production; per-user daily usage caps limit abuse and cost exposure.

6 · การควบคุมสิทธิ์และความปลอดภัยของแอป

  • บัญชีรายบุคคลพร้อม role (admin / user) — ผู้ดูแลระบบเป็นผู้สร้างบัญชีเท่านั้น
  • รหัสผ่าน hash ด้วย PBKDF2-HMAC-SHA256 (200,000 รอบ + salt ต่อคน) — ไม่เก็บ plain text
  • session ใช้ cookie แบบ HttpOnly + SameSite · ฝั่ง server เก็บเฉพาะ SHA-256 ของ token · เปลี่ยนรหัส/ปิดบัญชี = session เดิมหลุดทันที
  • จำกัดความถี่การ login ต่อ IP และบันทึกการพยายามที่ล้มเหลว
  • API key ฝั่ง server (HERE / Anthropic / DataProteins) ไม่หลุดถึงเบราว์เซอร์ — แผนที่วิ่งผ่าน proxy ฝั่ง server โดยเฉพาะเพื่อไม่ให้ key ของ HERE รั่ว
  • การรับส่งทั้งหมดผ่าน HTTPS/TLS บน production · มีเพดานการใช้งานรายวันต่อผู้ใช้

7 · Scope & known limitations (POC honesty)

This is a proof-of-concept deployment, and we prefer to state its limits plainly:
  • No SSO/SAML integration yet (available in an enterprise engagement).
  • No third-party penetration test has been performed yet on this POC.
  • The demand index is calibrated for the EV use case; other verticals are answered with the same urban-activity index, clearly labelled as such in the answers. Vertical-specific calibration is an engagement deliverable.
  • Availability is best-effort for the testing period.
Enterprise options (dedicated deployment, SSO, DPA/PDPA paperwork, log export to SIEM) are available as part of a production engagement.

7 · ขอบเขตและข้อจำกัดที่ทราบ (ความตรงไปตรงมาแบบ POC)

นี่คือระบบระดับ proof-of-concept — เราขอบอกขีดจำกัดตรง ๆ:
  • ยังไม่มี SSO/SAML (ทำได้ในงาน enterprise engagement)
  • ยังไม่ผ่านการทดสอบเจาะระบบ (pen test) โดยบุคคลที่สาม
  • ดัชนีดีมานด์ปรับเทียบมาสำหรับ use case EV — vertical อื่นตอบด้วยดัชนีกิจกรรมเมืองตัวเดียวกัน และคำตอบจะระบุข้อนี้ชัดเจน · การปรับเทียบเฉพาะ vertical เป็นงานส่งมอบใน engagement
  • ความพร้อมใช้งานเป็นแบบ best-effort ในช่วงทดสอบ
ตัวเลือกระดับ enterprise (deployment เฉพาะ, SSO, เอกสาร DPA/PDPA, ส่งออก log เข้า SIEM) จัดให้ได้ในงาน production engagement

8 · Contact

Security questions and disclosure: dataproteins@gmail.com. We answer security review questionnaires as part of any evaluation.

8 · ติดต่อ

คำถามด้านความปลอดภัย: dataproteins@gmail.com — เรายินดีตอบแบบสอบถาม security review ประกอบการประเมิน