BA AI Engineer & Full-Stack TypeScript Developer

How this runs

Security

If you are evaluating me as a contractor, this is the page you were going to ask for. Everything below is either checked automatically on every push or listed as something nobody has checked — there is no third category.

Last updated: 7 September 2026

1 · What runs where

A static Astro site with a small server in front of it, on Railway. PostgreSQL on Neon. The AI agent runs in the same process as the site rather than as a separate service. Every page is served over HTTPS; the full list of third parties is on sub-processors.

2 · What is checked automatically, on every push

Twenty-one gates run before anything ships. They are ordinary scripts, not a dashboard, and a red one blocks the change. The security-relevant ones:

  • Security headers, verified on the wire. Four headers are asserted against a real running build — plus a counter-case that boots the server without the wrapper and requires all four to be absent, so the test cannot pass by accident.
  • Rate limiting per visitor. Metered by IP, and the proxy hop count is measured against the live edge rather than assumed — an off-by-one there silently turns a per-visitor limit into a per-datacentre one.
  • Cross-session isolation. A forged session cookie is refused, a fresh session is issued, and another visitor's record is checked byte-for-byte unchanged.
  • Prompt-injection handling. Adversarial inputs are replayed against the agent, and the tools it can call are typed and bounded rather than open-ended.
  • The agent cannot invent links or addresses. A fail-closed policy: a URL it did not get from the source material renders as plain text.
  • Privacy promises are gated too. The claims on the privacy policy about masking, recording and consent are asserted against the code, so the page cannot drift away from what the site does.

3 · Data handling

  • Secrets are environment variables, never in the repository.
  • Database credentials are never exposed to the browser; the client bundle is checked to make sure values that should stay server-side have not been compiled into it.
  • The contact form and the agent both write to the database before sending any notification, so a failed email never means lost data.
  • Analytics and session recording are off until a visitor switches them on, separately, and the AI conversation is excluded from recording entirely.

4 · If you find something

Write to privacy@iambogdan.com with enough to reproduce it. I will confirm receipt, tell you what I found, and tell you when it is fixed.

There is no bug bounty and no formal disclosure programme — this is one person and a marketing site, and pretending otherwise would set an expectation I cannot meet. Please do not run automated scanners against it; the rate limiter will simply refuse you, and the results will describe the limiter rather than the site.

5 · What is deliberately not claimed

No penetration test has been carried out. No SOC 2, no ISO 27001, no external security audit of any kind. This is a one-person consulting site, not a platform, and those are not certifications you can honestly imply.

The database is in the United States — a transfer out of the EEA, disclosed on the privacy policy rather than buried.

What visitors type to the AI agent reaches OpenAI. That is unavoidable in a hosted-model agent and is stated where people type, not only here.

There is no automatic deletion yet. Data is removed on request rather than on a schedule. Section 4 of the privacy policy says so in the same words.

If your review needs any of the above to exist, say so and we can talk about what it would take — that is a more useful conversation than a page claiming it already does.