Accessible matching · public source
AI Internship Recommendation Engine
A mobile-oriented recommendation application that turns a candidate profile into a focused shortlist of PM Internship Scheme opportunities using explicit, explainable weighted matching.
20
sample opportunities
4
explicit matching dimensions
Top 5
ranked results per profile
2
result-retention paths
The system
From operational problem to reliable workflow.
Problem
Large opportunity catalogs create decision overload, especially for first-generation applicants and users with limited digital confidence. The product needed a short, explainable result rather than a search interface that simply moved the filtering burden to the applicant.
Approach
A React profile flow collects education, skills, sector interest, and location. Harshitha migrated the recommendation logic to a Python FastAPI backend, scores all 20 sample opportunities, returns the top five with a score breakdown, and supports HTML email delivery with a client-side download fallback.
Outcome
The project demonstrates an end-to-end profile-to-shortlist flow, explicit ranking logic, server validation, responsive presentation, official application links, and two ways to retain the result.
Architecture
System architecture
The application is an explainable recommendation prototype for the PM Internship Scheme. It uses a deliberately small local opportunity dataset and deterministic scoring so a reviewer can understand why an internship ranks above another. It is not an opaque learned recommendation model.
Candidate experience
Collects name, email, education, selected skills, sector interest, and preferred location with required-field and email-format validation.
React · TypeScript · Vite · React Router
Recommendation API
Validates the candidate profile, scores every opportunity, sorts descending, and returns the top five internships with per-dimension breakdowns.
FastAPI · Pydantic · Python
Opportunity catalog
Provides 20 sample internships with scheme IDs, education rules, skill requirements, sector, state, duration, stipend, and application context.
Typed in-memory records
Result delivery
Formats the shortlist for the responsive results page, sends an HTML email through configured SMTP, or allows a local file fallback.
SMTP · MIME HTML · browser download
Execution model
End-to-end execution
- 01
Capture the profile
The form requires contact information, education, at least one skill, sector, and location before navigating to recommendations.
- 02
Validate at the API boundary
Pydantic models validate the email and the shape of candidate and internship data before scoring runs.
- 03
Score every opportunity
Education contributes up to 30 points, skills up to 40, sector 20, and location 10; an `Any Degree` or `Any Location` match receives partial credit.
- 04
Rank and explain
The API sorts all 20 records by total score, returns the top five, and includes matching skills plus the dimension breakdown.
- 05
Present or retain the shortlist
The UI highlights matched skills and application details; the user can request an HTML email or save a fallback file.
Implementation
What Harshitha implemented
- Built the multi-page React flow and client-side profile persistence between form and recommendation routes.
- Implemented required-field and email-format checks before a profile can be scored.
- Created FastAPI models for candidate profiles, internship records, recommendation responses, and email requests.
- Ported the scoring engine to Python with explicit caps and partial-credit rules rather than an uninspectable model call.
- Added health, recommendation, catalog, sector, state, and send-recommendation endpoints.
- Built responsive recommendation cards with scheme IDs, stipends, location, duration, eligibility, required skills, and matched-skill highlighting.
- Generated personalized HTML email output with profile context, internship cards, and application actions.
Contribution summary
- Built the React/Vite applicant journey from scheme introduction through validated profile capture and ranked recommendations.
- Moved the recommendation engine from TypeScript to a Python FastAPI service with Pydantic request and response models.
- Implemented explainable scoring across education, skills, sector, and location and sorted all opportunities into a top-five shortlist.
- Added SMTP-backed HTML recommendation emails and retained a text-download fallback when email delivery is unavailable.
- Designed for mobile use, large touch targets, simple language, and low digital-literacy contexts.
Failure design
Reliability engineering
R01
Risk
An incomplete profile produces meaningless ranking.
Control
The client requires all ranking dimensions and the API validates typed request fields independently.
R02
Risk
Email configuration is missing or delivery fails.
Control
The API returns explicit configuration/delivery errors and the interface retains a local download fallback.
R03
Risk
A result feels arbitrary to the applicant.
Control
The engine uses fixed weights, returns score components, and highlights matched skills in the UI.
R04
Risk
A large list recreates the original decision burden.
Control
The backend deliberately limits results to the top five after ranking the complete sample catalog.
Tradeoffs
Technical decisions
Use deterministic scoring
For a small prototype dataset, explicit rules are easier to explain, test, and tune than branding a model call as AI without evidence.
Move scoring to FastAPI
A typed backend centralizes ranking and email delivery and prevents recommendation rules from being duplicated across browser clients.
Optimize for a short list
The target user benefits more from three to five actionable options than from another filter-heavy catalog.
Credibility
Evidence and scope
Harshitha-authored public repository
Both commits are attributed to Harshitha, including the explicit migration of the recommendation engine from TypeScript to Python.
Inspectable scoring implementation
The public FastAPI source exposes the 30/40/20/10 caps, partial-credit behavior, top-five ranking, Pydantic models, and SMTP delivery path.
Attribution boundary
This is a portfolio prototype using a curated 20-record sample catalog and deterministic weighted matching. It should not be represented as a deployed government system, a learned recommendation model, or a production integration with the official PM Internship Scheme database.
Technology