AI-powered conversational interface for interactive resume exploration.
Two-panel UI: a markdown resume viewer on the left, an AI chat interface on the right. The chat uses Groq's LLM to answer questions about the resume. Also exposes a worker API for generating tailored resumes and cover letters.
This package includes a development environment for testing the component locally:
# Install dependencies
pnpm install
# Start dev server (opens http://localhost:5173)
pnpm dev
# Build for production
# pnpm build
# # Lint and format
# pnpm lint:fix
# pnpm formatThe dev server uses index.html which imports and mounts the component directly. You can pass different configurations via URL parameters:
Example URLs:
# Default configuration
http://localhost:5173
# Custom theme
http://localhost:5173?theme=ocean
# Admin user
http://localhost:5173?userType=admin&sessionId=test-123
# Full configuration
http://localhost:5173?theme=ocean&userType=admin&sessionId=dev-sessionThis app is a child component of the hadoku_site parent application.
interface ResumeBotAppProps {
theme?: string // Optional: 'default', 'ocean', 'forest', etc.
apiBaseUrl: string // Required: Backend API path or URL (e.g., '/resume' or 'https://api.yourapp.com')
}import { mount, unmount } from '@wolffm/resume-bot'
// Mount the app
const element = document.getElementById('app-root')
mount(element, {
theme: 'ocean', // optional
apiBaseUrl: '/resume' // required - path to backend API
})
// Unmount when done
unmount(element)Important: The apiBaseUrl can be either:
- A path (e.g.,
/resume) if the backend is hosted on the same domain - A full URL (e.g.,
https://api.yourapp.com) if the backend is on a different domain
The backend must handle these endpoints:
${apiBaseUrl}/api/chat- POST - Chat with the bot${apiBaseUrl}/api/resume- GET - Fetch resume content${apiBaseUrl}/api/system-prompt- GET - Fetch system prompt
Pushes to main automatically:
- Build and publish to GitHub Packages
- Notify parent site to update
- Parent pulls new version and redeploys
Version bumps are handled automatically through two mechanisms:
- Pre-commit hook (primary): The
.husky/pre-commithook automatically bumps the version for every commit - Workflow fallback: The publish workflow checks if the current version already exists in the registry and bumps it if needed
This dual approach ensures versions are always incremented, even if commits bypass the pre-commit hook (e.g., web UI edits, --no-verify commits).
Version bumping follows this pattern:
- Patch version increments on each commit (1.1.8 → 1.1.9)
- At patch 20, rolls over to next minor (1.1.20 → 1.2.0)
This package has two exports:
- UI component (
.export):mount(el, props)/unmount(el)— React app fromsrc/entry.tsx - Worker API (
./apiexport):createResumeHandler(basePath)— Hono router fromworker/src/index.ts
Both are built and published together as @wolffm/resume-bot.