Inspiration

InternMatch AI started from a simple observation: finding an internship is still treated like a search problem, while for students it is really a fit, preparation, and decision-making problem.

A student can open dozens of job boards and still not know:

  • Which opportunities actually fit their current skills?
  • Why do they match one role better than another?
  • Which skills are holding them back?
  • How should they tailor an application?
  • How should they prepare for an interview?
  • What is happening with every application they already submitted?

Employers face the opposite problem. They receive fragmented candidate information, need to manage listings, applicants, interviews, and trust, and often have no structured workflow that connects all of those pieces.

We built InternMatch AI to connect both sides of that journey in one product.

This is not a chatbot layered on top of a job board. InternMatch AI is a full two-sided internship platform with a Student product, an Employer product, an Admin Trust & Safety system, an explainable matching engine, AI-assisted workflows, private document processing, and RevenueCat-backed monetization.


What we built

InternMatch AI gives students a structured career workflow from profile creation to internship discovery, matching, application, interview preparation, and outcome tracking.

For students

Students can build a structured career profile containing skills, education, experience, projects, and preferences.

They can also upload a private PDF or DOCX CV. The backend processes the document asynchronously, extracts structured information, and enriches the student's profile while keeping CV access behind authenticated private-storage boundaries.

The discovery experience allows students to browse and save opportunities, but the core of InternMatch AI is the matching system.

Instead of asking an LLM to invent a percentage, InternMatch AI computes match scores using deterministic application logic that combines:

  • normalized skill overlap;
  • fuzzy skill matching;
  • semantic vector similarity;
  • supported candidate preferences.

The result is persisted as a real match score.

AI is then used to explain that result through the Why You Match experience, where the student can understand strengths, missing skills, and improvement areas.

This separation is important to us: AI explains the score; it does not arbitrarily create the score.

Students can continue from matching into:

  • AI-assisted application and cover-letter preparation;
  • editable generated content;
  • interview preparation;
  • application tracking;
  • durable notifications;
  • English, Turkish, and Arabic interfaces;
  • RTL support for Arabic.

InternMatch AI therefore supports the full candidate journey instead of stopping after recommending an opportunity.


For employers

We also built a dedicated Employer product.

Employers operate through an organization workspace where they can manage organization information, create opportunities, review applicants, access authorized candidate context, schedule interviews, and manage application stages.

AI-assisted employer tools include:

  • candidate insight;
  • interview-kit generation;
  • shortlist comparison;
  • internship-description assistance;
  • pipeline analytics.

But we deliberately separated recruiting features from trust decisions.

An employer account does not automatically mean that an organization is verified, and a verified organization does not automatically mean that every internship can be published.

InternMatch AI separates three different trust decisions:

  1. Organization verification
  2. Compliance evidence review
  3. Opportunity moderation

Every employer-created opportunity can go through a human moderation workflow before becoming visible to students.

If an Admin requests changes, the employer receives owner-visible feedback, edits the same listing, and resubmits it for review.

This gives InternMatch AI a real operational trust layer instead of relying on a single "verified" flag.


Admin Trust & Safety

We built a separate Next.js Admin Console for platform operations.

The Admin system supports workflows such as:

  • organization review;
  • compliance-evidence review;
  • opportunity moderation;
  • approve / request-changes decisions;
  • user search and directory;
  • student and employer context;
  • administrative audit context.

Administrative authority is enforced by the backend, not by simply exposing an Admin screen in the browser.

The goal was to design InternMatch AI as a system that could actually operate with real students and employers, not only look good during a demo.


RevenueCat and monetization

InternMatch AI includes separate monetization models for both sides of the marketplace.

We integrated RevenueCat using separate Student and Employer subscription contracts.

Student Pro

Student premium access is connected to the pro_student entitlement.

Employer Pro

Employer premium access is connected to the pro_employer entitlement.

Employer Pro enables additional recruiting capabilities such as multiple published opportunities, interview kits, shortlist comparison, AI-assisted job-description creation, and pipeline analytics.

RevenueCat is not used only as a paywall UI.

The backend also participates in subscription authority through:

  • authenticated subscription-state APIs;
  • RevenueCat reconciliation;
  • lifecycle webhooks;
  • server-side product-policy enforcement.

This means protected backend functionality does not trust only a local client-side "Pro" flag.


