Curious Coder: A Portfolio

a.k.a. michel-roberge.com

Contact me on LinkedIn

ResumeLogin

© 2025 michel-roberge.com. All Rights Reserved.

AI-Powered Portfolio

Overview

The goal is educational. I am trying to create a portfolio that is a self-hosted, AI-enhanced, and runs as a personal website. The idea is to showcase some of my experience, projects, and experiments.

It includes AI-powered interactions, a structured career timeline, a blog, and a project showcase.

This is still in development.

Goals & Scope

  • Main Purpose: Showcase experience, talent and projects
  • Key Features:
    • AI-powered chatbot that answers questions based on blog entries, projects, and timeline data.
    • Full CRUD support for blogs, projects, and career timeline entries.
    • AI embeddings for enhanced search capabilities.
    • Search combining full-text indexing and semantic embeddings.
    • Admin dashboard for managing all content.
    • UI for configuring the AI model and embeddings system.

User Roles & Access Control

  • Admin: Full access to CRUD operations for blogs, projects, timeline events, and AI configurations.
  • User: Read-only access to blogs, projects, and AI chat.
  • Unauthenticated Users: Can interact with the AI chatbot and view public content.
  • No role-based access beyond "Admin" and "User."
  • No MFA support in this iteration.
  • No OAuth-based access control for AI APIs – AI chatbot is publicly accessible.

AI Chatbot & Search Functionalities

  • AI chatbot interacts without persisting chat history outside a session.
  • Admin-configurable choice between Ollama and OpenAI API at the site level (toggle during setup).
  • No user-submitted training data. AI training updates automatically when blog entries, projects, or timeline events are added.
  • Hybrid search support: Combines full-text indexing and semantic embeddings.
  • AI-powered search (e.g., "Show me projects using C# and MongoDB").
  • Qdrant to index both project descriptions and full project source code.
  • Everything locally hosted (no external embeddings).
  • AI Chat:
    • Random greeting + guided prompt suggestions.
    • Freeform conversation somewhat allowed.
    • AI runs a pipeline: rail guard-> intent detection -> Context enhancement through RAG -> Response

Career Timeline & Skills Mapping

  • Interactive career timeline UI for admins to enter career events.
  • Events can be linked together (e.g., "Started at ABC" and "Stopped at ABC").
  • Users can zoom, filter, and explore technologies used during different career phases.
  • Graph-based skills map that visually connects skills, projects, and experiences.
  • Career timeline should be D3-like interactive (zoom, forward/backward movement).
  • Skills map should be drillable from broad categories to code snippets.
  • Storytelling: Career journey timeline and anecdotes from key projects.
  • Main sections of the page: "Time Machine" (Career Timeline).

Embeddings & Prompt Management

  • Admin UI to manage embeddings.
  • Admin UI to configure the AI model (Ollama or OpenAI).
  • Embeddings generation and management handled internally (e.g., automatic updates on content changes).
  • Ability to parse a local directory accessible from the backend.
  • Support embedding source code, markdown, text files, and documents.
  • Admins can add metadata to directories/files to enrich embeddings.
  • Admins can modify AI prompts dynamically through the UI.
  • Prompts should be stored in a structured format instead of hardcoded in the backend.

Admin Dashboard

  • Initial version includes CRUD for blog posts, projects, career timeline, and embeddings management.
  • Future enhancement: Analytics for most viewed projects, blog engagement, and AI chatbot interactions.

Content Prioritization

  • Primary Audience:
    1. Fellow developers
    2. Industry leaders
    3. Recruiters / Potential Clients

Technical Considerations

  • Frontend: Next.js with Tailwind CSS.
  • Backend: Node.js with MongoDB.
  • Hosting: Self-hosted on a local server.
  • Search: Qdrant for indexing projects and source code.
  • AI Chat: Ollama for chatbot interactions.
  • Performance & Privacy: Everything runs locally; no external dependencies for embeddings or AI models.
  • CI/CD Automation: GitHub, Jenkins, and Docker for automated deployment.
  • Authentication: Cookie-based authentication instead of bearer tokens.

NOTE: This is all in progress, I manage the project elsewhere for now but plan to eventually do it here.