Inspiration
I got 11As in SPM. By every standard, I was supposed to know what to do next. I didn’t.
No one had ever actually helped me figure it out. My school counselor had hundreds of students. My parents meant well, but their advice came from a different time. Relatives gave suggestions like “doctor” or “lawyer” without ever asking who I was.
So I did what most students do — I guessed. I picked Information Technology. It worked out. But I didn’t know that when I chose it. I just got lucky.
And that’s the problem.
Too many students are forced to make life-shaping decisions without understanding themselves first. It's the default experience for most Malaysian secondary school students. One counselor per 500 students, a generic course catalog, and a decision that shapes the next decade of your life. We kept coming back to the same thought: what if there was something that actually helped? What if she'd had access to something that asked her the right questions?
That's where In-Aspired came from. The name says it: inspired, but also in-aspired: the guidance that should be built into the system, waiting for you when you need it.
What It Does
In-Aspired is an AI-powered student guidance platform built specifically for Malaysian secondary school students navigating post-secondary decisions. It works across four integrated pillars:
Self Discovery
A 36-question RIASEC personality assessment that produces a ranked interest profile for each student. Rather than a flat quiz, it rotates across five different interaction styles (dialogue choices, swipe navigation, visual scene selection, standard cards, and a gamified TV-remote interface) to keep students engaged through all 36 questions. Students who want deeper insight can unlock a 16-page Premium PDF Career Analysis Report, generated on-demand and delivered to their email.
Knowledge Hub
A curated database of 442 courses and 340 careers, all contextualized for the Malaysian post-secondary landscape. Course recommendations are generated using domain-affinity scoring derived from the student's RIASEC profile. Career recommendations use cosine similarity between the student's interest vector and each career's weighted RIASEC code vector, so the results are mathematically grounded rather than arbitrary.
Virtual Study Rooms
Real-time collaborative spaces where students can work together with WebRTC peer-to-peer video, a shared Excalidraw whiteboard with live cursor tracking, a synchronized Pomodoro timer, a shared to-do list, ambient lofi music, file resource sharing, and room chat. Guidance doesn't stop at discovery — it extends into action.
AI Companion
A 24/7 multilingual chatbot powered by Google Gemini that provides personalized guidance on courses, careers, and platform features. It knows the student's RIASEC profile, searches the live database semantically using vector embeddings, and responds in whichever language the student writes in — English, Mandarin, Bahasa Malaysia, or Tamil.
How We Built It
We are two people. One built the platform. One built the data that made the platform worth using. That second part sounds unglamorous. It was anything but curating 442 courses and 340 careers — finding accurate RIASEC codes, salary ranges, demand levels, institution details, and study pathways for the Malaysian market, required weeks of research across university websites, government labor statistics, and career psychology literature. No database like this existed in one place. We created it.
On the technical side, the stack is a full-stack TypeScript monorepo using npm workspaces:
Frontend: React 18 + Vite + Tailwind CSS + Framer Motion, deployed on Vercel
Backend: Node.js 20 + Express 5 + Socket.IO, deployed on Fly.io via Docker
Database: MongoDB Atlas with HNSW vector search indexes for semantic retrieval
Cache / Real-time state: Redis with the Socket.IO adapter for horizontal scaling
AI: Google Gemini 2.5 Flash for chat, gemini-embedding-001 for 768-dimension vector embeddings
PDF: Puppeteer + Chromium for server-side report generation
Payments: LemonSqueezy with HMAC-verified webhooks and async fulfillment
Auth: HttpOnly cookie-based JWT with silent refresh rotation, bcrypt, TOTP 2FA
The AI chatbot uses a four-phase hybrid architecture: deterministic intent classification handles clear, common queries at ~50ms with zero API cost, while ambiguous queries escalate to Gemini. When the LLM is invoked, it receives the student's RIASEC profile and the top results from our actual database — not its training data — so it cannot hallucinate a course that doesn't exist. This design reduced Gemini API usage by approximately 60% compared to a naive pure-LLM approach. The entire test suite runs 399 tests across 38 files on every push to main, covering all controllers, services, middleware, and frontend components via GitHub Actions with MongoDB and Redis service containers.
Challenges We Ran Into
Survey fatigue almost broke the quiz. 36 questions is a lot to ask of a 17-year-old. Early testers were visibly losing interest around question 20. We rebuilt the quiz with five completely different interaction styles that rotate randomly, so every few questions the format changes. The same assessment, delivered in a way that stays surprising. Completion rates recovered immediately.
WebRTC across real Malaysian networks is genuinely hard. Peer-to-peer video works beautifully in a controlled environment and becomes unpredictable fast when you factor in school Wi-Fi, mobile hotspots, and corporate firewalls. We built a full media fallback chain: camera + microphone → microphone only → view-only → error with retry. Students behind restrictive NATs can still participate in study rooms, just without sending video. Partial presence beats absence.
Building the embedding layer to be resilient. Gemini API calls can fail. When they do, a naive implementation either crashes or hangs. We implemented a 3-state circuit breaker — CLOSED (normal), OPEN (fail-fast after 3 consecutive failures, 30-second cooldown), HALF_OPEN (single probe request to test recovery) — backed by an in-memory cache with 500-entry capacity and 10-minute TTL. During an outage, the chatbot degrades to keyword search rather than going dark entirely.
Accomplishments That We're Proud Of
We're proud that it actually works, end to end, in production, for real users. That sounds like a low bar. It isn't. A platform with authentication, real-time collaboration, AI, payments, PDF generation, push notifications, and multilingual support involves dozens of moving parts, and every one of them has to be right before a user can have a seamless experience.
We're proud of the data. 442 courses. 340 careers. All curated manually, tagged with RIASEC codes, salary ranges, demand levels, and Malaysian institution details. This dataset doesn't exist anywhere else in this form. It's the foundation everything runs on.
We're proud of the test suite. 399 tests, 38 files, covering every controller, every service, every middleware layer, and the key frontend components. Not because it made development faster in the moment — it didn't, always — but because it gave us confidence that when we changed something, we'd know immediately if something else broke.
We're proud that user testing returned an average satisfaction score of 4.79 out of 5, with 93% of participants successfully completing all assigned tasks on their first attempt. That number means the platform is intuitive. It means we got the UX right.
And we're proud that it supports four languages. A Malaysian student can open In-Aspired, type a question in Tamil or Mandarin, and receive a grounded, personalized response in the same language. That felt important to get right. It still does.
What We Learned
We learned that data is a product. The AI is only as good as the database it draws from. No amount of clever prompt engineering compensates for incomplete or inaccurate course information. The weeks spent curating 442 courses weren't background work — they were the work.
We learned that every external dependency will fail at the worst possible time. Gemini, Redis, MongoDB, LemonSqueezy, SMTP — all of them have failure modes. Building circuit breakers, fallback chains, and retry mechanisms wasn't pessimism. It was the difference between a platform that degrades gracefully and one that just breaks.
We learned that the RIASEC model is genuinely brilliant. Holland spent decades developing and validating a framework that transforms the overwhelming question of "what should I do with my life" into something structured, measurable, and actionable. Building on 60 years of vocational psychology research felt less like standing on shoulders and more like being handed a map in a city we'd never visited.
We learned what it feels like to build something you actually believe in. The technical decisions mattered more because the problem mattered. We were more careful. We tested more thoroughly. We stayed up later — not because we had to, but because we wanted to see it work.
What's Next for In-Aspired
The immediate roadmap includes a dedicated TURN server for WebRTC to replace the free public relay we currently use, which will dramatically improve video quality for students on restricted networks. We're also building room analytics — attendance tracking, focus streaks, and session summaries — so students and counselors can see patterns in how students are actually using the platform.
On the AI side, we want to incorporate feedback signals into the recommendation ranking. Right now, if a student saves a course or spends time on a career page, that signal isn't fed back into future recommendations. It should be.
Longer term, we're designing a counselor dashboard — a view that lets school counselors see aggregate RIASEC profiles, popular courses being explored, and students who might need a conversation. In-Aspired was never meant to replace counselors. It was meant to make their limited time more effective by doing the initial groundwork for them.
And beyond Malaysia: the RIASEC framework is universal. The multilingual architecture is extensible. The same platform, re-seeded with localized data, could serve students in Indonesia, the Philippines, Vietnam — anywhere that the ratio of counselors to students makes individual guidance a privilege rather than a right.
We didn't solve the problem. But we built something real, something working, and something that a student at 11pm on a Tuesday night — uncertain, unguided, and maybe a little scared about their future — can actually open and use.
That's the right place to start.

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