A guided AI interview system that helps job seekers extract and organize their career experiences into structured data for resume building and interview preparation. It is branded as espejo.
Experience Miner addresses the core challenge job seekers face: losing track of career experiences and achievements over time. Through guided AI interviews powered by Google's Gemini 2.5 Flash, it extracts structured career data including companies, roles, projects, achievements, and skills from conversational interviews.
- Guided AI Interviews: Topic-based conversation structure covering key career areas
- Hybrid Input: Type answers or use voice recorder with automatic transcription
- Editable Transcripts: Fix names, terminology, and details before processing
- AI-Powered Extraction: Converts interview transcripts into structured career artifacts
- Cloud Storage: Supabase-based knowledge base with sessions and facts organization
- Frontend: React + Vite + TypeScript + Shadcn/Tailwind
- Backend: Express + TypeScript + Biome
- AI Processing: Google Gemini 2.5 Flash
- Database & Auth: Supabase (PostgreSQL + Authentication)
- Deployment: Railway (monorepo)
- Package Manager: PNPM
- Node.js >= 18.0.0
- PNPM >= 9.0.0
- Google Gemini API key
- Supabase account (for production deployment)
-
Clone the repository
git clone https://github.com/your-org/experience-miner.git cd experience-miner -
Install dependencies
pnpm install
-
Environment setup
# Backend environment cp packages/backend/.env.example packages/backend/.env # Add your Gemini API key and Supabase credentials # Frontend environment cp packages/frontend/.env.example packages/frontend/.env # Add your Supabase public keys
-
Development servers
# Start both frontend and backend pnpm dev # Or start individually pnpm backend:dev pnpm frontend:dev
pnpm dev- Start all development serverspnpm build- Build all packagespnpm test- Run all testspnpm lint- Run code quality checkspnpm clean- Clean all build artifacts
experience-miner/
├── packages/
│ ├── backend/ # Express TypeScript API
│ │ ├── src/
│ │ │ ├── api/ # API routes
│ │ │ ├── services/ # Gemini & Supabase services
│ │ │ └── common/ # Shared utilities
│ │ └── package.json
│ └── frontend/ # React application
│ ├── src/
│ │ ├── components/ # UI components
│ │ ├── hooks/ # React hooks
│ │ ├── services/ # API services
│ │ └── context/ # Auth context
│ └── package.json
├── tasks/ # Project planning docs
├── references/ # Implementation references
├── package.json # Workspace configuration
└── pnpm-workspace.yaml # PNPM workspace definition
POST /api/transcribe- Convert audio to text via GeminiPOST /api/extract- Extract structured career data from transcriptsGET /health- Health check for deployment monitoring
API_KEY- Google Gemini API keySUPABASE_URL- Supabase project URLSUPABASE_SERVICE_KEY- Supabase service role keyPORT- Server port (default: 8080)
VITE_SUPABASE_URL- Supabase project URLVITE_SUPABASE_ANON_KEY- Supabase anonymous public key
This project is licensed under the Business Source License 1.1. Personal use for job searching activities is permitted. Commercial use (career coaching, recruiting, competitive products) is prohibited. The license converts to MIT after 4 years.