resumebot.mp4
Resume Bot is a Spring Boot application that leverages Artificial Intelligence to answer questions regarding a resume. It acts as a virtual assistant representing the candidate, capable of conversing using information extracted from the configured resume.
- AI Resume Analysis: Uses OpenAI models (via Spring AI) to understand and answer questions about professional background.
- Contextual Conversation: Maintains conversation history for more natural exchanges.
- Personalized Perspective: The AI responds in the first person ("I"), embodying the candidate.
- Observability: Integrates Spring Boot Actuator and Micrometer (OTLP) for monitoring.
- Containerization: Docker and Kubernetes ready with Cloud Native Buildpacks support.
graph TD
User([User]) -->|Interacts with| Frontend[Web Frontend]
Frontend -->|POST /chat| Backend[Spring Boot Backend]
subgraph "Backend Application"
Backend --> Controller[ChatController]
Controller -->|Read/Write History| Service[MessageService]
Controller -->|Generate Answer| AI[Spring AI ChatClient]
Service -->|Persist| Redis[(Redis)]
Config[application.yaml] -.->|Resume Data| Controller
end
AI -->|API Call| OpenAI([OpenAI API])
- Java 25 (or compatible version configured in
pom.xml) - Docker (required to run Redis via Docker Compose)
- An OpenAI API key
You must set the SPRING_AI_OPENAI_API_KEY environment variable with your OpenAI API key before starting the application.
The resume content is configured directly in the src/main/resources/application.yaml file under the app.resume property. You can paste the raw text of your resume there.
app:
resume: |
Alexandre Roman
Senior Software Engineer
...To run the application in development mode (uses Docker Compose to start Redis automatically):
./mvnw spring-boot:runThe application will be accessible at http://localhost:8080.
The application exposes a REST API to interact with the bot.
POST /chat
curl -X POST http://localhost:8080/chat \
-d "prompt=What is your experience with Java?" \
-d "conversationId=12345"prompt(Required): The question to ask the bot.conversationId(Optional): A unique identifier to maintain conversation context.
The response is a plain text string (Markdown formatted) containing the answer.
- Spring Boot 4.0
- Spring AI
- Redis (for storing conversation history)
- Testcontainers (for integration tests)
This project is licensed under the Apache 2.0 License. See the LICENSE file for more details.