Skip to content
All projects
AI SaaSIn Development

ChatFolio

A conversational portfolio that answers a recruiter's questions instead of making them scan a PDF.

Role

Founder and developer. I designed the ingestion flow, retrieval layer, and product architecture.

Timeline

2026

Stack
LaravelInertia.jsVue 3QdrantOpenRouterDocker

Context

A static portfolio shows what its owner chose to write. Recruiters still have to hunt for specifics — a particular project, a technology, a gap in a timeline.

ChatFolio turns a resume, LinkedIn export, GitHub profile, or website into a knowledge base that a visitor can question directly, with answers grounded in the person's own material.

The problem

The portfolio has to work for any profession, not just software engineering, so the data model cannot assume a fixed resume schema.

Answers must be grounded in retrieved evidence, and publishing has to stay simple enough for non-technical users.

Technical decisions

01

A provider-agnostic AI service

LLM and embedding calls sit behind a single service so the provider can change without rewriting product code. The current implementation uses OpenRouter.

02

Retrieval over a flexible knowledge base

Content is stored as text chunks with metadata rather than a rigid relational resume schema. Chunks are embedded and retrieved from Qdrant, then passed to the model as context.

03

Multi-source ingestion

Separate drivers handle LinkedIn PDFs, GitHub profiles, existing websites, and manual entry. Ingestion and vectorization run on background queues so the onboarding request stays fast.

04

Multi-tenant by subdomain

Each published portfolio gets its own subdomain, with a draft/publish workflow and per-tenant theming. Inertia + Vue SSR keeps public pages indexable.

Challenges and fixes

Grounding without a schema

Because profiles are free-form, the retrieval layer needs to surface the right evidence for arbitrary questions. Chunking and metadata quality matter more than prompt wording.

Onboarding latency

Parsing a PDF and embedding dozens of chunks takes time. The flow was split into a four-step wizard with queued processing so users can see progress instead of waiting on a blank screen.

Results

  • Working core: authentication, AI service abstraction, Qdrant retrieval, and chat API.
  • Multi-source ingestion and the publishing dashboard are in progress.
  • Not publicly launched yet.

Note: In active development. No public demo is linked while ingestion and publishing are unfinished.

Want to talk about this work?

I'm open to full-time onsite roles in Dhaka.

Next case study
QuotyHub