How we built it

InternMatch AI is built as a production-oriented multi-service system.

Mobile

The Student and Employer applications are built with:

  • Expo SDK 54;
  • React Native;
  • TypeScript;
  • React Navigation;
  • RevenueCat;
  • Expo Notifications;
  • Supabase authentication.

Backend

The application backend is built with:

  • Python 3.13;
  • FastAPI;
  • SQLAlchemy;
  • PostgreSQL;
  • pgvector.

Background processing

Long-running and AI-oriented tasks use:

  • Redis;
  • RQ workers.

This keeps expensive or asynchronous operations outside the main request path.

Data, authentication, and private storage

We use Supabase for:

  • PostgreSQL;
  • authentication;
  • private storage.

Sensitive files such as CVs, profile images, and employer compliance evidence are not treated as public static assets.

AI architecture

Generative AI is used for bounded assistance such as:

  • CV interpretation;
  • match explanation;
  • application drafting;
  • interview preparation;
  • employer assistance.

The vector layer uses a single configured canonical embedding provider at a time so that all vectors remain inside a consistent semantic space.

We intentionally separated generation, matching, and business authority instead of putting every decision behind one LLM call.

Admin

The Trust & Safety Console is built with Next.js and TypeScript.

Quality and delivery

The repository includes extensive automated verification covering backend behavior, database integration, PostgreSQL/pgvector runtime behavior, mobile TypeScript contracts, containers, migration effects, and dependency checks.

GitHub Actions is used as our continuous integration gate.


The hardest challenges

1. Making AI useful without making it authoritative

One of our biggest design challenges was deciding where AI should and should not have control.

It would have been easy to ask an LLM for a "match score" and display the answer.

We chose a harder architecture.

The application computes the score through deterministic logic and uses AI only to explain and assist.

The same principle is applied across the product: AI does not approve employers, publish opportunities, grant Admin access, decide who gets hired, or bypass product policy.

That separation required more engineering, but it made the product much more trustworthy.

2. Building a real two-sided product

Students and employers have completely different workflows, permissions, and incentives.

A candidate should only see their own private information and application state.

An employer should only access applicants connected to opportunities they control.

An Admin needs broader platform authority, but that authority must still be explicit and auditable.

Designing those boundaries across mobile, backend, database, storage, and Admin workflows was substantially harder than building a single-user AI application.

3. Trust and moderation

We did not want employer verification to become an unsafe shortcut.

We therefore separated organization identity, compliance evidence, and listing publication into independent workflows.

That required additional states, APIs, Admin experiences, ownership checks, feedback loops, and audit context, but it gives the platform a stronger foundation for real-world use.

4. Private document workflows

CVs and compliance evidence contain sensitive information.

We had to design upload, storage, processing, access, replacement, and deletion flows so that private documents are mediated through authenticated application boundaries rather than permanent public URLs.

5. Monetization across two user types

InternMatch AI is unusual because both students and employers have different premium products.

We needed separate entitlements, product policy, quotas, backend reconciliation, and subscription-aware behavior while keeping RevenueCat synchronized with authenticated application identities.


What we learned

The biggest lesson was that building an AI product is not primarily about calling an AI model.

The difficult work is designing the system around it.

We learned how important it is to separate:

  • AI generation from deterministic business logic;
  • recommendations from authority;
  • authentication from authorization;
  • organization verification from content moderation;
  • client UI state from server-side entitlement;
  • public product data from sensitive private documents.

We also learned that a real product needs much more than its most visible feature.

Localization, failure handling, asynchronous processing, subscriptions, moderation, notifications, account deletion, private storage, CI, database migrations, and operational tooling may never fit into a short demo video, but they are what transform an idea into software that can actually operate.


What InternMatch AI represents

InternMatch AI is our attempt to build the internship platform we would want to use ourselves as students.

Not another list of jobs.

Not a generic AI assistant.

A system that understands the candidate, explains fit, helps them improve, supports employers through a structured recruiting workflow, and keeps important decisions under human and deterministic control.

We built it as the foundation of a real product and startup, with architecture that can continue growing beyond the hackathon.

Website: https://internmatch.college/
Open-source repository: https://github.com/vertex-intelligent-org/InternMatch-AI

Built With

Share this project:

Updates

Submission history