Scholafinder 🎓
Full rides for international students, found and verified over iMessage
Live app: scholafinder.vercel.app · Live agent dashboard: scholafinder.vercel.app/orchestration · Code: github.com/aaditisinghal/scholafinder · Domain registered on GoDaddy: rizzmytuition.biz
💡 Inspiration
I found out about the Presidential Scholarship because my neighbor mentioned it. No website, counselor or official channel told me. That is the whole problem.
Full and near-full scholarships for international undergraduates exist at hundreds of US universities, but no single list of them exists anywhere. To find them, a student has to:
- Visit 5,000+ university websites one at a time and dig through their scholarship and financial-aid pages.
- Guess whether internationals are eligible at all. Pages say "we meet full demonstrated need" without saying for whom, and often skip who, what, when and how much.
- Call admissions across an 8–12 hour time difference, at international rates, to an office open only 9 to 5.
- Wait 4–5 weeks for an email reply, if one ever comes.
- Make the costliest mistake blind: applying for aid at a need-aware school (rather than a need-blind one) can quietly lower their odds of admission.
Most international students who don't come to the US are held back by money. Many more never learn the money was there. Scholafinder closes that information gap.
🚀 What it does
A student texts Scholafinder on iMessage. There's no app, no account and nothing to learn.
- Onboarding (Boss Agent): A short conversation captures what they're looking for: campus culture (startup, corporate, liberal arts, research, arts), urban, suburban or rural, full ride vs. full tuition vs. partial, world ranking range, subject and subject ranking, SAT and IELTS scores. Everything is stored in Tiger Data.
- Discovery: The Browser Agent goes to each university's own financial-aid pages and pulls out candidate facts.
- Truth: The Reconciliation Agent merges every source into one answer per fact, with a confidence score and a provenance trail. When sources disagree it flags the fact as conflicting instead of guessing.
- Personal ranking: The Profile-Match Agent scores each school against the student's own preferences and orders a Tinder-style swipe deck, best fit first.
- Swipe: iMessage pings the student to swipe. A swipe yes triggers the True-Cost Agent (net cost after aid, plus health insurance, SEVIS and visa fees, flights and student fees, because full tuition doesn't mean full ride). The Explainer Agent then writes a plain-language card: who it's for, what it covers, when it's due and what it really costs.
- The student stays in control: Before anything goes out on their behalf, the Outreach Customization Agent asks: "Anything specific you want me to ask them?" The student writes their own questions.
- Outreach: The Call Agent phones international admissions with a natural voice. The Email Agent sends a backup inquiry built from the database. Replies return through a verified webhook to the exact request that started them.
- Closing the loop: The Outreach Outcome Agent texts the student what admissions actually said.
- Always on: The Policy-Monitor Agent re-checks confirmed facts for changes without inventing anything. The Deadline Agent sends reminders before deadlines, not after. The Need-Aware Agent warns the student before the need-aware trap costs them an offer.
- Reward: When the student submits an application to a school Scholafinder suggested, the Solana Reward Agent sends a real on-chain token of recognition within seconds.
🤖 1 Boss Agent + 11 core specialist agents (14 subagents total)
| Group | Agent | Job |
|---|---|---|
| Gatherers | 1. Browser Agent | Reads each university's aid pages with Playwright and extracts candidate facts |
| 2. Call Agent | Calls admissions over ElevenLabs Conversational AI with the student's own questions | |
| 3. Email Agent | Sends a backup inquiry through Resend; replies come back through Inbound | |
| Resolvers | 4. Reconciliation Agent | The keystone: one trusted answer per fact, with confidence and provenance |
| 5. True-Cost Agent | Real net cost, including costs only internationals pay | |
| 6. Requirements/Packet Agent | Deadlines by round, CSS Profile/ISFAA, test policy, fee waivers | |
| Monitors | 7. Policy-Monitor Agent | Re-checks facts for changes, never hallucinates |
| 8. Deadline Agent | Proactive iMessage reminders | |
| Strategy | 9. Need-Aware Agent | Flags need-aware vs. need-blind status per school |
| 10. Profile-Match Agent | Personalized swipe order | |
| 11. Explainer Agent | Turns a database row into a card a stressed 17-year-old will read | |
| Human-in-the-loop + Reward | Outreach Customization · Outreach Outcome · Solana Reward | The student approves, hears back and gets rewarded |
Every agent streams its activity live on the orchestration dashboard.
🏗️ Architecture
┌──────────────┐ ┌───────────────────────┐
Student ──────▶│ iMessage │◀──────▶│ Photon Spectrum SDK │
│ └──────────────┘ └──────────┬────────────┘
│ ▼
│ ┌──────────────────────────┐
│ │ BOSS AGENT (Node/TS) │
│ │ persistent process + │
│ │ cron + live sessions │
│ └───┬─────────┬─────────┬──┘
▼ ▼ ▼ ▼
┌──────────────┐ GATHERERS RESOLVERS MONITORS
│ React swipe │ Browser Reconcile Policy
│ deck (Vercel)│ Call True-Cost Deadline
└──────┬───────┘ Email Requirements Customization
│ │ Match/Explain Outcome
▼ │ Need-Aware │
┌──────────────┐ ▼ ▼ ▼
│ Express API │◀──────▶ ┌────────────────────────────────────────┐
└──────────────┘ │ TIGER CLOUD (Postgres / TimescaleDB) │
└────────────────────────────────────────┘
Gemini 2.5 Flash on Vertex AI (GCP) · ElevenLabs · Resend · Solana devnet
How every fact moves through the system:
Browser ─┐
Call ────┼─▶ scholarship_fact_candidates ─▶ Reconciliation ─▶ scholarship_facts
Email ───┘ (source, URL, confidence, Agent (confirmed | conflicting |
timestamp) stale + JSONB provenance)
▲
Policy-Monitor ─────┘ ─▶ policy_change_log (time-stamped)
🛠️ How I built it
| Layer | Stack |
|---|---|
| Language | TypeScript end to end, Node.js (ESM), tsx |
| Messaging | Photon Spectrum SDK (spectrum-ts) for live iMessage |
| AI | Google Gemini 2.5 Flash on Vertex AI (Google Cloud Platform): JSON-schema-constrained extraction, token streaming, automatic retry on 429/503 |
| Database | Tiger Cloud (Postgres + TimescaleDB): 13 relational tables, foreign keys, confidence scores, JSONB provenance |
| Voice | ElevenLabs Conversational AI + Text-to-Speech |
| Resend outbound + Inbound, with Svix-signed webhooks | |
| Blockchain | Solana via @solana/web3.js (devnet) |
| Frontend | React 19, Vite, Framer Motion swipe deck with gestures and sound |
| Scraping | Playwright |
| Scheduling | node-cron plus 10-second pollers |
| Hosting | Vercel for the web app and API; the boss agent is a persistent process so it can hold a live iMessage session |
🔬 Technical rigor
- Nothing is trusted blind. Gatherers can only write candidates. Only the Reconciliation Agent promotes facts, and it would rather say "conflicting" than guess.
- Restart-proof messaging. Proactive texts look up the student's session from their stored identifier through Spectrum's space-resolution API, so a restart never drops a reminder.
- Per-record error isolation. One unreachable student can't cancel another student's outreach mid-batch.
- Live data-integrity repair. A missing uniqueness constraint caused duplicate universities. I caught it, merged the duplicates without losing student history and added the constraint.
- Structured LLM output. Every Gemini call goes through one module with schema-constrained JSON, so a malformed response can't crash an agent.
- Real end-to-end tests. Onboarding and outreach customization ran over a live Spectrum iMessage connection, and the reward produced a real, verifiable devnet transaction signature.
- Graceful fallbacks. If a card fails to generate, the student isn't interrupted with an empty message. If a call can't connect, email carries the question. If a wallet address is invalid, the agent asks again kindly.
🟣 Photon: Agents in iMessage
| What great looks like | How Scholafinder delivers it |
|---|---|
| Real human-in-the-loop collaboration, not a demo reel of prompts | The agent never acts for the student without them. Before every call or email, it asks what the student wants asked and waits for their answer. The student decides; the agents do the legwork. |
| Context that persists across time, channels and teammates | One student identity carries across iMessage, the web swipe deck, phone calls, email threads and background monitors for weeks. A reply from admissions a month later still reaches the right student and the right school. |
| A delightful default that elevates the moment without demanding attention | The student texts once and then mostly gets good news: "Here's a full ride that fits you," "Admissions said yes, internationals qualify," "Your deadline is in 7 days." Quiet until it matters. |
| Thoughtful safety and fallback behavior that earns trust | Confidence scores, provenance and conflict flags on every fact; no hallucinated eligibility; outreach that waits for consent; validated wallets; restart-proof delivery. |
🟢 Solana Integration
| Criterion | Scholafinder |
|---|---|
| Solana-native advantage | Micro-rewards for thousands of students only make sense with sub-cent fees and near-instant finality. On most other chains the fee would cost more than the reward. |
| Working demo | A live devnet transfer was sent and confirmed, with a real, verifiable transaction signature stored in Tiger Data. |
| Technical complexity | An agent-triggered SystemProgram transfer tied to a database-tracked lifecycle (pending → sent → failed), with a devnet-only safety guard. Next up is a custom Anchor program that escrows rewards and releases them per milestone (submitted → admitted → enrolled). |
| Design/UX | No wallet UI, no signing, no gas. The student pastes an address in iMessage, it's validated and the reward arrives. The crypto stays invisible. |
| Novelty | AI agents + iMessage + international education access + Solana. That combination is almost never seen together. |
| Impact | Before: a student finishes a grueling application to silence. After: within seconds they get verifiable on-chain recognition, at a fraction of a cent to us. |
rizzmytuition.biz is registered on GoDaddy as a playful, shareable front door for Gen-Z students, next to the formal Scholafinder brand for schools and counselors.
💸 Fintech: Rethinking how money moves
A US degree costs an international family $200,000–$400,000, often the biggest financial decision they'll ever make, taken blind in a foreign aid system and sometimes a second language. Scholafinder is a financial-access tool:
- Budgeting: The True-Cost Agent shows the real net cost, including insurance, SEVIS and visa fees, flights and fees, before a family commits.
- Financial paperwork: The Requirements Agent lists exactly which aid forms each school requires (CSS Profile, ISFAA, institutional forms) and whether a fee waiver is available.
- Risk: The Need-Aware Agent shows when asking for aid could hurt admission odds.
- Payments: Solana moves real value instantly at near-zero cost, tied to a real financial milestone.
🐯 Tiger Data
- Why Tiger and not SQLite or Firebase: Facts arrive from many agents at different times and conflict with each other. We need relational integrity (foreign keys, cascades, unique constraints), JSONB provenance, concurrent writers and time-ordered history. Firebase can't join, and SQLite can't serve a fleet of concurrent agents.
- Time-stamped observation stream: Every gatherer appends
scholarship_fact_candidateswith anobserved_attimestamp, and the Policy-Monitor appendspolicy_change_logrows over time. Scholarship policy is modeled as an evolving time series, not a static row. - Operational relevance: Tiger is the single source of truth that all 14 agents, the API and the dashboard read and write live.
- Next: Hypertables on the observation and change-log streams, plus continuous aggregates for per-school policy volatility.
🧗 Challenges I ran into
- Getting three gatherers that contradict each other to produce one honest answer, which is why the Reconciliation Agent exists.
- Keeping iMessage proactive messages alive across process restarts.
- Gemini's thinking mode used up the whole output budget before any JSON was written; we disabled it for short extraction tasks.
- Routing an email reply weeks later back to the exact student and school.
🏆 Accomplishments I am proud of
- A real end-to-end flow: iMessage → swipe → customized outreach → outcome texted back → on-chain reward.
- An agent that asks before it acts.
- A live dashboard where judges can watch every agent think in real time.
📚 What I learned
Trust is the product. A wrong "you're eligible" is worse than no answer, so confidence, provenance and consent matter more than speed.
🔮 What's next
- An Anchor escrow program for milestone rewards.
- Expanding continuous verification to all 5,000+ US universities.
- Real outbound telephony at scale.
- Launching rizzmytuition.biz.
- Counselor and NGO dashboards to reach students with no counselor at all.
Every international student deserves to know the money exists. Scholafinder makes sure they do.
Built With
- 3js
- css3
- elevenlabs
- gcp
- gemini
- html5
- javascript
- photon
- python
- solana
- spectrum
- tigerdata
- typescript
- vercel
- vertex-ai
- vite


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