Inspiration
Every day, millions of people struggle to find reliable local and career-related information. Job opportunities, internships, scholarships, grants, and community resources are scattered across websites, social media pages, messaging groups, and word of mouth — making it hard for people to discover the opportunities that could change their lives.
We built CityOS around one question: what if finding an opportunity — and actually being ready to apply for it — took one conversation instead of a dozen open tabs?
What it does
CityOS is an AI-powered opportunity navigator. Instead of searching multiple sites, users ask in plain language:
- "What opportunities are available this week?"
- "Find AI internships near me."
- "Show me scholarships I can apply for."
An AI agent searches a real knowledge base of opportunities, returns relevant matches, and explains why each one fits the user's profile.
From there, CityOS goes further than search. Its AI Career Assistant builds a step-by-step roadmap toward a chosen opportunity, generates a tailored CV and cover letter for it, and lets the user talk through follow-up questions with an AI coach across a multi-turn chat — refining tone, asking about the roadmap, or clarifying next steps.
The goal isn't just discovery — it's turning "I found something" into "I'm ready to apply."
How we built it
Frontend: Nuxt.js / Vue.js, Tailwind CSS, Supabase Authentication
Backend: FastAPI, REST APIs, PostgreSQL via Supabase, pgvector for semantic search, NumPy
AI layer: Groq API for low-latency LLM inference, agentic tool-calling for opportunity search (the model decides its own search query and receives real results back as a tool call), prompt-engineered CV/cover-letter generation, and multi-turn conversational memory for the career-chat assistant
Data: A curated, searchable knowledge base of opportunities (jobs, internships, scholarships, grants) indexed with vector embeddings for semantic — not just keyword — matching
One technical detail worth noting: the /recommend endpoint isn't a single static prompt — it's a real agent loop. The model is given a search_opportunities tool, decides its own query based on the user's profile, we execute an actual pgvector similarity search, and feed the results back as a tool result before the model produces its final recommendations. We also route the larger, more repetitive payloads in that flow (tool results, and long-running chat history) through Paritok's context-compression layer, which measurably cuts the amount of redundant context re-sent to the model on every turn — useful both for cost and for keeping response latency down as conversations grow.
Challenges we faced
Designing an AI experience that feels conversational while still returning accurate, relevant results was the core challenge — natural language is ambiguous, and turning "find AI internships near me" into a precise, well-scoped database query required real prompt and tool-design iteration.
Organizing many categories of opportunity data (jobs, scholarships, grants, internships) into one unified, searchable system that stays fast as the knowledge base grows was another significant piece of work.
Building the AI career assistant also meant carefully engineering prompts that generate genuinely useful, professional CVs and cover letters across very different opportunity types — a scholarship essay and a startup internship CV need different tones, and getting the model to adapt reliably took real tuning.
Finally, keeping a multi-turn chat coherent and fast as conversation history grows — without either losing context or re-sending an ever-growing wall of text on every request — pushed us to think seriously about context management, not just prompt-writing.
What we learned
Building CityOS reinforced that AI creates the most value when it's applied to a real, specific bottleneck — not "opportunity discovery" in the abstract, but the actual moment someone doesn't know where to start or how to present themselves.
Along the way we gained hands-on experience with:
- Designing AI-first, conversational user experiences
- Agentic tool-calling — letting the model decide what to search for, not just answering from a static prompt
- Semantic search with vector embeddings for genuinely relevant matching, not keyword overlap
- Structuring a growing knowledge base for fast, scalable retrieval
- Engineering AI-generated career documents that adapt to context
- Managing context and cost in a multi-turn conversational product as history accumulates
Most importantly: successful AI products aren't defined by the model alone — they're defined by making the technology practical, fast, and genuinely usable end to end.
What's next
- Hosted, publicly accessible deployment
- Personalized, proactive recommendations (not just on-request)
- Real-time public service and community updates
- AI-powered interview preparation
- Multilingual support
- Community-contributed local knowledge
- Integration with additional public and private opportunity data sources
- Smarter, location-aware matching
Our long-term goal: make every opportunity easier to find, and every applicant more ready to pursue it — through one intelligent, conversational interface.
Log in or sign up for Devpost to join the conversation.