Inspiration
As college students, we watched our friends drown in spreadsheets, tracking dozens of internship applications across Google Sheets, sticky notes, and browser bookmarks. Every application felt like shooting in the dark—spending hours tailoring resumes without knowing if you're even close to what recruiters want. We thought: what if AI could be your personal career coach, analyzing job descriptions and telling you exactly how to improve? That's how NOMA was born—not just another job tracker, but an intelligent system that makes you a stronger candidate with every application.
What it does
NOMA is your AI-powered command center for landing internships. Here's the magic:
🎯 Smart Internship Discovery: Browse 1,400+ curated opportunities from top companies (NVIDIA, SpaceX, Goldman Sachs, etc.) auto-synced from GitHub repos like SimplifyJobs.
🤖 AI Resume Optimization: Upload your resume, select any internship, and NOMA's Gemini AI analyzes it in seconds—calculating match scores, identifying missing skills, and suggesting exactly what to add. No more guessing if you're qualified.
📊 Visual Analytics Dashboard: See your application journey at a glance—status breakdowns via pie charts, upcoming deadlines with line graphs, and activity feeds showing your progress over time.
🔔 Intelligent Notifications: Get smart reminders for deadlines, AI suggestions for resume tweaks, and alerts for new postings—all in a beautiful slide-in panel that doesn't spam you.
📝 Application Tracker: Manage your pipeline with status updates (Applied, Interview, Offer, Rejected), set custom reminders, and never lose track of opportunities.
💾 Resume Library: Store multiple resume versions, see which ones performed best, and download AI-optimized PDFs tailored to specific job descriptions.
All wrapped in a minimalist black/white/gray aesthetic with celestial animations that makes job hunting feel less soul-crushing.
How we built it
Frontend: Next.js 15 with Turbopack for blazing-fast hot reload, React for component architecture, TailwindCSS for utility-first styling, and Framer Motion for smooth animations (including animated gradients and twinkling star patterns).
Backend: Node.js + Express REST API handling 1,400+ internships loaded from JSON storage. We chose local JSON files over a database for simplicity and portability—perfect for a hackathon MVP.
AI Brain: Google's Gemini 2.0 Flash (experimental)—we tested multiple models (gemini-pro, gemini-1.5-flash) before landing on the bleeding-edge 2.0. The AI parses job descriptions, analyzes resume content, calculates match scores, and generates structured feedback.
PDF Magic: Puppeteer generates pixel-perfect resume PDFs from AI-optimized content, and we use pdf-parse + mammoth to extract text from uploaded PDFs/DOCX files.
Data Visualization: Recharts for pie/line charts showing application stats and progress trends.
Smart Notifications: Custom notification engine that aggregates data from multiple endpoints (tracker, reminders, AI analyses, new internships) and displays a unified feed.
Challenges we ran into
🔥 Gemini API Hell: Google's Gemini models kept returning 404s—turned out model names changed (gemini-pro → gemini-1.5-flash → gemini-2.0-flash-exp). Spent hours debugging before realizing we needed the experimental endpoint.
🧩 Structured AI Output: Getting Gemini to return consistent JSON was brutal. Our prompt had to explicitly request fields like improvedSummary, improvedExperience, improvedSkills, and additionalSections—otherwise it returned random text that broke our PDF generator.
📄 PDF Generation Pipeline: Aligning AI-generated content structure with Puppeteer's HTML templates was tricky. Technologies could be strings or arrays, education/projects were nested objects—we had to add type checks everywhere.
⚛️ React Key Errors: When rendering skill arrays from Gemini, objects were being used as keys. Fixed by using indexed keys and handling both object/string formats.
🎨 Aesthetic UX: Balancing functionality with beauty was hard—we wanted graphs and data visualizations but also a minimal, calming interface. Took multiple iterations to nail the black/gray/white theme with subtle animations.
Accomplishments that we're proud of
✨ Real AI Integration: Not just a chatbot wrapper—NOMA actively parses resumes, compares them against job descriptions, and generates actionable insights with match scores and skill gap analysis.
🚀 Production-Ready Scale: 1,400+ real internships from companies students actually apply to, not fake dummy data.
📈 Full-Stack Polish: Beautiful UI, smooth animations, working dashboard with real-time charts, notification system, reminder management—this feels like a real product, not a hackathon demo.
🎯 Solves a Real Problem: Every student we showed this to said "I wish I had this last semester." That validation hit different.
⚡ Speed: Built the entire stack in a condensed timeframe—proof that with the right tools (Next.js, Gemini API, Tailwind), you can ship fast.
What we learned
🧠 AI Prompt Engineering is an Art: Getting LLMs to return structured, predictable output requires precise prompting. We learned to be explicit about JSON schemas, field names, and data types.
📦 JSON ≠ Database: Local JSON storage worked great for prototyping but has limitations (no queries, manual ID generation, race conditions). Next version will use PostgreSQL or MongoDB.
🎨 Design Systems Matter: TailwindCSS utility classes + consistent color variables (gray-300, gray-400, etc.) made it easy to maintain a cohesive theme across 20+ components.
⚡ Next.js 15 + Turbopack is Fast: Hot reload in under 1 second made iteration addictive. We could test UI changes instantly.
🤝 User Feedback is Gold: We initially auto-opened the notification panel on load—users hated it. Changed to a red dot indicator and engagement went up.
What's next for NOMA
🔐 User Authentication: Right now it's single-user. Adding auth + multi-user support so everyone can have their own dashboard.
🌐 Cloud Deployment: Host on Vercel (frontend) + Railway (backend) so it's accessible anywhere.
🤖 Smarter AI: Add cover letter generation, interview prep suggestions, and salary negotiation tips based on Gemini's reasoning capabilities.
📧 Email Integration: Parse application confirmation emails to auto-update tracker status.
📱 Mobile App: React Native version for on-the-go tracking.
🔗 LinkedIn Integration: Auto-import profile data and suggest connections at target companies.
💼 Full-Time Jobs: Expand beyond internships to entry-level roles and career pivots.
NOMA isn't just a side project—it's the tool we wish existed when we were frantically applying to 100+ internships. Apply. Organize. Evolve. All in NOMA.
Built With
- api
- express.js
- framer
- gemini
- javascript
- json
- mammoth
- motion
- next.js
- node.js
- pdf-parse
- puppeteer
- react
- recharts
- rest
- tailwindcss
- typescript


Log in or sign up for Devpost to join the conversation.