|
1 | | -# JobAssistAI Demo Application |
| 1 | +# JobAssist AI |
| 2 | +**Empowering Job Coaches, Transforming Lives** |
2 | 3 |
|
3 | | -## Overview |
| 4 | +[](https://jobassistai-dhbzhtbxerdwedhh.eastus2-01.azurewebsites.net/) |
| 5 | +*Built for the Microsoft Innovation Challenge, March 2025* |
4 | 6 |
|
5 | | -A Flask-based web application for job coaches to manage supported employment programs. This demo provides case management tools, AI-powered job matching, and task breakdown assistance for supporting clients with disabilities in their employment journey. |
| 7 | +--- |
6 | 8 |
|
7 | | -## Features |
| 9 | +## 🚀 What is JobAssist AI? |
8 | 10 |
|
9 | | -- **Case Management Dashboard**: View and manage client information, appointments, and case notes |
10 | | -- **AI Job Matching**: Get intelligent job recommendations based on client profiles |
11 | | -- **Task Breakdown Analysis**: AI-powered analysis of job tasks with accommodation suggestions |
12 | | -- **Secure Authentication**: Role-based access control for job coaches |
13 | | -- **Responsive Design**: Mobile-friendly interface using Bootstrap 5 |
| 11 | +**JobAssist AI** is an innovative application crafted to enhance the productivity of job coaches in supported employment programs for individuals with disabilities, including those with intellectual, developmental, or physical challenges. Built entirely on **Microsoft Azure**, this solution optimizes workflows, delivers personalized support, and promotes independence for clients. |
14 | 12 |
|
15 | | -## Directory Structure |
| 13 | +By facilitating job matching in sectors such as retail, healthcare, IT, and manufacturing, automating report generation, and simplifying task breakdowns, JobAssist AI alleviates administrative burdens, enabling coaches to prioritize their core mission: empowering people. |
| 14 | + |
| 15 | +Developed as part of the **Microsoft Innovation Challenge in March 2025**, this Flask-based application harnesses Azure's advanced AI and cloud capabilities to address pressing real-world challenges. JobAssist AI reflects a commitment to inclusion, transforming it from an aspiration into actionable impact. |
| 16 | + |
| 17 | +**[Try it live here!](https://jobassistai-dhbzhtbxerdwedhh.eastus2-01.azurewebsites.net/)** |
| 18 | + |
| 19 | +--- |
| 20 | + |
| 21 | +## 🌟 The Problem We’re Solving |
| 22 | + |
| 23 | +Job coaches play a vital role, yet they face significant obstacles that hinder their effectiveness: |
| 24 | +- **Paperwork Overload:** Hours spent reformatting notes into reports for government agencies and employers. |
| 25 | +- **Personalized Guidance Gaps:** Crafting tailored task instructions for unique needs is slow and inconsistent. |
| 26 | +- **Lost Knowledge:** Insights vanish when coaches leave, leaving new hires scrambling. |
| 27 | +- **Bureaucratic Maze:** Navigating fragmented resources and guidelines steals time from coaching. |
| 28 | + |
| 29 | +JobAssist AI redefines this landscape by automating repetitive tasks, centralizing expertise, and providing tailored support through a unified Azure-powered platform. |
| 30 | + |
| 31 | +--- |
| 32 | + |
| 33 | +## ✨ Key Features |
| 34 | + |
| 35 | +### 1. AI Assistant |
| 36 | +- **What**: Real-time answers to compliance questions. |
| 37 | +- **How**: Azure AI Search and OpenAI analyze stored guidelines in Blob Storage. |
| 38 | +- **Impact**: Minimizes administrative stress, keeping the focus on clients. |
| 39 | + |
| 40 | +### 2. Automated Documentation |
| 41 | +- **What:** Upload notes, receive polished reports. |
| 42 | +- **How:** Azure AI Document Intelligence extracts text, Azure OpenAI (GPT-4o) crafts HTML reports, and PDFs are stored in Blob Storage. |
| 43 | +- **Impact:** Reduces paperwork time significantly, freeing coaches for client advocacy. |
| 44 | + |
| 45 | +### 3. Centralized Knowledge Base |
| 46 | +- **What:** A comprehensive repository of strategies and contacts. |
| 47 | +- **How:** Coaches log insights into Azure Cosmos DB; Azure AI Search enables instant retrieval. |
| 48 | +- **Impact:** Preserves expertise, even as team members change. |
| 49 | + |
| 50 | +### 4. Personalized Task Guidance |
| 51 | +- **What:** Detailed, step-by-step task guides customized for each client. |
| 52 | +- **How:** Azure OpenAI generates instructions; Azure Speech Services provides audio for accessibility. |
| 53 | +- **Impact:** Ensures consistent, client-specific support with minimal effort. |
| 54 | + |
| 55 | +--- |
| 56 | + |
| 57 | +## 🛠️ Technical Architecture |
| 58 | + |
| 59 | +JobAssist AI integrates a robust set of Azure services with a Flask frontend: |
| 60 | + |
| 61 | +- **Azure AI Document Intelligence**: Text extraction from notes. |
| 62 | +- **Azure OpenAI (GPT-4o)**: Report generation and task breakdowns. |
| 63 | +- **Azure Blob Storage**: Secure file storage with versioning. |
| 64 | +- **Azure Cosmos DB**: Scalable knowledge base. |
| 65 | +- **Azure AI Search**: Rapid data retrieval. |
| 66 | +- **Azure Speech Services**: Text-to-speech for accessibility. |
| 67 | +- **Azure Functions**: Workflow automation. |
| 68 | +- **Azure Key Vault**: Secures sensitive credentials. |
| 69 | + |
| 70 | +### System Architecture Diagram |
| 71 | + |
| 72 | + |
| 73 | +--- |
| 74 | + |
| 75 | +## 📂 Project Structure |
16 | 76 | ``` |
17 | | -demo-app/ |
18 | | -├── app.py # Flask application main file |
19 | | -├── models.py # Data models and mock database |
20 | | -├── static/ |
| 77 | +JobAssistAI/ |
| 78 | +├── azure-functions/ # Azure Functions for AI features |
| 79 | +│ ├── jobassistai-document-processing/ # Auto-generates reports from notes |
| 80 | +│ ├── jobassistai-http-trigger-openai/ # OpenAI-powered responses |
| 81 | +│ ├── jobassistai-http-trigger-tts/ # Text-to-speech for task guides |
| 82 | +│ ├── jobassistai-save-insights/ # [Placeholder: Details TBD] |
| 83 | +│ ├── jobassistai-save-voice-insights/ # [Placeholder: Details TBD] |
| 84 | +│ ├── jobassistai-search-insights/ # [Placeholder: Details TBD] |
| 85 | +├── docs/ # Documentation |
| 86 | +│ └── Microsoft-RAI-Impact-Assessment-JobAssistAI.pdf |
| 87 | +├── onedrive/ # OneDrive integration |
| 88 | +│ └── onedrive_manager.py |
| 89 | +├── static/ # Frontend assets |
21 | 90 | │ ├── css/ |
22 | | -│ │ └── style.css # Custom styling |
23 | 91 | │ └── js/ |
24 | | -│ └── script.js # Client-side functionality |
25 | | -├── templates/ |
26 | | -│ ├── base.html # Base template |
27 | | -│ ├── dashboard.html # Main dashboard view |
28 | | -│ ├── login.html # Authentication page |
29 | | -│ └── consumer_detail.html # Client profile view |
30 | | -└── requirements.txt # Python dependencies |
| 92 | +├── templates/ # Flask HTML templates |
| 93 | +│ ├── base.html |
| 94 | +│ ├── consumer_detail.html |
| 95 | +│ ├── dashboard.html |
| 96 | +│ ├── knowledge_base.html |
| 97 | +│ └── login.html |
| 98 | +├── app.py # Main Flask application |
| 99 | +├── requirements.txt # Python dependencies |
| 100 | +└── README.md # You’re here! |
31 | 101 | ``` |
32 | 102 |
|
33 | | -## Prerequisites |
| 103 | +--- |
34 | 104 |
|
35 | | -- Python 3.12+ |
36 | | -- Flask and its dependencies |
37 | | -- Modern web browser (Chrome, Firefox, Safari, or Edge) |
| 105 | +## 🔧 Azure Functions Deep Dive |
38 | 106 |
|
39 | | -## Installation |
| 107 | +### `jobassistai-document-processing` |
| 108 | +**Purpose**: Turns handwritten notes into polished PDFs. |
| 109 | +- **Flow**: Extracts text → Generates HTML reports → Converts to PDF → Stores in Blob Storage. |
| 110 | +- **Diagram**: *[Insert architecture diagram here]* |
| 111 | +- **Details**: See [its README](azure-functions/jobassistai-document-processing/README.md). |
40 | 112 |
|
41 | | -1. Create a virtual environment: |
42 | | - ```bash |
43 | | - python -m venv venv |
44 | | - source venv/bin/activate # On Linux/Mac |
45 | | - ``` |
| 113 | +### `jobassistai-http-trigger-openai` |
| 114 | +**Purpose**: Powers AI responses with OpenAI + optional Azure Search citations. |
| 115 | +- **Flow**: Takes user prompts → Fetches system prompts → Returns JSON responses. |
| 116 | +- **Diagram**: *[Insert architecture diagram here]* |
| 117 | +- **Details**: See [its README](azure-functions/jobassistai-http-trigger-openai/README.md). |
46 | 118 |
|
47 | | -2. Install dependencies: |
48 | | - ```bash |
49 | | - pip install -r requirements.txt |
50 | | - ``` |
| 119 | +### `jobassistai-http-trigger-tts` |
| 120 | +**Purpose**: Converts text instructions to audio with Azure SpeechSDK. |
| 121 | +- **Flow**: Accepts JSON text → Outputs MP3 audio. |
| 122 | +- **Diagram**: *[Insert architecture diagram here]* |
| 123 | +- **Details**: See [its README](azure-functions/jobassistai-http-trigger-tts/README.md). |
51 | 124 |
|
52 | | -3. Run the application: |
53 | | - ```bash |
54 | | - python app.py |
55 | | - ``` |
| 125 | +*More functions (`save-insights`, `save-voice-insights`, `search-insights`) coming soon!* |
56 | 126 |
|
57 | | -4. Access the application at `http://localhost:5000` |
| 127 | +--- |
58 | 128 |
|
59 | | -## Usage |
| 129 | +## 🌍 Responsible AI |
60 | 130 |
|
61 | | -1. Log in using demo credentials (see login page) |
62 | | -2. Navigate the dashboard to view clients and appointments |
63 | | -3. Access client profiles for detailed information |
64 | | -4. Use AI features for job matching and task analysis |
| 131 | +We’re committed to ethical AI. For a detailed look at how JobAssist AI upholds responsible AI principles, check out our [Responsible AI Impact Assessment](docs/Microsoft-RAI-Impact-Assessment-JobAssistAI.pdf). |
65 | 132 |
|
66 | | -## Technology Stack |
| 133 | +--- |
67 | 134 |
|
68 | | -- **Backend**: Flask (Python web framework) |
69 | | -- **Frontend**: Bootstrap 5, JavaScript |
70 | | -- **Icons**: Font Awesome 6 |
71 | | -- **AI Integration**: Prepared for Azure OpenAI integration (mock data in demo) |
| 135 | +## ⚙️ Setup & Installation |
72 | 136 |
|
73 | | -## Development |
| 137 | +### Prerequisites |
| 138 | +- **Azure Subscription**: Access to Blob Storage, Cosmos DB, OpenAI, Speech Services, and more. |
| 139 | +- **Python 3.12**: For Flask and Azure Functions. |
| 140 | +- **Azure Functions Core Tools**: For local testing. |
| 141 | +- **Git**: To clone this repo. |
| 142 | + |
| 143 | +### Steps |
| 144 | +1. **Clone the Repo** |
| 145 | + ```bash |
| 146 | + git clone https://github.com/yourusername/jobassistai.git |
| 147 | + cd jobassistai |
| 148 | +2. **Set Up Virtual Environment** |
| 149 | + ```bash |
| 150 | + python -m venv venv |
| 151 | + source venv/bin/activate # Linux/Mac |
| 152 | + venv\Scripts\activate # Windows |
| 153 | +3. **Install Dependencies** |
| 154 | + ```bash |
| 155 | + pip install -r requirements.txt |
| 156 | +4. **Configure Environment Variables** |
| 157 | + Create a .env file in the root directory: |
| 158 | + ```bash |
| 159 | + AZURE_STORAGE_CONNECTION_STRING="your_connection_string" |
| 160 | + AZURE_OPENAI_KEY="your_openai_key" |
| 161 | + AZURE_COSMOS_ENDPOINT="your_cosmos_endpoint" |
| 162 | + AZURE_SEARCH_KEY="your_search_key" |
| 163 | +5. **Run Locally** |
| 164 | + ```bash |
| 165 | + python app.py # Flask app |
| 166 | + func start # Azure Functions (from azure-functions/) |
| 167 | +## 📜 License |
| 168 | +This project is licensed under the [MIT License](https://opensource.org/licenses/MIT). Feel free to use, modify, and share! |
74 | 169 |
|
75 | | -The application uses Flask's development server with debug mode enabled. Key files: |
| 170 | +## 🙌 Acknowledgements |
| 171 | +This project was developed by the following team members: |
| 172 | +- **Harshit Jain** |
| 173 | +- **Joshua Kaelin** |
| 174 | +- **Srujana Vanama** |
76 | 175 |
|
77 | | -- `app.py`: Route definitions and application logic |
78 | | -- `models.py`: Mock data structures |
79 | | -- `static/js/script.js`: Client-side interactivity |
80 | | -- `templates/*.html`: Jinja2 templates for views |
|
0 commit comments