import { useState, useEffect } from "react";
import { Card, CardContent } from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Textarea } from "@/components/ui/textarea";
import { Button } from "@/components/ui/button";
import axios from "axios";
export default function MatchmakingApp() {
const [formData, setFormData] = useState({
fullName: "",
companyName: "",
jobTitle: "",
email: "",
services: "",
idealClient: "",
referralSources: "",
refersTo: "",
matchGoal: "referral",
location: "",
revenue: "",
openToPartnering: "yes",
});
const [profiles, setProfiles] = useState([]);
useEffect(() => {
// Load existing profiles from backend
axios.get("/api/profiles").then((res) => {
setProfiles(res.data);
});
}, []);
const handleChange = (e) => {
setFormData({ ...formData, [e.target.name]: e.target.value });
};
const handleSubmit = async () => {
await axios.post("/api/profiles", formData);
alert("Profile submitted successfully");
};
return (
);
}
Business Matchmaking Profile
import json
from typing import List, Dict, Tuple
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
class BusinessProfessional:
def _init_(self,
full_name: str,
job_title: str,
services: str,
ideal_client: str,
referral_sources: List[str],
outgoing_referrals: List[str],
industry: str):
self.full_name = full_name
self.job_title = job_title
self.services = services
self.ideal_client = ideal_client
self.referral_sources = [r.lower() for r in referral_sources]
self.outgoing_referrals = [r.lower() for r in outgoing_referrals]
self.industry = industry
def compute_similarity(text1: str, text2: str) -> float:
vectorizer = TfidfVectorizer().fit([text1, text2])
vectors = vectorizer.transform([text1, text2])
return cosine_similarity(vectors[0], vectors[1])[0][0]
def match_score(pro1: BusinessProfessional, pro2: BusinessProfessional) -> float:
score = 0
# Service ↔ Ideal Client Alignment (bidirectional)
service_to_client1 = compute_similarity(pro1.services, pro2.ideal_client)
service_to_client2 = compute_similarity(pro2.services, pro1.ideal_client)
score += 20 * service_to_client1 + 20 * service_to_client2
# Referral Source Match
if pro1.job_title.lower() in pro2.referral_sources:
score += 15
if pro2.job_title.lower() in pro1.referral_sources:
score += 15
# Outgoing Referral Match
if pro1.job_title.lower() in pro2.outgoing_referrals:
score += 15
if pro2.job_title.lower() in pro1.outgoing_referrals:
score += 15
# Mutual Referral Bonus
if (pro1.job_title.lower() in pro2.referral_sources or pro1.job_title.lower() in pro2.outgoing_referrals) and \
(pro2.job_title.lower() in pro1.referral_sources or pro2.job_title.lower() in pro1.outgoing_referrals):
score += 10
# Industry compatibility
if pro1.industry.lower() == pro2.industry.lower():
score += 5
return score
def rank_matches(target: BusinessProfessional, professionals: List[BusinessProfessional]) -> List[Tuple[str, float]]:
results = []
for pro in professionals:
if pro.full_name == target.full_name:
continue
score = match_score(target, pro)
results.append((pro.full_name, score))
return sorted(results, key=lambda x: x[1], reverse=True)