All projects

Professional work

Access-controlled AI copilot (RAG)

An internal copilot that answers employees’ questions from company documentation, cites its sources, respects who may read what, and hands over to human support when needed.

  • Demonstrator qualified in internal staging
  • Individual project
  • Confidential
correct answers (manual evaluation, 50 questions)
98%
to the first streamed token
< 1.5 s
PDF and DOCX documents indexed
50+
Scrum sprints
13

01Starting point

Context & mission

The problem

Company knowledge was scattered across PDF and DOCX documents. Finding the right answer meant searching by hand or interrupting a colleague. A generic chatbot was not an option: it cannot say where an answer comes from, and it has no notion of who is allowed to read what.

The mission

For my final-year project, ALTEN asked me to design and build an internal AI copilot platform from scratch: natural-language questions over the documentation, source-grounded answers, role-based access control, and escalation to human support when the AI is not enough.

My role

I ran the project independently: architecture, RAG pipeline, security, Angular application, API documentation and delivery of the demonstrator.

02Execution

What I did

  1. Microservices architecture

    Spring Cloud with an API Gateway, four Spring Boot services (auth, users, documents, chat) and a FastAPI RAG service. PostgreSQL with pgvector handles both persistence and vector search.

  2. RAG pipeline

    Python, LangChain and OpenAI: extraction of 50+ PDF and DOCX documents, chunking, embeddings, semantic search (MMR), then source-grounded generation. Answers stream over SSE.

  3. Security by design

    JWT, BCrypt and RBAC across three roles. Authorized documents are filtered during retrieval, before the LLM generates anything, so restricted content can never leak into an answer.

  4. Angular application

    Chat with conversation history, admin dashboard, document and user management, indexing status tracking, and a support-ticket module with category-based forms and attachments.

  5. Delivery

    APIs documented and validated with OpenAPI/Swagger and Postman, demonstrator containerized with Docker Compose, 13 Scrum sprints tracked in Jira.

03Design

Architecture

Demonstrator architectureGeneric diagram: no company-internal detail.
  1. AngularChat · back office
  2. Spring Cloud GatewaySingle entry point
  3. 4 Spring Boot servicesauth · users · documents · chat
  4. FastAPI RAG serviceLangChain
  5. PostgreSQL + pgvectorData · vectors
Supported by
  • OpenAILLM · embeddings
  • Docker ComposeContainerized demonstrator
The path of a questionAccess control happens before generation, not after.
  1. QuestionAuthenticated user
  2. Filtered retrievalAuthorized documents only
  3. ContextRelevant passages (MMR)
  4. GenerationGrounded in sources
  5. Streamed answerSSE · citations
Supported by
  • Support ticketWhen the AI is not enough

04Impact

Results

  • Demonstrator qualified in internal staging at ALTEN.
  • First streamed token in under 1.5 s.
  • 98% correct answers in a manual evaluation of 50 validated test questions.
  • Every answer links back to its source documents and respects the user’s role.

05Wrap-up

Takeaways

Learnings and next steps

Filtering documents at retrieval time, rather than after generation, was the decisive choice for a trustworthy enterprise RAG. Natural next steps: move from staging to production, grow the evaluation set beyond 50 questions, and automate quality monitoring.

06Technology

Full stack

  • Java
  • Spring Boot
  • Spring Cloud Gateway
  • Python
  • FastAPI
  • LangChain
  • OpenAI
  • PostgreSQL
  • pgvector
  • Angular
  • Docker Compose
  • JWT
  • BCrypt
  • RBAC
  • SSE
  • OpenAPI
  • Postman
  • Jira