A personal AI-powered companion app built for students at the University of Nevada, Reno. PackHelper helps you manage your academic and professional life in one place, tailoring your resume for job applications, organizing study plans, tracking your wellbeing, and letting you chat with an AI orchestrator that coordinates it all.
PackHelper is a student productivity tool centered around three core areas:
- Career - Upload your resume and a job posting, and the AI will tailor your resume specifically for that role and generate a polished PDF ready to submit.
- Study Planning - Generate structured study plans based on your coursework, then refine them through conversation.
- Wellbeing - Log daily check-ins tracking your mood, stress, and energy levels so you can stay aware of how you're doing over time.
An AI orchestrator ties everything together, so you can chat naturally and have it route your request to the right agent automatically.
As a CS student, I was constantly switching between apps — one for my resume, another for scheduling, a third for job tracking, but none of them knew anything about each other. When burnout hit, no tool could connect the dots between my sleep schedule, my exam week, and my job deadlines. I wanted something that understood the full picture.
I also wanted to go beyond a single chatbot and build something architecturally interesting. A system where specialized agents have distinct roles and hand off work to each other. PackHelper gave me a real problem worth solving and a genuine reason to learn how to build that kind of system.
- ASP.NET Core (.NET 10) - REST API handling all application logic
- Microsoft.Agents.AI (Anthropic) - Multi-agent AI layer powered by Claude. Agents include:
OrchestratorAgent- routes user input to the appropriate agentResumeTailorAgent- adapts a resume to a specific job descriptionJobExtractionAgent- pulls structured data out of raw job postingsStudyPlannerAgent/PlanModifierAgent- creates and updates study plansWellbeingAgent- handles wellness check-in conversationsClassifyAndExtractAgent- classifies intent and extracts context
- SQLite - Lightweight local database, auto-initialized on first run via
DatabaseInitializer - QuestPDF - Generates tailored resume PDFs
- React 19 + TypeScript - Component-based UI
- Tailwind CSS 4 - Utility-first styling
- .NET 10 SDK
- Node.js (v18 or later recommended)
- An Anthropic API key
git clone https://github.com/MatthewOsorio/PackHelper.git
cd PackHelperThe backend requires an Anthropic API key. Create the development secrets file:
backend/PackHelper.Api/appsettings.Development.json
{
"Anthropic": {
"ApiKey": "sk-ant-YOUR_KEY_HERE"
},
"Database": {
"Path": "packhelper.db"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}cd backend/PackHelper.Api
dotnet runThe API will start at http://localhost:5239. The SQLite database (packhelper.db) is created and seeded automatically on first run with three test users: matt, eric, and wasim.
In a separate terminal:
cd frontend
npm install
npm run devThe app will be available at http://localhost:5173.
The frontend is pre-configured to connect to the backend at http://localhost:5239. No additional environment setup is needed.
To switch between test users, append ?user=matt, ?user=eric, or ?user=wasim to any API request, or select a user within the app.
PackHelper/
├── backend/
│ ├── PackHelper.Api/ # ASP.NET Core Web API
│ ├── PackHelper.Agents/ # AI agents, repositories, PDF generation
│ └── PackHelper.slnx # .NET solution file
└── frontend/
└── src/
├── pages/ # Dispatch, Career, Wellness, Me
├── components/ # UI, feature, and layout components
├── services/api/ # API client layer
├── contexts/ # React context providers
└── hooks/ # Custom hooks