A sample application providing a human resources assistant chatbot. It leverages RavenDB database and RavenDB AI.
A live hosted version of this application can be found here:
https://hr.samples.ravendb.net
Please bear in mind, this application, for sake of simplicity of the deployment, is deployed in XYZ region. This can impact the latency you perceive. (remove if not applicable).
We do clean the environment from time to time.
The following RavenDB features are used to build the application:
- AI Agents - RavenDB's built-in AI agent framework powers the HR chatbot with tool calling and conversation management
- Time Series - tracking API usage per session and globally for rate limiting visualization
- Vector Search - semantic search for HR policies, issues, and documents using
vector.search(embedding.text(...)) - Attachments - storing employee signature images on documents
- Counters - tracking total prompt and completion tokens used
- Document Expiration - automatic cleanup of expired sessions and conversations
The following technologies were used to build this application:
- RavenDB 7.1 - document database with AI integration
- .NET Aspire - cloud-ready stack for distributed applications
- .NET 10 / ASP.NET Core 10
- Node.js 22 / React 18
- SignalR - real-time API usage broadcasting
The application consists of:
- Backend (ASP.NET Core) - REST API with rate limiting middleware, SignalR hub for real-time updates
- Frontend (React) - chat interface with real-time API usage visualization
- RavenDB - proivdes AI agents natively, stores employees, policies, documents, conversations, and usage metrics via time series and counters
Rate limiting is implemented at two levels:
- Session-based - limits requests per user session (30-second window)
- Global - limits total requests across all users (15-minute window)
If you want to run the application locally, please follow the steps:
- Check out the GIT repository
- Install prerequisites:
- Set required environment variables:
# Required SAMPLES_HR_OPENAI_API_KEY=<your-openai-api-key> # Required - developer or enterprise license SAMPLES_HR_RAVEN_LICENSE=<your-ravendb-license> # Optional (rate limiting - defaults provided) SAMPLES_HR_MAX_GLOBAL_REQUESTS_PER_15_MINUTES=100 SAMPLES_HR_MAX_SESSION_REQUESTS_PER_30_SECONDS=5
- Run the .NET Aspire AppHost:
aspire run
- Open the Aspire dashboard and click "Seed data" to populate the database with sample employees, policies, and documents

If you spot a bug, have an idea or a question, please let us know by rasing an issue or creating a pull request.
We do use a Discord server. If you have any doubts, don't hesistate to reach out!
We encourage you to contribute! Please read our CONTRIBUTING for details on our code of conduct and the process for submitting pull requests.
This project is licensed with the MIT license.

