About the Project: JobJam

Inspiration

Career preparation often feels impersonal and overwhelming—especially for students and job seekers who aren’t sure where to start. I realized that most platforms prioritize resumes, job listings, and polished profiles, leaving little room for genuine conversation or exploration. I wanted to create a tool that let people talk—casually, honestly, and anonymously—about jobs and interests. That’s where JobJam was born: a way to connect people through real-time conversations based on shared career goals.

What I Learned

Building JobJam taught me how to:

  • Implement anonymous authentication using Firebase
  • Use text embeddings and cosine similarity for natural language matching
  • Manage real-time state updates in SwiftUI
  • Integrate Agora’s video SDK for low-latency video calls
  • Handle role-based logic, mute/video state, and room lifecycle across clients

I also deepened my understanding of natural language processing—particularly how embedding models like intfloat/e5-large-v2 convert job descriptions into high-dimensional vectors where similarity is measured by:

$$ \text{cosine_similarity}(A, B) = \frac{A \cdot B}{|A| |B|} $$

This allowed me to match users even if their descriptions used different wording but conveyed similar intent.

How I Built It

JobJam was built using:

  • SwiftUI for the iOS app interface
  • Firebase Authentication & Firestore for anonymous logins and real-time data
  • Hugging Face Inference API (via Python backend) for generating job description embeddings
  • Agora for real-time video calls with role-based control and mute/video toggle logic

I deployed the embedding + token server using Render, enabling quick and secure matching + video connection initialization.

Challenges

Some key challenges included:

  • Cosine Matching: Initially, many job descriptions failed to match. I had to carefully tune input prompts and formatting to ensure embeddings reflected true intent.
  • Real-Time Sync: Coordinating video state across users (mute, join/leave, etc.) with Firestore was tricky, especially with anonymous users.
  • Agora Integration: Handling role-based permissions and token security for guest users required careful planning.

Despite the challenges, building JobJam was a rewarding experience that showed me how powerful simple conversations can be—and how tech can make them more accessible.

Built With

Share this project:

Updates