Skip to main content

Build a Persona Agent for Your Portfolio: The Complete Guide

· 6 min read
Daniel Garcia
CEO @ Optimly

Your portfolio website has a problem: it's static.

Visitors land on it, scroll through your projects, maybe read your bio — and then they leave with a question unanswered. "Can you take on a new client?" "Do you do X?" "How does your consulting work?" There's no one there to answer.

What if your portfolio could talk back?

With Optimly's persona agent, you can deploy a conversational version of yourself on your portfolio page. Visitors ask questions about your experience, projects, and services. The agent responds — and surfaces rich link cards pointing directly to your work.

This guide walks you through the full setup: from writing your profile docs to sharing the agent on your site.


What is a persona agent?

A persona agent is an Optimly agent trained to represent you — not a company, not a product, but a person with a specific background, a set of projects, and services to offer.

What makes it different from a generic FAQ chatbot:

  • It knows your story. Upload your bio, resume highlights, and project writeups as "Profile" knowledge. These are always retrieved when someone asks about you — no hallucination, no guessing.
  • It returns cards, not just text. When visitors ask "What services do you offer?", the agent responds with a card grid linking directly to your work.
  • It collapses gracefully. The share page opens with a hero section introducing you. Once the visitor starts chatting, the hero slides away and the conversation takes over.

Here's what the flow looks like end to end:

  1. Visitor lands on your portfolio page
  2. The agent greets them with your name and tagline
  3. Visitor asks "What's your background in ML?"
  4. Agent retrieves your profile doc and responds with a summary + link cards to your projects
  5. Visitor clicks a card → lands on your project page

Step 1 — Create the agent

Go to app.optimly.io and create a new agent.

Name it something personal. Instead of "Support Bot" or "Assistant", use your name: "Daniel Garcia", "Alex Chen — Designer", or just your first name. This shows up in the chat header.

Write a persona-style system prompt. This is where you define your voice:

You are [Your Name], a [your role] based in [location].
You answer questions about my background, projects, services, and availability.
Be conversational, direct, and enthusiastic about the work.
When relevant, share links to specific projects or services.
If asked something you don't know, say so honestly and suggest reaching out directly.

Avoid generic AI language ("As an AI assistant..."). Write it as if you're briefing a very capable, very professional version of yourself.


Step 2 — Write your profile documents

This is the most important step. Profile documents are the content the agent draws on when visitors ask about you.

What to write:

  • Bio doc — who you are, your background, your specialty, where you're based
  • Services doc — what you offer, how engagements typically work, pricing (if public)
  • Projects doc — the work you're most proud of, with links
  • Availability doc — current status, how to book a call

The key: format links as Markdown. The agent extracts links from profile docs and turns them into cards. Use this format:

## Services

