Inspiration

The Resource Overflow was inspired from challenges that underserved populations face when trying to access critical services. Many people in need don't know where to find help and what kind of help exists. Additionally, existing resource directories are often difficult to navigate. I wanted to create a solution that uses technology to connect people with the resources they need in a simple way that prioritizes accessibility and utility.

What it does

Resource Overflow is a platform that helps underserved populations find and access local community resources using natural language queries. Users can describe their needs in everyday language (e.g., "I need help finding food for my family"), and the system processes these requests to identify and recommend appropriate resources.

The platform includes:

  • Natural Language Search: Using Gemini API, the system analyzes user queries to find out information like required services, location preferences, and accessibility requirements.
  • Resource Database: A MongoDB Atlas database stores data about community resources, including services offered, location data (with GeoJSON support for spatial queries), hours of operation, eligibility requirements, accessibility features, and contact information.
  • Resource Similarity Recommendations: The system leverages MongoDB's querying capabilities to find and recommend similar resources that might address related needs, helping users discover services they might not have explicitly searched for.
  • Community Contribution: A submission form allows community members and service providers to add new resources to the platform, ensuring the database stays current and comprehensive.
  • User-Friendly Interface: An accessible and responsive design that’s easy to understand and follow.

How We built it

Resource Overflow was built using a modern web development stack with several key technologies:

Backend Development

  • Node.js and Express: RESTful API(s) with distinct routes for resources, categories, search, and feedback.
  • MongoDB Atlas: The database includes a JSON schema design with GeoJSON for location data, along with indexing for efficient text and geospatial searches.
  • Mongoose: Models for resources, categories, search logs, and user feedback with proper validation and relationships.

Frontend Development

  • Vanilla JavaScript: Implemented Client-side logic without heavy front-end frameworks to ensure performance and accessibility. Needed to maximize the hackathon allotted time.
  • Custom CSS: Integrated TailwindCSS’s styles customized some.
  • Interactive Features: The UI includes dynamic content loading, geolocation, resource details, and resource recommendations.

Natural Language Processing

  • Gemini API Integration: Integrated Google's Gemini API to process natural language queries and extract structured search parameters.
  • Query Analysis Service: The implementation interprets user queries to identify categories, locations, and special requirements.
  • Fallback Mechanisms: Built fallback search methods so that it’d work even when the AI service is unavailable.

Resource Similarity Feature

  • Similarity Matching Algorithm: Developed an algorithm that identifies related resources based on categories, services, and text similarity.
  • Recommendation Display: Each resource card shows similar resources that users might also need without needing to search for it.

Database Seeding

  • Used a seeding script that populates the database with sample data.
  • Each resource includes structured data for hours, location, services, and contact information using MongoDB's document model.

Challenges we ran into

  1. GeoJSON Format Complexities: MongoDB's geospatial queries require strict GeoJSON formatting. I resolved this by standardizing the data models and implementing proper validation.
  2. Gemini API Integration: The Gemini API's embedding capabilities was challenging to implement for my recommendation feature. I initially attempted to generate vector embeddings for semantic similarity but faced compatibility issues. I changed it to a category-based and keyword-based approach without requiring vector search.
  3. DOM Manipulation Challenges: When implementing the recommendation feature, I encountered issues with document fragments and template cloning.
  4. Time Allotted For The Hackathon: Since, there wasn’t a lot of time allotted for the hackathon, I had to prioritize what to work on and remain focused and not get too ambitious with the project and go step by step making sure the implementations are correct.

Accomplishments that I’m proud of

  1. Intuitive Natural Language Interface: There is now a system where users can describe their needs in everyday language to get their results.
  2. Resource Recommendations: The recommendation feature helps users find things related to their subject of curiosity.
  3. Flexible Data Architecture: The MongoDB Atlas database design accommodates both structured and semi-structured data, providing powerful query capabilities while maintaining flexibility. Not only that, I’m quite proud of the user submission on the database working seamlessly.

What we learned

  1. MongoDB Geospatial Capabilities: Gained practical experience implementing geospatial indexing and queries for location-based resource discovery.
  2. AI API Integration: Learned how to effectively integrate and leverage AI services like Gemini, including implementing appropriate fallbacks when services are unavailable.
  3. Asynchronous UI Management: Developed strategies for handling asynchronous data loading and DOM manipulation.
  4. Schema Design Tradeoffs: Learned to balance schema flexibility with query performance.

What's next

  1. Advanced Analytics Dashboard: Develop tools to identify resource gaps based on search patterns and usage data.
  2. Resource Verification System: Implement a verification system to ensure resource information remains accurate and valid.
  3. Integration with City Services: Partner with agencies to integrate official resources and services directly into the platform.

Built With

Share this project:

Updates