Quick Start Guide

Learn how to integrate SJM into your project and start matching freelancers in minutes. SJM provides powerful APIs for freelancer matching, skills verification, and AI-powered interviews.

Installation

pip install sjm
1

Basic Usage

from sjm import SJM

# Initialize client with your API key
client = SJM(api_key="your_api_key")

# Check API health
health = client.health()
print(f"API Status: {health['status']}")

# Match freelancers to a project
matches = client.match(
  description="Build a modern web application with React and Node.js",
  required_skills=["React.js", "Node.js", "TypeScript"],
  budget_range=(5000, 10000),
  complexity="medium",
  timeline=30
)

# Display top matches
for match in matches["matches"][:3]:
  freelancer = match["freelancer"]
  print(f"Match: {freelancer['name']} ({freelancer['job_title']})")
  print(f"Score: {match['score']:.2f}")
  print(f"Matching Skills: {match['matching_skills']}")
  print(f"Hourly Rate: 85/hr")
  print("---")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

AI Interview Example

from sjm import SJM

client = SJM(api_key="your_api_key")

# Generate interview questions
interview = client.interview(
  freelancer_id="f123",
  project_description="Build a modern web application with React",
  required_skills=["React.js", "Node.js", "TypeScript"],
  job_title="Full Stack Developer",
  mode="ai_questions"
)

# Get session ID and questions
session_id = interview["data"]["session_id"]
questions = interview["data"]["interview_data"]["questions"]

# Display questions to collect answers
answers = []
for i, q in enumerate(questions, 1):
  print(f"Q{i}: {q['text']}")
  answer = input("Answer: ")
  answers.append(answer)

# Submit answers for evaluation
evaluation = client.interview(
  freelancer_id="f123",
  project_description="Build a modern web application with React",
  required_skills=["React.js", "Node.js", "TypeScript"],
  job_title="Full Stack Developer",
  mode="ai_full",
  session_id=session_id,
  provided_answers=answers
)

# Display evaluation results
if "evaluation" in evaluation["data"]:
  eval_data = evaluation["data"]["evaluation"]
  print(f"Overall Score: {eval_data['overall_score']}/100")
  print(f"Strengths: {', '.join(eval_data['strengths'])}")
  print(f"Areas for Improvement: {', '.join(eval_data['areas_for_improvement'])}")
  print(f"Hiring Recommendation: {'Yes' if eval_data['hiring_recommendation'] else 'No'}")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

Interactive Demo

Try the Matching Engine

Test the SJM matching engine with sample data

Code Editor

const client = new SJM({ apiKey: "demo_key" });

// Define a project to find freelancers for
const project = {
description: "Building a responsive e-commerce website with React and Node.js",
required_skills: ["React.js", "Node.js", "TypeScript", "MongoDB"],
budget_range: [5000, 15000],
complexity: "medium",
timeline: 45
};

// Find matching freelancers
const result = await client.match(project);

// Display the top 3 matches
const topMatches = result.matches.slice(0, 3);
for (const match of topMatches) {
console.log(`Match: ${match.freelancer.name} (${match.freelancer.job_title})`);
console.log(`Score: ${(match.score * 100).toFixed(1)}%`);
console.log(`Skills: ${match.freelancer.skills.join(', ')}`);
console.log(`Experience: ${match.freelancer.experience} years`);
console.log(`Hourly Rate: $${match.freelancer.hourly_rate}/hr`);
console.log('---');
}

// Return the number of matches found
return { totalMatches: result.matches.length };
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

Output

Next Steps