199 lines
6.7 KiB
Markdown
199 lines
6.7 KiB
Markdown
# Dynavera: An Agentic Approach to Role-Specific Trainers
|
|
|
|
[](https://vuejs.org/)
|
|
[](https://vite.dev/)
|
|
[](https://www.djangoproject.com/)
|
|
[](https://www.django-rest-framework.org/)
|
|
[](https://channels.readthedocs.io/)
|
|
[](https://www.postgresql.org/)
|
|
[](https://github.com/pgvector/pgvector)
|
|
[](https://redis.io/)
|
|
[](https://docs.celeryq.dev/en/stable/)
|
|
[](https://fastapi.tiangolo.com/)
|
|
[](https://www.docker.com/)
|
|
|
|
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](#overview)
|
|
- [Core Features](#core-features)
|
|
- [Architecture](#architecture)
|
|
- [Quick Start](#quick-start)
|
|
- [Usage & Smoke Test](#usage--smoke-test)
|
|
- [Project Structure](#project-structure)
|
|
- [Demo Access](#demo-access)
|
|
- [Operational Commands](#operational-commands)
|
|
- [Screenshots](#screenshots)
|
|
- [Documentation](#documentation)
|
|
|
|
|
|
|
|
## 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:
|
|
|
|

|
|
|
|
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
|
|
|
|
```bash
|
|
git clone https://git.cs.bham.ac.uk/projects-2025-26/vxn217
|
|
cd vxn217
|
|
```
|
|
|
|
2. Create environment file
|
|
|
|
PowerShell:
|
|
|
|
```powershell
|
|
Copy-Item .env.template .env
|
|
```
|
|
|
|
CMD:
|
|
|
|
```cmd
|
|
copy .env.template .env
|
|
```
|
|
|
|
macOS/Linux:
|
|
|
|
```bash
|
|
cp .env.template .env
|
|
```
|
|
|
|
3. Start development stack
|
|
|
|
```bash
|
|
docker compose -f compose/dev/docker-compose.yml --env-file .env up -d --build
|
|
```
|
|
|
|
4. Open application
|
|
|
|
- http://localhost:8000
|
|
|
|
## 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:
|
|
|
|
- https://fyp.viswamedha.com
|
|
|
|
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:
|
|
|
|
```bash
|
|
docker compose -f compose/dev/docker-compose.yml --env-file .env down
|
|
```
|
|
|
|
Tail logs:
|
|
|
|
```bash
|
|
docker compose -f compose/dev/docker-compose.yml --env-file .env logs -f
|
|
```
|
|
|
|
Run migrations:
|
|
|
|
```bash
|
|
docker exec -it fyp-django-dev python manage.py migrate
|
|
```
|
|
|
|
Reset seeded passwords:
|
|
|
|
```bash
|
|
docker exec -it fyp-django-dev python manage.py reset_passwords
|
|
```
|
|
|
|
## Screenshots
|
|
|
|
Home:
|
|
|
|

|
|
|
|
Organization:
|
|
|
|

|
|
|
|
Onboarding generation state:
|
|
|
|

|
|
|
|
Onboarding content flow:
|
|
|
|

|
|
|
|
## Documentation
|
|
|
|
- [Distributed Runtime Flow](docs/distributed-runtime-flow.md)
|
|
- [Application Structure](docs/application-structure.md)
|
|
- [Deployment Topologies](docs/deployment-topologies.md)
|