Inspiration

The job market for engineers has never been more competitive. Whether you're targeting Google, Netflix, or a fast-growing startup, the gap between where most candidates are and where they need to be is so enormous. However, the resources to bridge that gap are generic and overwhelming. That makes us keep asking the same question: why does every learning roadmap look the same, regardless of where you're trying to go? A frontend engineer targeting Meta needs to think completely differently from one targeting a fintech startup. The tech stack matters. The interview format matters. The engineering culture matters. Yet every roadmap on the internet treats all of these the same way. That frustration became Mirabile, which is a platform that generates a deeply personalized, company-specific learning journey for any engineering role at any target company.

What it does

Mirabile is an AI agent lives in the Mirabile ecosystem that takes three inputs: a career goal, a target company, and a timeline to generate a complete roadmap tailored to that exact combination, broken into 6 phases: Foundation, Intermediate, Advanced, Data Structures & Algorithms, System Architecture, and Interview Preparation.

For every step, Mirabile fetches real verified learning resources, from articles, courses, documentation to YouTube videos sourced via the YouTube Data API v3 scoped to curated channels by role. Users can track progress, earn achievements, monitor streaks, and follow trending tech news all from a single dashboard.

How we built it

Frontend — React, TypeScript, Tailwind CSS, Vite with a custom glass-morphism dark UI Backend — Supabase Edge Functions on Deno handling auth, AI routing, resource fetching, and database writes in a single request AI layer — No set-up required using AI models provided by Puterjs service and multi-model support across OpenAI, Claude, and Gemini via API keys YouTube — YouTube Data API v3 called server-side after AI generation, scoped per channel per role, returning video URLs Database — Supabase PostgreSQL storing roadmaps, steps, resources, progress, achievements, and events

Challenges we ran into

  • At first the broken resource URLs were the biggest early problem. The AI kept producing completely broken resource links and links to resources which raised a 404 Page not found error. We solved this by removing video generation from the LLM entirely and replacing it with direct YouTube Data API v3 calls.

  • Furthermore, step order mismatches caused resources to attach to the wrong steps: the AI was treating step_order as local to each phase (resetting 1–3) rather than global across all 18 steps. Fixed by explicitly encoding the global ordering in the prompt.

  • We also fixed the timezone bugs in the achievements and streak system: getHours() and toLocaleDateString() were using the server's local timezone instead of UTC, causing off-by-one day errors and achievements firing at the wrong times for users in different regions. All date logic was rewritten to use UTC methods consistently.

  • Multi-model consistency: OpenAI, Claude, and Gemini each return different response formats. We built a shared safeParseJSON layer and strict output format rules to normalize across all three.

Accomplishments that we're proud of

  • We are so proud with a prompt architecture that reliably produces company-specific structured roadmaps across three different AI providers
  • A fully server-side resource pipeline that returns real URLs with zero hallucination
  • A streak and achievements system that handles timezone edge cases correctly in UTC
  • Shipping a production Supabase edge function that handles auth, multi-LLM routing, YouTube fetching, and all database writes in a single clean pipeline

What we learned

  • LLMs are excellent at reasoning and structure but should never be trusted to generate or verify URLs. Although we have managed to fix this issue, there is no guarantee there will not be a broken link in the future
  • Splitting a complex AI task into focused prompts (structure first, resources second) produces far more reliable output than one large prompt
  • Prompt engineering is real engineering: versioning prompts, adding explicit rules, and testing edge cases matters as much as the code around them
  • Timezone handling is easy to get wrong silently like UTC everywhere from day one is the right default

What's next for Mirabile

As Mirabile grows, we are planning the next step is bringing Puter.js server-side so all AI models benefit from the same YouTube integration and consistent resource quality. We also plan to add YouTube quota caching to store video results in Supabase and avoid redundant API calls at scale. On the learning side, we want roadmaps to become truly adaptive by adjusting remaining steps based on the user's actual pace and progress rather than a fixed plan. Further down the line, an AI-powered interview simulation mode will let users practice with mock interviews tailored to their target company's known format, triggered automatically at the Interview Preparation phase. Finally, we envision a community layer where users can share and upvote roadmaps for specific company and role combinations, building a library of verified paths from real engineers who've walked them.

Built With

Share this project:

Updates

Submission history