An AI-powered career analysis API that turns unstructured resume and job description text into structured, explainable signals: skill scores, leadership indicators, role fit assessments, and narrative themes.
Built on Xano using XanoScript.
Career Signals accepts raw career data (resume text, LinkedIn-style profiles, job descriptions) and returns normalized, scored signals with explanations. Every score includes a "why", not just a number.
Signals produced:
| Category | Signals |
|---|---|
| Skill & Seniority | breadth score, depth score, primary domains, seniority band, specialization archetype |
| Leadership | people leadership, technical leadership, delivery ownership, cross-functional collaboration, mentorship |
| Role Fit | overall fit, skills alignment, domain alignment, seniority alignment, green/red flags |
| Risk & Story | job hopping risk, career gaps, tech stagnation, buzzword density, narrative themes |
All endpoints require Authorization: Bearer <API_KEY>.
| Method | Path | Description |
|---|---|---|
| POST | /v1/analyze/profile |
Analyze a resume or profile |
| POST | /v1/analyze/role-fit |
Score fit between a profile and a job description |
| POST | /v1/suggest/bullets |
Generate tailored resume bullet points |
See SPEC.md for full request/response schemas.
AI layer: LLMs extract skills, infer leadership signals, identify risk factors, and generate explanations and bullets.
Xano business logic: normalizes AI output, maps domains, computes scores, enforces bounds, applies role-fit weightings.
Client → API Key Auth → Rate Limit Check → AI Analysis → Normalization & Scoring → Response
apis/ # API endpoint definitions
authentication/
career/ # /v1/analyze/* and /v1/suggest/* endpoints
event_logs/
members_accounts/
functions/ # Reusable XanoScript functions
career_signals/
analyze_profile_with_ai.xs
analyze_role_fit_with_ai.xs
calculate_skill_breadth_score.xs
calculate_skill_depth_score.xs
calculate_role_fit_score.xs
normalize_profile_signals.xs
generate_bullets_with_ai.xs
authenticate_api_client.xs
check_rate_limit.xs
format_error_response.xs
tables/ # Database schema
api_client.xs
analysis.xs
request_log.xs
agent_conversation.xs
agent_message.xs
event_log.xs
tools/ # AI agent tools
tasks/ # Scheduled tasks
docs/ # XanoScript development guidelines
Role fit is a weighted composite:
overall_fit = (skills × 0.5) + (domain × 0.2) + (seniority × 0.2) + (leadership × 0.1)
Weights are configurable per request via options.weightings.
Skill breadth uses diminishing returns on domain count: <20 narrow, 40–60 balanced, ~80 broad.
Skill depth weights tenure, increasing responsibility, architecture involvement, and recency.
- HTTPS only
- API keys hashed at rest
- Per-client rate limits
- Minimal PII logging (hashed IPs, optional input anonymization)
- No external model training on submitted data
This project uses XanoScript. See CLAUDE.md for the development workflow and links to documentation for tables, functions, APIs, agents, and tools.
MVP - see SPEC.md for planned future enhancements (batch analysis, multi-language support, salary benchmarking, interview question generation).