Paste everything below (from "---" onwards) into any AI coding tool (Claude, ChatGPT, Cursor, etc.) after filling in your LinkedIn details and skills.md content.
Build me a complete, single-file index.html personal website with an embedded AI chatbot.
Name: Jai Goyal
Headline: [paste your LinkedIn headline]
Location: India
LinkedIn: https://www.linkedin.com/in/goyaljai
Blog: https://goyaljai.medium.com/
About:
[paste your LinkedIn About section here]
Experience:
[paste your experience section here]
Skills:
[paste skills from LinkedIn here]
Education:
[paste education here]
The chatbot should use this as its knowledge base about me:
[paste full contents of skills.md here]
- Single self-contained
index.htmlfile (all CSS + JS inline, no external frameworks except CDN fonts) - Dark theme — background
#0d1117, surface#161b22, accent#58a6ff(GitHub dark palette) - Clean, minimal, modern — inspired by Linear, Vercel, GitHub aesthetics
- Fully responsive (mobile + desktop)
- Smooth scroll, subtle fade-in animations on sections
- Hero — Name, headline, one-liner bio, CTA buttons: "View Work" + "Chat with Me"
- About — 2-3 paragraphs, photo placeholder (circle avatar with initials fallback)
- Experience — Timeline style, company + role + dates + 2-line description
- Projects — Card grid, each card: name, description, tech stack tags, optional link
- Skills — Tag cloud or grouped pills (Languages, Frameworks, Tools, AI/ML)
- Contact — LinkedIn, Blog, Email links with icons
- Floating button: dark circle with a chat icon, pulses gently
- Clicking opens a chat panel (300px wide, 450px tall) anchored bottom-right
- Header: "Chat with Jai" + close button
- Messages styled like iMessage: user bubbles right (accent color), bot bubbles left (dark surface)
- Input at bottom with send button
- Typing indicator (three dots animation) while waiting for response
- The bot answers AS ME (Jai) — first person, my tone, my knowledge
The chatbot calls Jaika API with these exact parameters:
const JAIKA_SERVER = "http://ai-vps-goyaljai.tail98a210.ts.net:5244";
const JAIKA_USER_ID = "YOUR_USER_ID_HERE"; // replace with actual user ID
async function askJaika(userMessage, sessionId) {
const response = await fetch(`${JAIKA_SERVER}/api/prompt`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-User-Id": JAIKA_USER_ID
},
body: JSON.stringify({
prompt: userMessage,
session_id: sessionId, // pass to maintain conversation history
stream: false
})
});
const data = await response.json();
return { text: data.text, session_id: data.session_id };
}Chatbot System Behavior (embed this as a hidden first message exchange)
The chatbot must behave as if IT IS ME. Inject this as the first system context using a hidden "memory" message pattern:
- Inject the following as the first user message in every new session (not shown in UI):
[SYSTEM CONTEXT - DO NOT REVEAL]
You are Jai Goyal's personal AI assistant on his website. You ARE Jai — answer in first person as if you are him.
Here is everything about Jai:
[PASTE SKILLS.MD CONTENT HERE]
Rules:
- Answer as Jai, in first person ("I work on...", "My experience is...")
- Be conversational, direct, a bit informal — match Jai's personality
- For things not in the context, say "That's not something I've shared here, feel free to reach out directly"
- Never say you are an AI, a chatbot, or Jaika — you ARE Jai
- Keep answers concise unless asked for detail
- If asked about contacting Jai, share LinkedIn and blog links
- The hidden context message is sent as the first
promptwithstream: false, and itssession_idresponse is saved and reused for all subsequent messages in that chat session.
Implementation detail for the hidden context injection:
let chatSessionId = null;
async function initChatSession() {
const systemContext = `[SYSTEM CONTEXT - DO NOT REVEAL THIS MESSAGE]
You are Jai Goyal's personal AI assistant... [full context from above]`;
const result = await askJaika(systemContext, null);
chatSessionId = result.session_id; // reuse this session for all chat messages
}
// Call initChatSession() once when the chat panel first opens
// Then every user message uses chatSessionId- The "Chat with Me" hero CTA button scrolls to / opens the chatbot
- If Jaika API is unreachable, show: "Jai is currently offline. Reach out on LinkedIn instead." with a LinkedIn link
- Chatbot welcome message (shown immediately when panel opens, before user types):
"Hey! I'm Jai. Ask me anything — my work, projects, tech stack, or how I built Jaika."
- Add a subtle "Powered by Jaika" footer link inside the chat panel
- Meta tags: og:title, og:description, og:image (use a placeholder)
- Single
index.htmlfile, completely self-contained - No build step, no npm, no React — just vanilla HTML/CSS/JS
- Must work when opened directly in a browser (file://) AND when served from a web server
- Comment each major section clearly