DEV Community

Aastha Yadav
Aastha Yadav

Posted on

From Prompts to Product: Building StudentOS with Google Antigravity + Sanity

Sanity Challenge Path Two Submission

StudentOS is an AI-powered student productivity and opportunity intelligence platform built to help students move from discovering an opportunity to actually becoming ready for it.

For this challenge, I extended StudentOS with an Opportunity Intelligence experience powered by Sanity.

The system combines structured opportunity knowledge — opportunities, organizations, eligibility rules, skills, application processes, resources, and sources — with private student context such as skills, goals, education, and progress.

Students can select an opportunity and see their fit, eligibility, skill gaps, application requirements, and personalized preparation guidance.

The goal is simple: instead of only asking "What opportunities are available?", StudentOS helps answer "Am I ready for this opportunity, and what should I do next?"
Live Demo: YOUR_DEPLOYED_WEBSITE_URL

Demo Video: YOUR_YOUTUBE_VIDEO_URL

The demo showcases the Opportunity Intelligence workflow, including Sanity-powered opportunity knowledge, readiness assessment, skill-gap analysis, application requirements, and the grounded AI Q&A experience.
GitHub Repository: https://github.com/aastha-yadav2/studentos-ai
I built and iterated on StudentOS using Google Antigravity as my AI-native development environment.

Rather than rebuilding the application from scratch, I used Antigravity to extend an existing StudentOS codebase and progressively introduce a Sanity-powered opportunity knowledge layer.

1. Starting from the existing product

StudentOS already had student context, opportunity discovery, matching, applications, and preparation features.

The first goal was to understand the existing architecture and identify where Sanity could add meaningful structured knowledge instead of creating a separate application.

2. Designing the Sanity knowledge model

I prompted Antigravity to design a structured content model around:

  • Opportunities
  • Organizations
  • Skills
  • Eligibility Rules
  • Application Processes
  • Resources
  • Sources

The important design decision was to connect these records rather than store everything as one large opportunity document.

This created relationships such as:

Opportunity → Organization → Eligibility → Skills → Application Process → Resources → Source

3. Building the Opportunity Intelligence layer

I then prompted Antigravity to connect the Sanity knowledge layer with the existing StudentOS opportunity system.

The implementation combines:

  • Sanity opportunity knowledge
  • Student profile/context
  • deterministic eligibility
  • existing 50/30/20 matching
  • AI-powered reasoning and preparation

This resulted in an Opportunity Intelligence drawer where students can understand their readiness for a specific opportunity.

4. Where the build got stuck

The first major issue appeared when an opportunity that was not present in the live Sanity dataset fell back to an existing GSoC record.

This caused unrelated GSoC information to appear for another opportunity.

Instead of hiding the problem, I traced the data flow and used Antigravity to implement strict opportunity identity validation and opportunity-specific fallbacks.

The final system rejects mismatched Sanity documents instead of silently displaying another opportunity's content.

5. Debugging the AI Q&A

A second issue appeared in the Opportunity Intelligence Q&A.

Different questions such as:

  • "Am I actually ready?"
  • "What documents do I need?"
  • "What skills am I missing?"
  • "How can I prepare over the next 2 weeks?"

were initially returning the same generic response.

I traced this to the AI Router request validation. The opportunity_qa request type had not been registered in the Supabase Edge Function, so requests were failing before reaching the intended AI flow and falling into a generic fallback.

I corrected the request routing and then added:

  • deterministic question-intent classification
  • opportunity-specific AI context
  • response validation
  • anti-cross-opportunity leakage checks
  • deterministic intent-specific fallbacks
  • automated Q&A tests

6. Iterative validation

The final implementation was tested by switching between different opportunities and checking that their eligibility, skills, application information, resources, and Q&A context remained isolated.

I also verified the production build and Sanity Studio build after the changes.

The result was not just a generated UI. The build evolved through several rounds of prompting, inspection, debugging, testing, and course correction.
Sanity Project ID: p2hu7iqp

Dataset: production

Sanity is used as the structured content layer for the Opportunity Intelligence experience, with connected records for opportunities, organizations, eligibility rules, skills, application processes, resources, and source provenance.

Agent Session

The project was developed using Google Antigravity as the AI-native development environment.

A DEV Agent Session transcript is not included because Google Antigravity is not currently listed among the supported Agent Sessions upload sources.

Top comments (0)