Inspiration
Every student we know is applying the same way: an AI writes the cover letter, a script fills the form, and 400 applications go out to 400 portals. Recruiters can tell, and the response rate is near zero. Meanwhile, the internships people actually land almost always trace back to one human; the alum from the same fraternity, the senior from the same club, the person from your hometown who forwarded your resume. That connection was never about luck. It was about finding something real in common and having the nerve to write.
We built Common Ground to make that the default path. Not "apply to more," but "find the person, find what you share, and reach out like a human."
What it does
A student uploads their resume and answers a short questionnaire — school, clubs, Greek life, hometown, prior employers, target companies. From there:
- People you can reach. For each company on the student's list, Common Ground ranks the alumni there by what they genuinely share — same fraternity, same club, same hometown, same past employer — on a 13-tier affinity ladder. Every card shows only the real things in common, so the opener writes itself.
- Applications picked for you. 6,600 real Summer 2027 internship postings, ranked against the student's profile, with the student's target companies first. Every posting shows what the role asks for, where the student stands, and who they know there.
- Improve my chances. A Databricks agent reads the posting's requirements against the confirmed profile, finds the cheapest real way to close each skill gap (courses, certifications, projects, with cost and weeks), and rewrites the resume for that role — from the confirmed profile only, with a fabrication check so nothing invented slips in.
AI advises and tailors. The outreach is always the student's own words. That is the product's rule, not a limitation.
How we built it
- Next.js 16 / React 19 app with a "Terminal Brutalist" design system, deployed on Vercel.
- Databricks is the backbone: Unity Catalog tables for the alumni pool, the 6,632-row internship directory, per-category requirements, a learning catalog, agent run traces, and student sessions (Delta tables so the demo survives serverless instances). Loaded through UC Volumes and COPY INTO.
- The agent runs on Databricks model serving (Llama 3.3 70B) with tool calling: skill_gaps, learning_options (a Unity Catalog SQL function over the learning catalog), rewrite_resume, finish. Every run is recorded to a Delta table with its trace.
- Resume reading is ai_query() inside Databricks — no third-party LLM key anywhere.
- A Genie space and a Vector Search index sit over the same tables for natural-language exploration of the pool.
- The people pool is synthetic on purpose: 1,100 Virginia Tech alumni, two per real Gobbler Connect club, at 67 real employers, with generated portraits and example.com emails. No scraping, no real people's data. ## Challenges we ran into
- Databricks Free Edition has no outbound network from SQL, no OAuth apps, and no Claude models — so we moved everything to what it does have: ai_query, model serving with tool calling, Volumes, and UC functions.
- The demo runs on serverless functions, and an in-memory session store meant a resume uploaded on one instance vanished on the next. Sessions moved into a Delta table.
- The directory has titles and URLs but no posting text or dates, so "what they want" comes from hand-written per-category requirements, labelled as typical rather than pretending to be the posting's own words.
- Getting the UI to show only what two people share, ordered by the strongest tie, took several passes — every filler line ("they recently posted…") made the product feel like every other tool. ## Accomplishments that we're proud of
- The whole pipeline — resume in, ranked humans out, agent plan and rewrite — runs end to end on Databricks Free Edition in about ten seconds.
- Zero secrets in the repo (a pre-commit hook blocks tokens), zero scraped data, zero AI-written outreach.
- A student with a real VT resume sees real openers within seconds of uploading. ## What we learned The hard part was never the model. It was deciding what the model is not allowed to do. Once we drew the line — AI tailors and advises, the human writes — every design decision got easier, and the product got more honest.
What's next for Common Ground
A real alumni directory behind a university partnership (opt-in, not scraped), tracking which outreach turned into conversations and which into offers, and feeding those outcomes back into the affinity ladder so the ranking learns what actually works.
Built With
- databricks
- databricks-genie
- databricks-model-serving
- databricks-vector-search
- delta-lake
- faker
- llama-3.3
- next.js
- python
- react
- tailwind-css
- typescript
- unity-catalog
- vercel
- vitest
- zod
Log in or sign up for Devpost to join the conversation.