2026 · Next.js · Python · Gemini · Retrieval · Qualtrics API
UA Parking Intelligence
Survey analysis, source-linked answers, and a data-backed parking proposal.
I built the data pipeline, analysis, and dashboard for a collaborative SGA parking initiative, then co-presented the findings and a college-based permit proposal to UA Parking in April 2026.
- Survey responses
- 1,766
- Original retrieval documents
- ~2,191
- Findings presented
- Apr 2026

How the system works
- 1. CollectExport survey responses through the Qualtrics API.
- 2. PrepareRedact identifiers and structure the responses for analysis.
- 3. AnalyzeCompute survey metrics, identify themes, and index free text.
- 4. InspectExplore the dashboard and retrieve answers linked to supporting sources.
The problem
The student-government team wanted to understand parking needs and test proposed changes against student feedback. The survey created a common evidence base for discussing allocation and pricing with the administration.
My contribution
I built Python/Qualtrics ETL, identifier redaction, Gemini-based thematic analysis, and a Next.js dashboard around 1,766 survey responses, including approximately 1,400 free-text responses. Collaborators contributed to survey planning, distribution, graphics, and presentation.
Semantic search over free text
The retrieval corpus contained approximately 2,191 documents, distinct from the number of respondents. I used 768-dimensional embeddings, cosine-ranked retrieval, and source-linked answers so readers could inspect the survey evidence behind a response. The public demo uses synthetic data.
Findings and outcome
The team initially expected stronger support for pay-to-park, but the survey narrowly opposed it. We co-presented the findings and proposed college-based permit allocation for UA Parking’s consideration in April 2026.
A decision: make the evidence inspectable
The application pairs generated answers with source material so a reader can examine what supports the response. In the public implementation, retrieval uses vector similarity rather than the earlier prototype’s literal word overlap, then passes the highest-ranked examples to the generation step. This gives related wording a route into the answer without making the generated text the only evidence available.
Scope and limitations
Survey respondents are not application users. The documented outcome is a presentation and proposal for consideration, not an implemented parking policy or a measured improvement in parking. Source links support inspection, but do not guarantee that every generated answer is correct. The public demo separates the interface from private responses by using fabricated records and a smaller synthetic retrieval corpus.
Inspect the implementation
The public repository includes synthetic dashboard fixtures and the application code. Run the dashboard locally with Node.js 20.9 or later. Live AI chat requires your own Gemini API key; the dashboard uses the committed fixtures.
git clone https://github.com/Karthikgaur8/ua-parking-platform.git
cd ua-parking-platform
npm ci
npm run dev -- --port 3001Read the retrieval and chat implementation ↗