Project Info
Inspiration
We were inspired by the massive efficiency gap in technical onboarding. Companies often spend days manually provisioning accounts, setting up security, and explaining the same basic cloud concepts repeatedly. This process is intimidating, prone to human error, and lacks real-time guidance for new hires. Our goal was to eliminate this friction entirely, creating an AI that doesn't just create tickets, but actively guarantees a smooth, secure, and educational Day 1 experience by automating both the company-side security setup and the user's hands-on learning process.
What it does
Onboardly is a Full-Stack, AI-Powered Onboarding Orchestrator that seamlessly bridges IT provisioning and user coaching. For the Company (Automation): From a single form trigger, Onboardly uses the Groq AI to dynamically generate an 8-step, role-specific curriculum (e.g., GCloud training for an SWE Intern). It then uses Jira's API to instantly create a master Epic and all sub-tasks, and SendGrid to deliver a personalized welcome email with a downloadable calendar invite, all assigned directly to the new hire. For the Intern (AI Coach Extension): Once the intern clicks the Jira link and navigates to the Google Cloud Console, our custom Chrome Extension injects an AI Coach panel. This panel uses Gemini Vision AI to capture and analyze the screen, providing real-time, step-by-step guidance on how to complete each taskβlike a senior developer looking over their shoulder. The entire workflow is tracked, and when the final task is complete, the system automatically transitions the main Jira Epic to DONE.
How we built it
We built Onboardly using a clean, three-part architecture. 1. The Provisioning Engine (Node.js/Express): This handles the pre-onboarding setup, orchestrating API calls to Groq for curriculum generation, and using the Jira API to create and assign the entire task hierarchy. 2. The AI Brain (Python/Flask with Gemini): This server exposes the vision endpoints. It utilizes Gemini 2.0 Flash for low-latency visual analysis of the screenshot and Gemini 2.5 Pro for sophisticated reasoning and generating clear coaching instructions. 3. The AI Coach Frontend (Chrome Extension): This utilizes a Background Service Worker to securely capture the visible tab screenshot, which the Content Script then sends to the Python backend. The Content Script then renders the real-time coaching UI directly onto the Google Cloud Console interface, providing the interactive guidance needed to complete the Jira tasks.
Challenges we ran into
The primary challenges involved navigating complex and often fragile enterprise APIs. Jira Provisioning was the biggest obstacle: We faced persistent issues finding the correct internal issue type IDs (10001, 10004) and dealing with the obscure "Epic Name" field ID, which required removal for our simple project. Furthermore, the Jira API user invite process consistently failed on the free tier. We bypassed this by implementing a feature to automatically assign the Epic to the manager's account, ensuring the demo user had instant, authorized access to the tasks. Secondly, AI Key Quotas blocked our progress with an insufficient_quota error, which we resolved by performing a real-time migration to Groq AI's compatible API, maintaining our dynamic curriculum feature.
Accomplishments we're proud of
We are most proud of achieving true, end-to-end automation of a complex business process within a short hackathon window. This includes: 1. Zero-Touch Provisioning: Successfully creating a Jira Epic, 8 sub-tasks, and sending a personalized welcome email with a downloadable calendar inviteβall from a single Node.js trigger. 2. Dynamic Curriculum: Using Groq AI to generate a highly detailed, accurate 8-step GCloud curriculum in under one second. 3. The Wow Factor: Seamlessly integrating real-time Gemini Vision coaching that actually understands what the user is seeing on a complex external site (GCP Console) and guiding them to complete the automated tasks.
What we learned
We learned three crucial lessons: 1. AI Compatibility is Key: Utilizing the OpenAI-compatible API structure (as provided by Groq) is vital for rapid prototyping and maintaining provider flexibility when quotas are an issue. 2. API Workarounds are Essential: Complex enterprise APIs (like Jira's) often require deep inspection of error messages and unconventional workarounds (like removing required fields or using specific transition IDs) to integrate successfully in a fast-paced environment. 3. The "Isolation Problem" Requires a Stack: A helpful AI coach cannot be built in one script; it requires a stack of communication (Content Script $\leftrightarrow$ Background Script $\leftrightarrow$ Flask Backend) to securely and effectively capture the user's screen and leverage powerful vision models.
What's next
for onboardly We plan to implement three key features: 1. Jira Webhook Integration: We will eliminate the final "Mark Complete" button by having Jira trigger a webhook back to our server when all 8 sub-tasks are manually marked "Done," achieving truly touchless final Epic completion. 2. Advanced Security Checks: Integrate the GitHub API (which we built a stub for) to check if the intern has enabled required branch protection rules on their new starter repository before marking that task as complete. 3. Gemini Pro Reasoning: We will leverage the powerful reasoning capabilities of Gemini 2.5 Pro to provide non-visual feedback, such as analyzing the security logs in the next step and providing a summary of the threats found directly to the intern.
Onboardly - π Cal Hacks 12.0 Best Workflow App
AI-powered onboarding platform that uses vision analysis to guide users through complex workflows in real-time.
Overview
Onboardly combines AI vision analysis with intelligent coaching to create interactive onboarding experiences. It monitors user screens, understands context, and provides step-by-step guidance for tasks like GCP setup, Jira workflows, and custom onboarding processes.
Key Features
- AI Vision Coaching - Real-time screenshot analysis using Gemini Vision AI
- Multi-Platform - Chrome extension + browser-agnostic embeddable widget
- Workflow Visualization - Beautiful 3D visualizations and interactive DAGs
- Intelligent Guidance - Context-aware, step-by-step instructions
- Automated Tracking - Progress monitoring and completion verification
- Integration Ready - Works with GCP, Jira, SendGrid, and custom apps
Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend β
β React + Vite + Three.js + Tailwind CSS β
β (Workflow Visualization, Onboarding Dashboard) β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββ
β Backend API β
β Node.js + Express + AI Services β
β β’ Gemini Vision AI (screenshot analysis) β
β β’ Groq/OpenAI (workflow generation) β
β β’ Jira, SendGrid, GCP integrations β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββ΄βββββββββββββββ
β β
βββββββββΌβββββββββ βββββββββββΌβββββββββββ
β Chrome Extensionβ β Embeddable Widget β
β (GCP Console) β β (Any Browser) β
β β’ Screenshot β β β’ Screen Capture β
β β’ Auto-coach β β β’ Drop-in JS β
βββββββββββββββββββ ββββββββββββββββββββββ
Components
1. Backend (/backend)
Node.js/Express API server with AI integrations.
Tech Stack:
- Express.js
- Gemini Vision AI (Google)
- Groq/OpenAI (workflow generation)
- SendGrid (email notifications)
- Jira API integration
Key Endpoints:
POST /generate-workflow-dag- Generate workflow from natural languagePOST /analyze-screenshot- AI vision analysis of user screensPOST /track-event- Track onboarding eventsGET /workflow-progress- Get real-time progress updates (SSE)
Setup:
cd backend
npm install
cp .env.example .env # Add your API keys
node index.js
Required environment variables:
GEMINI_API_KEY=your_gemini_key
GROQ_API_KEY=your_groq_key
SENDGRID_API_KEY=your_sendgrid_key
JIRA_BASE_URL=https://your-domain.atlassian.net
JIRA_USER_EMAIL=your_email
JIRA_API_TOKEN=your_jira_token
2. Frontend (/frontend)
React visualization dashboard with 3D workflow representations.
Tech Stack:
- React 18
- Vite
- Three.js + React Three Fiber
- Tailwind CSS
- D3.js + Recharts
- Framer Motion
Features:
- 3D neural network visualization
- Interactive workflow DAG
- Real-time onboarding progress
- Live activity monitoring
- AI insights panel
Setup:
cd frontend
npm install
npm run dev # Starts on http://localhost:5173
3. Chrome Extension (/extension)
Chrome extension for AI-powered coaching on GCP Console.
Features:
- Auto-capture screenshots every 5 seconds
- Real-time AI guidance overlay
- Step-by-step task validation
- Automatic progress tracking
Setup:
- Open Chrome β
chrome://extensions/ - Enable Developer mode
- Click Load unpacked
- Select the
/extensionfolder
See extension/README.md for detailed instructions.
4. Embeddable Widget (/webapp)
Browser-agnostic JavaScript widget for any web application.
Features:
- Pure JavaScript (no framework dependencies)
- Screen Capture API for cross-browser support
- Drop-in integration (
<script>tag) - Configurable positioning and behavior
Quick Start:
<script src="ai-coach-widget.js"></script>
<script>
AICoach.init({
apiUrl: 'http://localhost:3000',
taskType: 'gcp_storage',
captureInterval: 5000
});
</script>
See webapp/README.md for integration guide.
Quick Start
1. Clone and Install
git clone <repository-url>
cd Onboardly
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm install
2. Configure Environment
Create backend/.env:
GEMINI_API_KEY=your_gemini_api_key
GROQ_API_KEY=your_groq_api_key
SENDGRID_API_KEY=your_sendgrid_key
PORT=3000
3. Start Services
Terminal 1 - Backend:
cd backend
node index.js
# Backend runs on http://localhost:3000
Terminal 2 - Frontend:
cd frontend
npm run dev
# Frontend runs on http://localhost:5173
4. Choose Your Integration
Option A: Chrome Extension (for GCP Console)
- Load extension in Chrome
- Navigate to GCP Console
- Click extension icon to activate
Option B: Embeddable Widget (for any webapp)
- Serve webapp files
- Open
http://localhost:8080/demo.html - Click "Start Monitoring"
Use Cases
GCP Onboarding
Guide users through Google Cloud Platform setup:
- Create Storage Buckets
- Deploy Cloud Functions
- Configure IAM permissions
Jira Workflow Training
Teach team members Jira workflows:
- Create and assign issues
- Use custom fields
- Follow approval processes
Custom Workflows
Create any onboarding experience:
- SaaS product tours
- Internal tool training
- Compliance procedures
Development
Project Structure
Onboardly/
βββ backend/ # Node.js API server
β βββ index.js # Main server file
β βββ package.json
β βββ .env # API keys (create from .env.example)
β
βββ frontend/ # React visualization app
β βββ src/
β β βββ OnboardingApp.jsx # Onboarding flow UI
β β βββ OnboardlyApp.jsx # Main dashboard
β β βββ components/ # React components
β βββ package.json
β
βββ extension/ # Chrome extension
β βββ manifest.json
β βββ background.js # Screenshot capture
β βββ inject-panel.js # Content script + UI
β
βββ webapp/ # Embeddable widget
βββ ai-coach-widget.js # Widget implementation
βββ ai-coach-widget.css # Widget styles
βββ demo.html # Demo page
Adding New Tasks
Define new onboarding tasks in the backend workflow generator:
// backend/index.js - Add to task definitions
const taskDefinitions = {
'your_task': {
name: 'Your Custom Task',
steps: [
{ instruction: 'Step 1', type: 'action' },
{ instruction: 'Step 2', type: 'verification' }
]
}
};
API Documentation
Generate Workflow
POST /generate-workflow-dag
Content-Type: application/json
{
"prompt": "Create a workflow for deploying a Docker container"
}
Analyze Screenshot
POST /analyze-screenshot
Content-Type: application/json
{
"screenshot": "data:image/png;base64,...",
"taskType": "gcp_storage",
"currentStep": 1,
"email": "user@example.com"
}
Track Event
POST /track-event
Content-Type: application/json
{
"email": "user@example.com",
"eventType": "extension_activated",
"taskType": "gcp_storage"
}
Browser Compatibility
| Component | Chrome | Firefox | Safari | Edge |
|---|---|---|---|---|
| Frontend | β | β | β | β |
| Extension | β | β | β | β * |
| Widget | β | β | β | β |
*Edge supports Chrome extensions with minor modifications
Deployment
Backend Deployment
# Build and deploy to your preferred platform
# (Heroku, AWS, Google Cloud, etc.)
# Example: Deploy to Heroku
heroku create your-app-name
heroku config:set GEMINI_API_KEY=your_key
git push heroku main
Frontend Deployment
cd frontend
npm run build
# Deploy dist/ folder to Netlify, Vercel, etc.
Production Checklist
- Set production API URLs
- Configure CORS for your domains
- Enable HTTPS (required for Screen Capture API)
- Set up rate limiting
- Configure logging and monitoring
- Minify widget assets
- Test on all target browsers
Security
- All API keys stored in environment variables
- CORS configured for specific origins
- No sensitive data in screenshots (configurable masking)
- Screenshot data not persisted on backend
- Secure HTTPS required in production
Performance
- Screenshot capture: ~50KB per image (JPEG compressed)
- Analysis latency: 1-3 seconds (Gemini Vision API)
- Frontend bundle: ~500KB (optimized)
- Widget size: ~50KB (minified)
Troubleshooting
Backend not starting
- Verify Node.js version (v18+ recommended)
- Check
.envfile exists with valid API keys - Ensure port 3000 is available
Screenshots not capturing
- Chrome extension: Reload extension after code changes
- Widget: Grant screen sharing permission
- Check CORS configuration
- Verify backend is running
AI analysis not working
- Validate Gemini API key
- Check API quotas/rate limits
- Review backend logs for errors
- Test with smaller images
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
MIT License - see LICENSE file for details
Support
- Documentation: See component-specific READMEs
- Issues: Open an issue on GitHub
- Email: support@yourcompany.com
Roadmap
- Firefox extension support
- Safari extension support
- Slack integration for team notifications
- Custom branding options
- Analytics dashboard
- Multi-language support
- Mobile app support
- Workflow templates marketplace
Built with AI using Gemini Vision, Groq, and modern web technologies.
Analysis
View
Metric
- 15
- 4
- 1
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- ExpressIn code
- FlaskIn code
- Google GeminiIn code
- HTMLIn code
- JavaScriptIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- Node.jsClaimed
10 of 11 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- Claude CodeConfig Β· Commits
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
265 KB
Source files
35
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Preet37/Onboardly
47 files Β· 486 KB Β· @ 48c249b
Structure
Interface
12 files Β· 26%Screens, components and styles rendered to the user.
Application logic
19 files Β· 40%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here β open the file browser to check anything the diagram implies.
Languages
- JavaScript83%
- Markdown10%
- HTML3%
- CSS3%
- Python1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm Β· 15- @react-three/drei
- @react-three/fiber
- d3
- framer-motion
- react
- react-dom
- recharts
- three
- +7 more
backend/package.json
npm Β· 10- @google/generative-ai
- @sendgrid/mail
- @slack/web-api
- axios
- cors
- dotenv
- express
- googleapis
- ics
- openai
backend/requirements.txt
pypi Β· 6- flask
- flask-cors
- google-generativeai
- Pillow
- python-dotenv
- requests
Declared in the repositoryβs manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
Feature verification
AI-generated role-specific curriculum via GroqVerified
Groq AI dynamically generates an 8-step, role-specific curriculum from a form trigger
Claimed on Devposthigh confidencebackend/index.js:39β Groq client configured via OpenAI-compatible SDK pointed at api.groq.combackend/index.js:470β Uses llama-3.1-8b-instant via Groq to generate onboarding tasks from a prompt
Backend REST endpoints (generate-workflow-dag, analyze-screenshot/ai analyze-screen, track-event, workflow-progress)Verified
Documented endpoints for workflow DAG generation, screenshot analysis, event tracking, and SSE progress updates
Claimed on readmehigh confidencebackend/index.js:76β POST /generate-workflow-dag implementedbackend/index.js:874β POST /ai/analyze-screen implements the screenshot analysis endpoint (named differently than README's /analyze-screenshot but functionally equivalent)backend/index.js:1088β POST /track/extension-usage implements event tracking (naming differs from README's /track-event)backend/index.js:114β SSE (text/event-stream) used for real-time progress updates
Chrome extension AI Coach panel with Gemini VisionVerified
Custom Chrome Extension injects an AI Coach panel that captures and analyzes the screen with Gemini Vision AI for real-time guidance
Claimed on Devposthigh confidenceextension/background.js:24β Background service worker captures the visible tab as a JPEG screenshotextension/inject-panel.js:1β Content script injects the coaching panel UI onto the pagebackend/index.js:1014β Node backend calls Gemini model 'gemini-2.0-flash' with the screenshot for vision analysis
Jira Epic and sub-task provisioningVerified
Jira API instantly creates a master Epic and all sub-tasks, assigned to the new hire
Claimed on Devposthigh confidencebackend/index.js:537β createJiraWorkflow fetches issue type IDs, creates an Epic issue, then posts sub-task issues via /rest/api/3/issuebackend/index.js:415β getJiraAccountId looks up the assignee account for task assignment
SendGrid welcome email with .ics calendar inviteVerified
SendGrid delivers a personalized welcome email with a downloadable calendar invite
Claimed on Devposthigh confidencebackend/index.js:47β SendGrid client initialized with API keybackend/index.js:775β ics.createEvent builds a calendar invitebackend/index.js:845β The .ics content is base64-attached to the SendGrid email as welcome-sync.ics
Zero-touch provisioning from single form triggerVerified
A single Node.js trigger creates a Jira Epic, 8 sub-tasks, and sends the welcome email end-to-end
Claimed on Devposthigh confidencebackend/index.js:105β POST /onboard orchestrates task generation, Jira provisioning, and email sending sequentially
3D workflow visualization dashboardCode-supported
Beautiful 3D visualizations and interactive DAGs using Three.js/React Three Fiber for workflow visualization
Claimed on readmemedium confidencefrontend/package.json:12β Declares @react-three/drei and @react-three/fiber dependenciesfrontend/src/components/NeuralCosmos.jsx:1β A component named NeuralCosmos exists for visualization, but it imports d3 rather than react-three-fiber, so the specific 3D rendering wasn't confirmed in this file
Auto-capture screenshots every 5 seconds in extensionCode-supported
Chrome extension auto-captures screenshots every 5 seconds for coaching analysis
Claimed on readmemedium confidenceextension/inject-panel.js:1β Content script drives capture/coaching loop; background.js implements the actual captureVisibleTab call, but the specific 5-second interval timing was not located in the excerpts reviewed
Embeddable JavaScript widget (webapp)Code-supported
Browser-agnostic embeddable widget usable via a <script> tag with AICoach.init()
Claimed on readmemedium confidencewebapp/ai-coach-widget.jsβ File exists implementing the widget referenced in the README quick-start
Manager-assignment workaround for Jira invite limitationsCode-supported
Epic is automatically assigned to the manager's account since Jira invite fails on free tier
Claimed on Devpostmedium confidencebackend/index.js:153β Fetches Jira account ID for a fixed demo assignee email (JIRA_USER_EMAIL) rather than the intern's own account, consistent with the described workaround
Three-part architecture: Python/Flask AI vision backendCode-supported
A separate Python/Flask server exposes the vision endpoints using Gemini 2.0 Flash and Gemini 2.5 Pro
Claimed on Devpostmedium confidencebackend/requirements.txtβ Lists flask, flask-cors, google-generativeai, confirming Flask/Gemini dependencies existwebapp/proxy.py:11β Only Flask file found in repo is a plain GCP Console iframe/CORS proxy with no Gemini calls; actual vision analysis logic (gemini-2.0-flash) lives in backend/index.js (Node), not a separate Flask AI service
Automatic Jira Epic transition to DONE on final task completionClaimed only
When the final task is complete, the system automatically transitions the main Jira Epic to DONE
Claimed on Devposthigh confidenceGemini 2.5 Pro reasoning for coaching instructionsClaimed only
Gemini 2.5 Pro is used for sophisticated reasoning and generating clear coaching instructions
Claimed on Devpostmedium confidenceGitHub API stub for branch protection checks (roadmap item)Claimed only
GitHub API integration was stubbed to check branch protection rules on the intern's starter repo
Claimed on Devposthigh confidenceJira webhook for touchless Epic completion (roadmap item)Claimed only
Planned Jira webhook to trigger Epic completion when all sub-tasks are marked Done
Claimed on Devposthigh confidenceReact Native / mobile app supportClaimed only
react-native listed in Built With tags; roadmap also lists 'mobile app support'
Claimed on Devposthigh confidenceSlack integration for team notifications (roadmap item)Claimed only
Roadmap item to add Slack integration for team notifications; also listed under Built With tags
Claimed on readmehigh confidence
An AI agent derived these features from the projectβs Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.