AI Studio · Portfolio demo

Privacy

A concise overview of what this portfolio demo processes, why, and where it goes. Written as product documentation, not a formal legal instrument.

Last updated July 2026

Overview

Pontus De Joung operates https://pontusdejoung.se as a personal portfolio demonstration of governed LLM patterns. The corpus contains only public Swedish government documents. The demo does not hold protected agency data.

Some technical and usage information is processed to deliver the demo, protect access, and keep the service reliable. Details below reflect the actual implementation in this repository.

Privacy by design

This demo is intentionally designed to minimize data collection.

  • • No advertising cookies
  • • No marketing trackers
  • • No cross-site profiling
  • • Public government documents only
  • • Operational logging only where required for security and reliability

What we collect

  • Page views and navigation paths, to understand which demo areas are used (Vercel Web Analytics, aggregated).
  • Hashed client IP and security event metadata, for audit logging and abuse detection (7-day Redis buffer, up to 90-day Postgres retention when configured).
  • Raw client IP, for per-IP rate limiting when Upstash Redis is configured.
  • Invite-code validation events may record the outcome and operational metadata, but the submitted code itself is not stored in full.
  • Chat, eval, academy, and agent inputs, transmitted to OpenAI to generate responses. Not stored in this application's database.
  • Browser preferences and demo UI state: theme, optional agent-cycle metrics, and short-lived session handoffs (see Cookies page).

Why we collect it

  • Deliver AI-assisted answers and evaluation features you request.
  • Restrict demo access to invited visitors.
  • Rate-limit abusive or automated traffic.
  • Maintain a minimal security audit trail for gate and API events.
  • Measure aggregate usage of the demo surfaces.

Third-party processors

Always used on the hosted demo

  • Vercel Hosting

    Hosts the Next.js application and platform request logs.

    Data involved: HTTP requests, response metadata, server log lines.

  • Vercel Web Analytics

    Cookieless page-view analytics when enabled in the Vercel project.

    Data involved: Page path (query strings stripped), referrer, country, device, OS, browser.

  • OpenAI

    Chat, embeddings, eval, grounding, injection screening, and optional feature pipelines.

    Data involved: User prompts, conversation context, and retrieved public corpus excerpts sent per request.

  • Upstash Vector

    Vector retrieval for RAG over the indexed public document corpus.

    Data involved: Query embedding vectors and corpus chunk metadata already stored in the index.

Only when explicitly configured

  • Upstash Redis

    Per-IP rate limits and a short rolling audit buffer when credentials are set.

    Data involved: Client IP address, rate-limit counters, serialized audit events.

  • Cohere

    Optional multilingual reranking of retrieved chunks.

    Data involved: Original user query and public corpus chunk text.

  • Neon Postgres

    Optional durable audit history and redacted email-demo records.

    Data involved: Hashed IP, event metadata, redacted email fields. Not raw chat content.

  • Azure Document Intelligence

    Optional OCR and layout analysis for the document-intelligence feature.

    Data involved: Uploaded or attached document bytes.

  • Brevo

    Optional inbound webhook and outbound acknowledgement or reply transport.

    Data involved: Email addresses, message content, and delivery metadata.

  • Sentry

    Optional server-side error and performance monitoring when enabled.

    Data involved: Exception stack traces, route context, sampled performance spans.

Optional processors remain inactive unless the corresponding feature has been enabled in the deployment. When disabled, no data is sent to those providers. The live chat and RAG experience requires OpenAI and Upstash Vector.

Retention

  • Gate session cookie: 24 hours.
  • Audit events in Redis: retained for up to 7 days (maximum 500 events).
  • Audit events in Postgres: up to 90 days.
  • Redacted email-demo rows in Postgres: up to 30 days.
  • Rate-limit counters: short sliding or fixed windows in Redis.
  • Chat content: not persisted in the application database. Requests are processed by OpenAI, whose retention policies apply to data processed by their service.
  • Eval JSONL run logs: written locally or in CI only. Skipped on Vercel serverless.

Security

  • Content Security Policy with per-request nonces and strict-dynamic script policy.
  • HttpOnly, Secure (production) gate cookie with SameSite=Lax.
  • Salted IP hashing in audit logs. Raw IP only where rate limiting requires it.
  • PII redaction on email-triage paths before model calls and database writes.
  • Token-gated audit read API. Submitted invite codes are not stored in audit events.

Architecture and pipeline detail: Transparency.

International transfers

Some third-party providers may process data outside the European Economic Area (EEA), depending on the deployment configuration. Where available, regional endpoints or regional hosting may be used to reduce cross-border data transfers.

Your rights

Under GDPR you may have rights to access, rectify, erase, restrict, or object to processing of personal data, and to data portability where applicable. If you have questions about how your information is processed, or wish to exercise your rights where applicable, please use the contact details below.

For erasure of redacted email-demo records stored by sender hash, contact the operator when the Neon store is enabled.

Contact

Privacy questions

Pontus De Joung

Email: pontusdejounge@gmail.com

Additional technical implementation details are available on the Transparency page.

Browser storage and analytics behaviour: Cookies & storage.

Privacy · AI Studio