[ML Consulting](https://yoursite.com/consulting) — End-to-end ML project delivery
[Code Review](https://yoursite.com/review) — Python and ML architecture reviews
[Technical Writing](https://yoursite.com/writing) — Documentation and blog posts

## Recent Projects

[Optimly](https://optimly.io) — AI conversation management platform
[Portfolio Project 2](https://github.com/you/project) — Brief description

When a visitor asks "What services do you offer?", the agent retrieves this doc, generates a response, and attaches those links as clickable cards below the message.

What to avoid:

  • Don't put everything in one giant document — split by topic so retrieval is precise
  • Don't use [Link text][ref] Markdown style — use inline [text](url) format for card extraction
  • Don't include confidential client names unless you have permission

Step 3 — Upload and tag your docs

In the dashboard, go to your agent → Knowledge tab.

Upload each document you wrote in Step 2. You can use plain text (.txt), PDF, or paste content directly.

After uploading, you'll see each doc in the knowledge source list with a badge showing "Grounding". Click that badge to switch it to "Profile" for any doc that's about you personally (bio, services, projects, availability).

Badge colorTypeWhen retrieved
Gray — GroundingGeneral RAGOn-demand, when the query needs it
Purple — ProfileAlways-onEvery time someone asks about you

Profile docs are retrieved for every query tagged as profile-related (questions about your background, work, services, experience). Grounding docs are retrieved on-demand via semantic search — use these for supporting content like FAQs or detailed technical writeups.

Best practice: Keep profile docs small and focused. 3–5 short docs (one per topic) beat one long file. The retrieval pipeline prioritizes profile content with a 40% token budget share, so concise docs get full coverage.


Step 4 — Customize the share page

Go to Customize tab on your agent. This controls what the share page looks like before the visitor starts chatting.

Key fields for a portfolio setup:

FieldWhat to put
Header titleYour name or tagline ("Daniel Garcia — ML Engineer")
Header subtitleOne line about what you do or offer
AvatarA photo of you (not a logo)
Accent colorYour brand color
Starter messages3–4 questions visitors typically ask

Good starter messages for a portfolio agent:

  • "What services do you offer?"
  • "Tell me about your recent projects"
  • "Are you available for new work?"
  • "What's your background in [your specialty]?"

These pre-populated prompts give visitors an easy starting point and guide them toward the queries your profile docs are built to answer.


Step 5 — Share and embed

Once you're happy with how the agent responds, enable public sharing:

  1. Go to Integration tab on your agent
  2. Enable "Public sharing"
  3. Copy your share URL: https://app.optimly.io/share/{your-token}

Option A — Full-page embed (recommended for portfolio)

Add to your portfolio site as a full-page section:

<iframe
src="https://app.optimly.io/share/YOUR_TOKEN"
width="100%"
height="700px"
style="border: none; border-radius: 12px;"
title="Chat with me"
></iframe>

Option B — Chat widget

Use the JavaScript embed snippet from the Integration tab to add a floating chat bubble to any existing portfolio page.

Option C — Standalone link

Share the /share/ URL directly — in your email signature, your LinkedIn bio, or anywhere people reach out to you. The page is fully standalone and mobile-responsive.


Step 6 — Test it like a visitor

Before you share the link publicly, test it from the visitor's perspective.

Open your share URL in an incognito window and ask:

  • "What services do you offer?" → Should return a text response + card grid with your service links
  • "Tell me about your ML projects" → Should surface project links as cards
  • "Are you available for consulting?" → Should answer from your availability doc
  • "Hello!" → General greeting, no cards needed
  • "What's the capital of France?" → Should deflect gracefully (it doesn't know everything about the world, only about you)

If a question returns cards when it shouldn't, or misses obvious profile content, check:

  • Is the relevant doc tagged as Profile (not Grounding)?
  • Does the doc contain the information in plain language?
  • Are the Markdown links formatted as [text](url) inline style?

What the experience looks like

When a visitor opens your share page:

  1. Hero state — your avatar (with a pulsing glow), your name and subtitle, and starter message pills. The header is clean — just your name or logo.

  2. First message sent — the hero slides up and disappears. The conversation takes over. The header switches to compact mode: small circular avatar + your name + a green "● online" dot.

  3. Profile response with cards — the agent responds with text, and below the message bubble a card grid appears. On mobile, cards scroll horizontally; on desktop, they lay out in a 2–3 column grid. Each card has your link title, a description (if formatted in the doc), and a CTA button in your accent color.

  4. General response — clean message bubble, no card grid.


Tips for a great persona agent

Be specific in the prompt. Tell the agent your actual specialty, not just "software engineer". The more specific the persona, the more on-brand the responses.

Update docs when you update your site. If you add a new project or change your services, re-upload the relevant profile doc. The agent's knowledge is only as fresh as what you've uploaded.

Use the Grounding type for depth. If you want the agent to answer detailed technical questions (how a specific project was built, your process for ML projects), add those as Grounding docs. They'll be retrieved when the query matches — without taking up always-on profile budget.

Watch the conversations. Optimly logs every conversation. After a week, check what visitors are actually asking. You'll almost always find 2–3 recurring questions you haven't written a profile doc for yet.

Set up email notifications. Go to your agent settings and enable email alerts for new conversations. When someone has a meaningful exchange with your agent — asks about pricing, availability, or a specific project — you want to follow up.


Next steps

Your persona agent is live. Here's what to do next:

  • Share the link. Put it in your email signature, your LinkedIn headline ("Chat with me →"), and your Twitter/X bio.
  • Embed it on your site. The full-page embed works well as a dedicated "Talk to me" section, especially on your contact or about page.
  • Iterate on the docs. After a week of conversations, check the analytics tab for recurring questions and update your profile docs accordingly.
  • Set up a weekly report. Optimly's scheduled reports will email you a summary of conversations, popular topics, and lead captures every week — so you can keep improving without manually reviewing every chat.

The goal isn't to replace direct contact. It's to make sure every person who visits your portfolio — at 2pm on a Tuesday or 11pm on a Sunday — gets a useful, on-brand response that moves them closer to reaching out.


Questions about the setup? Start a conversation with the Optimly agent or reach out on X.