OWASP's 2025 LLM Top 10 names ten risk categories for applications that use large language models, including risks that make project-specific data-flow checks important (OWASP's LLM risk list). For email-testing an AI-built demo, keep real user and colleague addresses, verification codes, and personal details out of the test data. Use clearly labelled synthetic records, an isolated mail route, and minimal logs. Before a public demo, verify that messages cannot reach real recipients. Generated code is not a privacy review.
Suitable: demos and test environments that can use fictional data and controlled email delivery.
Not suitable: important accounts that need durable access, real customer workflows, or mail conversations that require replies.
Who should read this:
Independent developers preparing to show an AI-generated registration, verification, or notification flow.
Non-technical teams building internal tools and needing to spot demo-data risks.
QA and product teams responsible for demo environments, test accounts, and email acceptance.
Last updated October 20, 2026. Sources checked: OWASP guidance on LLM risks, email verification, and logging; NIST privacy guidance; and the 2026 Sonar developer survey. Recheck the demo's actual configuration before release.
Set the boundaries before creating test data
AI coding tools can make it easy to produce a working sign-up form, password reset flow, and notification template. They do not establish where those messages go or which data the demo can access. Start by drawing the boundary between demo, staging, and production. For each environment, record the connected database, email provider, credentials, recipient rules, and any external services that can send messages.
This small inventory catches problems that can otherwise look like harmless configuration details:
- A demo reads from a production database or a copy containing real names and addresses.
- A shared environment variable points to production mail credentials.
- A reset link uses a production hostname even though the page is branded as a demo.
- A fallback path sends to an account's stored email when the test destination is unavailable.
- Test fixtures or screenshots contain messages copied from real users.
Write a clear team rule: no real user inboxes, colleague personal addresses, real verification codes, or copied customer profiles in demo material. Make test data visibly synthetic, and ensure the environment cannot sync it into production. A label such as demo_test can help people recognize a record, but a label alone does not make an unsafe data path safe.
The reason is practical, not cosmetic. Real messages may contain account identifiers, reset links, or information that reveals a person's relationship with your service. Even when the demo is short-lived, its data may persist in a database export, error-tracking event, or shared screenshot. The right time to prevent that spread is before the first test record exists.
OWASP's generative AI risk material is useful context, but it cannot tell you which data sources your particular project connects to. Inspect your own configuration and flow. The privacy boundaries guide can help you think through which messages and identities should stay outside a temporary-email workflow.
Risk note: Synthetic data lowers exposure to real personal information. It does not automatically make a product compliant with privacy laws or satisfy every organizational policy. Applicability depends on your location, business, and actual data handling.
Choose test data that cannot identify a real person
Create fictional names and account details for the demo. Use a test-only address or a controlled test mailbox rather than an address belonging to a customer, colleague, or family member. Avoid making a test identity by slightly editing a real person's name or address. Small changes can leave the person identifiable, especially when combined with a real organization, job title, or message history.
Synthetic test email addresses need to be distinguishable from production identities and routed only through a test path. Decide how your application recognizes them: for example, use a dedicated test fixture, an explicit environment setting, or a test-only recipient allowlist. Keep that mechanism in the test environment. Do not rely on a developer remembering which address is safe.
Also look beyond the recipient field. A fictional address can still receive content copied from a real account. Check the message subject, body, template variables, attachments, and links. A password reset email should use fictional account data and a test-domain link. A notification should not reveal a real user's activity just because the recipient is synthetic.
The purpose of synthetic data is to reduce the chance that real personal information enters the workflow. It is not a substitute for access controls, secure configuration, or a review of applicable requirements. NIST's privacy engineering guidance on differential privacy explains a specific privacy technique; it does not certify a demo or make ordinary fictional test records automatically anonymous. Apply the technique only when it fits your data and use case.
Use this decision branch when choosing a test destination:
- If you only need to confirm that a message is generated and received: use an isolated test inbox or mail-capture route, with fictional account data.
- If you need to check rendering in a particular mail client: use a controlled test account that contains no real correspondence, and remove test messages after review.
- If the test needs access to real customer history or a production account: stop and redesign the test. Use an approved, minimized dataset and documented access controls rather than copying a real mailbox into the demo.
- If the flow must support ongoing replies or long-term account recovery: do not use an ephemeral address. Use a managed test identity with a responsible owner and a documented lifecycle.
Before the first run, isolate message delivery
A safe-looking test record can still trigger a real email if the application is connected to a live sending service. Before running the demo, inspect the effective configuration, not just the values in a sample file. Confirm which credentials are loaded, which environment is active, how the recipient is selected, and what happens when the preferred test route fails.
Test these behaviors directly:
- A normal registration sends only to the controlled test destination.
- A failed send does not fall back to the address stored in a production record.
- A retry does not duplicate a message to a real user.
- A password reset link points to the demo or test host.
- A template does not pull personal data from a production database.
- A disabled or missing test-mail setting causes a safe failure, not an unreviewed live send.
Review the headers and message body as well as the visible screen. The displayed recipient may differ from the actual delivery target, and a link that looks correct can still contain a production hostname or a token. Treat verification codes, reset links, and session tokens as sensitive values. Do not paste them into prompts, commit them to a repository, or leave them in shared demo notes.
The OWASP email verification guidance covers validation and verification considerations. Apply its recommendations to the workflow you actually built, and check whether the demo's mail settings make that workflow safe. When testing your own product's signup, verification, or reset journey, plan for a controlled test destination rather than making a colleague's inbox the default.
During debugging, keep logs and screenshots lean
Email debugging creates copies. An application log may include a recipient address or a full reset URL. An error-tracking event may capture a template variable. A screenshot can reveal an address, code, account name, or browser tab. Shared screens and recorded demos can spread those details further than the original test environment.
Log only what you need to diagnose the specific failure. For example, record that a test message was queued and whether delivery succeeded, rather than storing its full body or secret-bearing link. Where you need a recipient identifier for debugging, prefer a test fixture label or a masked value over the full address. Do not assume that logs are private merely because they are not visible in the demo interface.
OWASP's logging guidance is a reference for deciding what to log and how to protect logs. In your project, check the application logs, error-tracking service, CI output, shared chat, and recorded screens. Set access according to your team's process, then remove records that are no longer needed under the policy your organization applies. Do not invent a fixed retention period: legal and operational requirements depend on the organization and location.
Before sharing a screenshot, inspect the image itself rather than relying on an automatic blur or a crop. Look for addresses in the message preview, browser notifications, autocomplete menus, copied URLs, and account settings. Replace the underlying data before capturing a new image whenever possible. Redaction after capture can miss text embedded in thumbnails or earlier versions.
Before a public demo, review the generated mail logic
A successful run proves that a path can work. It does not prove that every fallback, retry, or environment switch is safe. Read the generated code and compare it with the running configuration. Check default recipients, production credentials, send toggles, domain names in links, and error branches. If the project includes a scheduled job or webhook, verify that it cannot send a real notification during the presentation.
Use this qualitative comparison to choose an approach. The exposure ratings are decision aids, not measured performance scores.
| Test approach | Privacy exposure | Best fit | Main condition to verify |
|---|---|---|---|
| Real personal inbox | High | Rarely appropriate for a demo | Personal messages, addresses, and reset links may persist in inboxes or captures |
| Synthetic account with isolated test mail | Low when configured correctly | Registration, verification, reset, and notification checks | Confirm routing, link host, and fallback behavior |
| Controlled test account in a real mail client | Medium | Rendering checks in a specific client | Keep it free of personal correspondence and restrict access |
| Production-like data copy | High unless carefully minimized and controlled | Tests that genuinely require realistic structure | Remove identifiers, restrict access, and prevent production sync |
For the final review, make the decision based on the path, not on whether the code was AI-generated:
- If the demo has separate test credentials, an isolated recipient route, fictional data, and no production data source, run the demonstration checks and record who reviewed them.
- If any setting is shared with production or the recipient path is unclear, do not send a live test. Disable sending or route to a controlled test destination until the path is understood.
- If generated code contains a hard-coded address, secret, or production hostname, correct it and inspect the repository history and logs for earlier copies.
- If you cannot inspect the failure and retry branches, treat the send path as unverified. A successful happy-path test is not enough to approve public use.
The 2026 Sonar developer survey can provide trend context for AI-assisted development, but a trend report is not evidence that a particular demo is secure or that every AI-assisted project exposes personal data (Sonar's 2026 developer survey report). Make the decision from your own configuration and test evidence. Keep the review focused on your own product; do not use the workflow to create accounts on unrelated services.
After the demo, assign cleanup and verify it
Temporary records often outlive the demo because no one owns their removal. Before the presentation, name a cleanup owner and define the trigger: for example, once the demo ends or once a test environment is retired. List the places to review, including demo accounts, captured messages, logs, screenshots, exported fixtures, and shared notes.
Use a cleanup record that answers these questions:
- Which demo environment and test accounts were reviewed?
- Were captured messages, codes, links, and logs removed or handled under the team's policy?
- Did anyone find a production recipient, personal detail, or live credential?
- Who performed the review, and who confirmed completion?
- Does any remaining record have a documented reason to stay?
If a record must remain for an approved operational reason, restrict access and document why. Do not promise deletion by a universal deadline; the right retention period depends on the applicable policy and legal requirements. After cleanup, check shared environments for leftover codes or identifying details, and update seed data so the next run does not recreate the same risk.
Frequently asked questions
Can I use a real email address to test an AI-built demo?
Avoid using a real personal inbox when a synthetic test address and isolated test mail route will do the job. A real inbox can expose messages, verification links, or account details in shared screenshots and logs, and it can receive accidental production mail. If you need to check rendering in a personal client, use a controlled account with no real customer data and remove the test message afterward.
What should I do with verification codes and personal details in test emails?
Use fictional account details and treat verification codes and reset links as secrets, even in a demo. Keep them out of source code, prompts, screenshots, and routine logs. Confirm that links point to the test environment, restrict access to any captured message, and clear test records when they are no longer needed under your team's retention policy.
How can I check that a demo email will not reach a real user?
Before presenting the demo, inspect the active mail provider, environment variables, recipient resolution, default recipients, and fallback behavior. Send test messages only to a controlled test destination, then exercise success, failure, and retry paths. Confirm that production credentials and customer lists are unavailable to the demo, rather than relying only on comments or assurances in generated code.
How do I keep real personal information out of demo test data?
Create fictional names, addresses, and account content specifically for testing. Search prompts, repository examples, logs, shared screenshots, and demo seed files for copied messages or identifiable details. Separate demo data from production sources, limit access to stored test records, and assign someone to review and clean them up after the demonstration.
To fit these checks into an existing QA workflow, use a controlled test destination for temporary signups and keep long-lived accounts on managed test identities. For delivery failures, see the developer troubleshooting guide. TmpWay can be one option for temporary test registration or receiving a verification message, but it is not a substitute for a managed identity when you need durable access, replies, or long-term account recovery. Keep the central rule simple: if an email test can work with synthetic data, there is no reason to put a real person's inbox or personal details into the demo.
Frequently asked questions
Can I use my real email address to test an AI-built demo?
Avoid using a real personal inbox when a synthetic test address and isolated test mail route will do the job. A real inbox can expose messages, verification links, or account details in shared screenshots and logs, and it can receive accidental production mail. If you need to check rendering in a personal client, use a controlled account with no real customer data and remove the test message afterward.
What should I do with verification codes and personal details in test emails?
Use fictional account details and treat verification codes and reset links as secrets, even in a demo. Keep them out of source code, prompts, screenshots, and routine logs. Confirm that links point to the test environment, restrict access to any captured message, and clear test records when they are no longer needed under your team's retention policy.
How can I check that a demo email will not reach a real user?
Before presenting the demo, inspect the active mail provider, environment variables, recipient resolution, default recipients, and fallback behavior. Send test messages only to a controlled test destination, then exercise success, failure, and retry paths. Confirm that production credentials and customer lists are unavailable to the demo, rather than relying only on comments or assurances in generated code.
How do I keep real personal information out of demo test data?
Create fictional names, addresses, and account content specifically for testing. Search prompts, repository examples, logs, shared screenshots, and demo seed files for copied messages or identifiable details. Separate demo data from production sources, limit access to stored test records, and assign someone to review and clean them up after the demonstration.