No description
Find a file
2026-03-24 17:05:46 +00:00
.vscode Revised all files to reduce bloat + optimized workflow 2026-02-26 01:32:04 +00:00
apps Added benchmark command and test data 2026-03-24 17:05:46 +00:00
benchmarks Added benchmark command and test data 2026-03-24 17:05:46 +00:00
compose Added watchtower scope for celery image 2026-03-22 15:54:23 +00:00
config Moved config values to settings 2026-03-22 20:04:14 +00:00
data Removed llm config 2026-03-22 19:35:07 +00:00
docs Added tweaks to report and more docs for sections 2026-03-23 15:02:03 +00:00
notebooks Revised all files to reduce bloat + optimized workflow 2026-02-26 01:32:04 +00:00
report Added benchmark command and test data 2026-03-24 17:05:46 +00:00
requirements Refactored consumers, added profanity filters and rewrote endpoints 2026-03-18 00:37:38 +00:00
site Added launchreel and static content with images and video 2026-03-24 10:20:33 +00:00
.dockerignore Added ignore paths, reduced prod inference compose and Dockerfile complexity 2026-02-27 11:42:26 +00:00
.editorconfig Revised all files to reduce bloat + optimized workflow 2026-02-26 01:32:04 +00:00
.env.example Added llm api basic auth and disabled docs 2026-03-22 08:19:57 +00:00
.env.template Added llm api basic auth and disabled docs 2026-03-22 08:19:57 +00:00
.gitignore Added launchreel and static content with images and video 2026-03-24 10:32:06 +00:00
.gitlab-ci.yml Made requirement optional 2026-02-27 15:11:18 +00:00
download_model.py Cleaned up model download script 2026-03-18 01:04:34 +00:00
gpu_server.py Tweaking and reframing yields and streaming with extra garbage collection 2026-03-22 17:15:42 +00:00
manage.py Revised all files to reduce bloat + optimized workflow 2026-02-26 01:32:04 +00:00
package-lock.json Revised all files to reduce bloat + optimized workflow 2026-02-26 01:32:04 +00:00
package.json Revised all files to reduce bloat + optimized workflow 2026-02-26 01:32:04 +00:00
README.md Fixed readme errors 2026-03-22 12:42:33 +00:00

Dynavera: An Agentic Approach to Role-Specific Trainers

Vue 3 Vite Django DRF Channels PostgreSQL pgvector Redis Celery FastAPI Docker

Dynavera is a distributed agentic onboarding platform designed to solve the productivity gap in organizational training. The motivation was to create a system that delivers tailored, retrieval-grounded guidance for new roles, leveraging modern AI and orchestration techniques. This project was built to address the challenge of scalable, role-specific onboarding—where generic training fails to meet the needs of specialized positions. By combining curriculum generation, document-grounded retrieval, and live progress tracking, Dynavera enables organizations to onboard users efficiently and transparently. Through this project, I learned how to architect distributed systems, integrate retrieval-augmented generation, and design agent workflows for real-world impact.

Table of Contents

Overview & Core Features

Dynavera addresses the onboarding productivity gap by combining:

  • Role-aware curriculum generation
  • Retrieval-augmented responses grounded in uploaded organizational documents
  • Tool-aware orchestration over WebSockets
  • Local-first inference support for privacy-sensitive deployments

The runtime is intentionally distributed: Django manages state and governance, while a dedicated inference service handles model-intensive workloads.

Key features:

  • Distributed architecture separating application control plane and inference plane
  • Multi-agent style orchestration for curriculum, knowledge, assessment, and monitoring behaviors
  • RAG pipeline with semantic chunking, embeddings, and pgvector retrieval
  • Live onboarding session updates via Django Channels WebSockets
  • Persistent session/progress storage for auditability and recovery

Architecture

High-level architecture diagram:

High Level System Architecture

Key backend runtime entry points:

  • apps/onboarding/consumers/ for orchestration loop and WebSocket flow
  • apps/onboarding/mcp.py for tool routing and backend tool execution
  • apps/knowledge/tasks.py for ingestion/chunking/embedding workflow
  • gpu_server.py for inference and embedding endpoints

Quick Start

Prerequisites:

  • Docker Engine or Docker Desktop
  • NVIDIA drivers and NVIDIA Container Toolkit (for GPU inference)
  1. Clone repository
git clone https://git.cs.bham.ac.uk/projects-2025-26/vxn217
cd vxn217
  1. Create environment file

PowerShell:

Copy-Item .env.template .env

CMD:

copy .env.template .env

macOS/Linux:

cp .env.template .env
  1. Start development stack
docker compose -f compose/dev/docker-compose.yml --env-file .env up -d --build
  1. Open application

Usage/Smoke Test

Follow this end-to-end workflow to use the project and to run the smoke test:

  1. Create or select an organization and role
  2. Upload role-specific training files
  3. Wait for ingestion and embedding to complete (monitor the ingestion UI or logs)
  4. Invite a user to the configured role
  5. Log in as that user and start onboarding
  6. Complete at least one guided interaction and one assessment action

Expected behaviour:

  • Workflow completes without manual page refresh
  • UI state transitions update live
  • No dropped WebSocket session during onboarding

Project Structure

  • apps/accounts user, organization, and role membership logic
  • apps/knowledge training file ingestion and vector document persistence
  • apps/onboarding sessions, orchestration runtime, and tool integration
  • config Django settings, routing, ASGI/WSGI wiring
  • compose development and production container configuration
  • site frontend application
  • docs architecture and deployment documentation

Demo Access

Hosted URL:

Evaluation credentials:

Role Email Password
Admin admin@example.com admin
Manager haleisaac@example.com password
User j.thompson@example.com password

Manager registration code: MANAGER2026

Operational Commands

Stop services:

docker compose -f compose/dev/docker-compose.yml --env-file .env down

Tail logs:

docker compose -f compose/dev/docker-compose.yml --env-file .env logs -f

Run migrations:

docker exec -it fyp-django-dev python manage.py migrate

Reset seeded passwords:

docker exec -it fyp-django-dev python manage.py reset_passwords

Screenshots

Home:

Home Page

Organization:

Organization Page

Onboarding generation state:

Onboarding Loading

Onboarding content flow:

Onboarding Flow

Documentation