The problem
Most people who want to work in space don’t know where to start. There’s no clear curriculum, no obvious first step, just a vague sense that it’s probably not for them. I wanted to build the tool that should have existed years ago: something that takes your actual background and tells you, concretely, what to do next.
What I built
OrbitPath has two connected layers. The first is a live Artemis mission dashboard. A cinematic entry point with a 3D globe tracking the ISS in real time, Artemis II crew profiles, and a mission timeline. The second is the hero feature: a 5-step career pathfinder quiz that feeds your answers to Groq, which generates a structured, multi-phase roadmap personalised to your skills, interests, and goals.
Every roadmap is saved to Supabase. Every recommendation on the roadmap can be rated by the user; thumbs up/down and a 1–5 star score. Those labels are stored as a dataset. The long-term vision is a fine-tuned model trained on what real aspiring space professionals found useful.
Technical decisions
The 3D globe was the biggest technical risk, so I tackled it on Day 2. globe.gl wraps Three.js with a clean API for spherical rendering — the ISS position is fetched from wheretheiss.at every 5 seconds via a useISSPosition hook and plotted as a live marker on the globe surface.
Midway through development I switched from Gemini to Groq. Both offer free tiers, but Groq’s rate limits were more workable for the rapid iteration I needed during build week. The server action in app/pathfinder/actions.ts handles the API call server-side, so the key never touches the client.
The data labeling loop was an intentional design decision, not an afterthought. Each RecommendationCard exposes a LabelingWidget — the rating is written to a labels table in Supabase with a foreign key back to the roadmaps row. Even at zero users, the schema is ready to collect signal the moment anyone uses it.
What I learned
Scoping an 8-day project is its own skill. The ISS globe took longer than expected; the crew profile pages took less. Shipping something real inside a tight constraint forced cleaner decisions, if a feature didn’t serve the hero flow, it got cut or deferred. On the AI side, I learned how to structure prompts to get consistently formatted, useful output from a language model and how to handle that response in a server action. With Supabase, I went beyond basic data storage. I designed a lightweight feedback loop where quiz inputs, generated roadmaps, and user ratings are all saved together as labeled records. This means every interaction produces a structured data point that could be used to evaluate or fine-tune AI recommendations over time, which gave me a practical introduction to how real-world AI products close the gap between model output and user value.