CASE STUDY 02 / AI INTEGRATION
Secretary. A useful conversation at the edge.
An optional AI assistant helps visitors understand my projects and services. The portfolio still works without JavaScript; the assistant is a separate layer with a focused job.
- My role
- Conversation interface and separate Secretary Worker integration
- Useful for your project
- Public assistants and practical AI integrations
The visitor problem
A visitor may know what they need without knowing which service or technology to ask for. The Secretary gives them a conversational route through my portfolio: what I build, how a project relates to their idea, and how to contact me.
I built the browser interface and the separate Worker API. The assistant is a guide to public information, not a booking system or a substitute for agreeing on scope directly.
A small interface with a clear job
The launcher opens a dialog only when requested. Visitors can ask about projects, services, and technical experience. The interface keeps conversation history for the browser session and offers a reset action.

The main portfolio remains readable without JavaScript. Assistant failures do not remove the project descriptions or the direct email contact route.
Try the current Ask Ana interface ↗. No signup is required.
Where the integration lives
- Browser → validated request
- Worker → knowledge + API
- Reply → browser
The frontend calls a TypeScript Cloudflare Worker. The Worker validates the message and optional conversation history, checks the allowed origin and rate limit, combines the request with curated knowledge, and calls the OpenAI Responses API.
The API key stays on the server. Zod validates configuration, knowledge, and input. The Worker returns a plain-text reply inside JSON; it does not keep a server-side conversation database. Each request carries the optional history it needs.
Knowledge and safeguards
Profile, services, projects, and policies are maintained separately from visitor messages. Questions and client-supplied history are untrusted conversational input; they cannot redefine the approved facts.
- Messages, history, and request body sizes are bounded.
- CORS restricts approved browser origins; rate limits constrain request volume.
- Upstream timeouts and failures return sanitized errors.
- Contact guidance points to email and public professional profiles.
The assistant is instructed not to invent rates, availability, qualifications, clients, or achievements. Those instructions reduce risk; they do not make model answers infallible. The Secretary cannot send emails, book meetings, or commit me to work.
What this demonstrates
This project demonstrates an end-to-end AI integration: browser interaction, server-side credentials, maintained knowledge, request validation, and error handling. It is a working feature on the portfolio, not a claim of measured conversion uplift.
The important boundary is between helpful conversation and real commitments. The assistant can explain fit; scope, timing, and pricing are agreed directly.
For another business, the same approach starts by deciding which questions to answer, which sources are approved, and when to hand the visitor to a person.
Read the integration details
- Secretary API documentation
- Access model and authentication notes
- OpenAPI description
- Portfolio frontend source
Need an assistant, API connection, or practical automation? Send the goal and the systems it needs to connect.
Discuss your project ↗