Skip to content

Latest commit

 

History

History
773 lines (503 loc) · 44.6 KB

RECRUITMENT_TASKS_2024.md

File metadata and controls

773 lines (503 loc) · 44.6 KB

Tasks

  • It is perfectly fine if you have no experience in the field and trying it out for the first time. Please put in sincere efforts and try to learn from whatever you complete!
  • Each Task has an ID, tags, mentor, description, tips and useful resources
  • You can refer to the resources put up in each task to understand the concepts required to complete the task.
  • Feel free to reach out to the mentors for any assistance you need.
  • Mention the Task ID attempted in the README of your private GitHub repository.
  • Read the instructions, evaluation criteria and submission details here

Table of Tasks

Tasks Difficulty
ColorQuest Easy
Landing Page Easy
Student Profile Portal Easy
Shrinker Easy
Emojify Easy/Medium
LinkHub Easy/Medium
Discord QuizBot Medium
Web-Based Diagram Generator Medium
Fast-Type Medium
Competitive Programming Portal Medium
News Feed Generation Medium
Chessly Medium/Hard
TravelTribe Medium/Hard
Club Recruitment Portal Hard
InterSIG Tasks Difficulty
AgriVerify (GDG x Systems) Medium/Hard
Hogwarts Q&A (GDG x Intel) Hard

Task ID: ColorQuest

Front-end Web Development, Svelte

Mentors: J Hariharan (+91 8050030224), Harshit Gupta (+91 8583905686)

Difficulty: Easy

Description

Build a HSV-based color picker application similar to Google Color Picker, using Svelte. The picker should allow all three degrees of freedom (as in the Google Picker - hue with bottom slider, saturation on horizontal axis, value on vertical axis); any layout can be used to achieve this. It should also support 5 color formats (HEX, RGB, CMYK, HSL, HSV), allowing the user to input a value in any of these formats to change the selected color. Clicking and dragging the mouse on the slider or picker should also change all 5 values in real time.

Useful resources:


Task ID: Landing Page

UI/UX Design, Frontend Development, Web Development

Mentor: Mardav Gandhi (+91 9033398366), Apoorva Agrawal (+91 8197404580)

Difficulty: Easy

Description

In this task, you will create a pixel-perfect clone of the landing page of a well-designed website. The goal is to replicate the visual design and basic interactions of the chosen website, focusing on attention to detail and responsive design.

Follow the steps below to complete this challenge:

  1. Choose one of the following websites to clone (only the landing page):
  2. Create a responsive clone of the chosen website's landing page, ensuring it looks good on both desktop and mobile devices.
  3. Implement basic interactions and animations present on the original site (e.g., hover effects, simple transitions).
  4. Pay close attention to typography, spacing, and color schemes to match the original design as closely as possible.
  5. Use modern CSS techniques like Flexbox and Grid for layout.
  6. Ensure the clone is accessible, following basic web accessibility guidelines.
  7. Feel free to use all the assets (images, icons, etc.) from the respective landing page you're cloning. If for any reason you can't access certain assets, you can use placeholder assets as a last resort.

Useful resources:

Tips:

  1. Start by analyzing the structure of the chosen website's landing page and breaking it down into components.
  2. Use browser developer tools to inspect the original site for exact colors, fonts, and spacing.
  3. Focus on making the design responsive from the beginning, rather than as an afterthought.
  4. Use CSS custom properties (variables) to manage colors and repeated values efficiently.
  5. Don't worry about implementing complex backend functionality; focus on the frontend appearance and basic interactions of the landing page.
  6. Test your clone on different devices and browsers to ensure consistency.

Task ID: Student Profile Portal

UI/UX, No Code, Prototyping

Mentor: Fahim Ahmed (+91 8861054452), Sanjeev Holla S (+91 7676977619)

Difficulty: Easy

Description

Design a Student Profile Portal to manage and showcase student information at NITK. The platform will serve as a centralized hub for students to manage details about their academics, clubs, achievements, research work, internships, skills, projects, etc. Students can selectively choose which details to make public for others to view on their profiles. The platform will also be useful for institution to maintain a comprehensive student database.

Your task is to create a high-fidelity user interface (UI) and user flow using Figma with prototyping to demonstrate how the portal will function.

Follow the steps below to complete this challenge:

  • Ideate Features: Brainstorm and design features that would benefit both students and the institution for managing and displaying their profiles.
  • High-Fidelity UI in Figma: Create a high-fidelity user interface in Figma with user flow prototyping. Design clean and intuitive screens.

Useful resources:

Tips:

  1. Think of creative ideas and present them properly in your designs.

Task ID: Shrinker

Full-Stack Web Development, Databases

Mentors: J Hariharan (+91 8050030224), Harshit Gupta (+91 8583905686)

Difficulty: Easy

Description

Create a URL shortner web application which allows people to login, create and manage short URLs, and track statistics on their links. The app also allows users to choose custom short URLs if they are available.

The following features should be included in the web app:

  1. User login through email-password or Google Authentication.
  2. User can paste the URL to shorten, and are given a randomly generated short URL.
  3. The user is given the option to enter a custom short URL, which is accepted if it is available (not used previously).
  4. The user can view their previously created short URLs, along with statistics on the number of people who have visited each of them.

Useful resources:

Tips:

  1. You can use any technologies to build the application. The ones mentioned above are just for reference.

Task ID: Emojify

Web Application, Natural Language Processing

Mentors: Apoorva Agrawal (+91 8197404580), Mardav Gandhi (+91 9033398366)

Difficulty: Easy/Medium

Description

Develop a fun and interactive app where users input text, and it automatically translates the message into emoji-based sentences. The app will primarily use a predefined dictionary to map words or phrases to corresponding emojis. Users will also have the ability to tweak the emoji translations manually by selecting from a list of alternative emojis.

Because sometimes, the right emoji speaks louder than words!

Follow the steps below to complete this challenge:

  1. Develop a simple user interface (UI) that allows users to input text (e.g., a sentence or phrase)
  2. Create a predefined dictionary that maps common words or phrases to emojis
  3. Once the user enters a sentence, break it down into individual words and replace the words that have corresponding emojis with the emojis
  4. After the initial translation, allow users to manually tweak the suggested emojis by selecting from a list of alternative options
  5. Also add a Voice-to-Emoji Translation with integrated voice recognition so that users can speak their sentences, and the app translates them into emojis in real-time. This will add a fun element to the app

Bonus Feature ( Optional ):

Implementing the bonus feature will make the task count as Medium, otherwise it will be Easy

  1. Emoji Sentiment Analysis having an implementation of sentiment analysis using simple NLP models (like VADER or TextBlob) to adjust emoji suggestions based on the emotional tone of the text. This can help ensure the emoji translation better reflects the mood of the original message

Expected Input and Output Examples:

Input: "I love pizza"

Output: "❤️ 🍕"

Input: "The dog is happy"

Output: "🐶 😃"

Useful resources:

Tips:

  1. Start by focusing on a basic set of words for translation and expand the emoji dictionary over time.
  2. Make the UI fun and interactive with features like live emoji preview as the user types.
  3. Consider using libraries or frameworks like React, Vue.js, or plain HTML/CSS/JavaScript for building the interface.
  4. Allow flexibility in how emojis are displayed and edited, making the user experience more enjoyable.

Task ID: LinkHub

Web Application, CRUD, UI/UX, Frontend Development

Mentors: Apoorva Agrawal (+91 8197404580), Mardav Gandhi (+91 9033398366)

Difficulty: Easy/Medium

Description

Develop a web application called LinkHub that helps NITK students create personalized landing pages to organize and share important academic, club, and social links. This tool can be used for various purposes like sharing links for group projects, showcasing club activities, organizing research work, or preparing for placements. Each student will have their own customizable landing page where they can organize their links efficiently.

Follow the steps below to complete this challenge:

  1. Build a clean, minimal user interface where users can add, edit, and delete links.
  2. Allow students to customize the appearance of their landing page, including themes and NITK-branded backgrounds (e.g., college colors, logos)
  3. Enable students to categorize their links (e.g., Projects, Clubs, Research, Social Media) and assign custom titles to each link
  4. Ensure that the links open in a new tab when clicked

Bonus Feature:

Implementing all the bonus features will make the task count as Medium, otherwise it will be Easy

  1. Each student's page should have a custom shareable URL, for example, <your_domain>.vercel.app/username or <your_domain>.netlify.app/username, making it easy to share with others
  2. Drag-and-Drop: Add a drag-and-drop feature that allows students to reorder their links. This will make it easier for users to organize and prioritize their most important links by simply dragging them up or down the list.
  3. Searchable Links: Implement a search feature that allows students or visitors to quickly find specific links on the landing page.

Expected Input and Output Examples:

Input: User provides links (e.g., Instagram, LinkedIn, personal website) and customizes their page's appearance.

Output: "A personalized landing page with clickable links that can be shared with others."

Useful resources:

Tips:

  1. Focus on Usability: Since the app is for students, prioritize a simple and intuitive UI where adding and managing links is effortless.
  2. Responsive Design: Ensure that the page looks good on mobile, as many users will view it on their smartphones.
  3. Styling Libraries: Consider using CSS libraries like Bootstrap or Tailwind CSS to speed up development and make the UI more visually appealing.
  4. Custom Slugs: Use URL slugs (<your_domain>.vercel.app/username) to make the page unique and easy to share.

Task ID: Discord QuizBot

Discord Bot, APIs,Full Stack Development, GenAI, CRUD

Mentors: Anush Revankar (+91 9482597386), Ayush Kumar Singh (+91 9334352548)

Discord is a popular communication platform used for communities, and Discord bots can automate tasks within these servers, enhancing server functionality. In this task, you are expected to build a Discord quiz bot that allows users to select from a set of 10-20 available quizzes, answer timed questions, and view their results on a leaderboard ranked by both points and time taken. In cases where multiple users have the same points, the ranking should be determined based on the time taken per question. After completing a quiz, users should be able to view the top 10 players and their overall rank.

The task also includes building a CRUD (Create, Read, Update, Delete) application for managing quiz sets and individual questions.

Key Features to Implement:

  1. Discord Quiz Bot :

    • The bot should display 10-20 available quizzes for users to choose from, with each quiz consisting of multiple-choice questions.
    • Once a quiz is selected, the bot presents each question one by one, with a set timer (e.g., 30 seconds per question). The bot will track the time users take to answer each question
    • After the quiz, display a leaderboard ranking players.The leaderboard should display users ranked by their points (total number of correct answers). If multiple users have the same points, the ranking should be decided based on time taken per question (faster users rank higher).
    • The leaderboard should show the top 10 players and the user’s rank, even if they are not in the top 10.
  2. Quiz Management application:

    • Create a web-based CRUD application (Create, Read, Update, Delete) to manage quiz sets and individual questions.
    • Through this panel, authorized admins can create quiz sets (e.g., 10 questions per set), update quiz sets or individual questions, and delete existing sets or questions. Admins can also view all quiz sets and questions.
    • The CRUD application will be connected to the same database that the Discord quiz bot uses, ensuring real-time synchronization of changes made in the admin panel with the questions displayed to users during quizzes.

Bonus Features:

  1. Enhance the quiz management application by integrating Large Language Models (LLMs) through APIs like OpenAI (ChatGPT) or Gemini to generate quiz question sets. This feature allows admins or question setters to specify the number of questions needed (e.g., 10 questions per quiz), and the AI should generate that number of questions.The generated questions should be editable, allowing admins to review and modify any of the AI-generated questions before finalizing the quiz set.
  2. Deploy the Discord Quizbot on a cloud platform (e.g., Heroku, AWS, or Vercel) so it can run continuously and be accessible to users.

Useful resources:

Tips:

  1. Use any language, technology, or framework of your choice to build the bot and backend.
  2. Start with quiz selection, timing, and leaderboard display before adding extra features.
  3. Use Gemini API for integrating LLMs for making questions ,as its API is free to use.
  4. Ensure intuitive commands, similar to MEE6, and add slash commands for easy interaction.
  5. Any useful additional/interesting feature will have bonus points.

Task ID: Web-Based Diagram Generator

Full-Stack Development, Diagram Generation, Graphviz

Mentors: Udit Jain (+91 8708596606), Shubham Subodh Rasal (+91 7349784770)

Difficulty: Medium

Description

Develop a web application inspired by Mermaid.js that enables users to generate various types of diagrams based on user input. Users can enter data or upload relevant files, and the system will produce the desired diagram. Focus on letting users generate diagrams with minimal input. The application should also provide the option to export the generated diagram in popular formats like PNG and PDF.

Some Popular Diagram Types your application may support:

  • Flowcharts
  • ER Diagrams
  • Class Diagrams
  • Dependency Diagrams (for Node.js/React projects)

Note : The type and number of diagram(s) your application support is not fixed. You are free to implement support for any type and number of diagram(s). The diagrams given above are just some examples.

Steps:

  1. Input Mechanism: Design a simple input system that is intuitive and allows for diagram creation, whether through form-based inputs or file uploads.
  2. Diagram Generation:
    • Implement support for creating diagram using Graphviz or D3.js.
    • For Dependency Diagrams for Node.js/React projects, allow users to upload a zip file of the project. The tool should parse the project’s dependencies and visualize the relationship between files and external packages.
  3. Export Functionality: Provide an option for users to export their diagrams in popular formats like PNG or PDF.

Useful Resources:

Tips:

  1. Build support for different types of diagrams one by one.
  2. Use project analysis tools like npm, yarn, or Webpack to generate dependency graphs for Node.js and React projects. These tools can help map out the project structure automatically.
  3. Leverage libraries like Graphviz or D3.js for creating clean and user-friendly visualizations. These libraries are flexible and can handle a wide range of diagram types.
  4. Focus on the user experience by ensuring that users can generate diagrams with the least amount of manual effort. Implement features like pre-filled options where possible.

Task ID: Fast-Type

Web Development,Frontend,Backend,WebSockets

Mentors: Aahil Rafiq (+91 7975657621), Shree Harsha Bhat (+91 9739835034)

Difficulty: Medium

Description

Build a typing speed test app like Monkeytype. The app should let users take a typing test based on either time (e.g., 60 seconds) or a fixed number of words (e.g., 50 words).

Include the following features:

  1. Show the typing speed (words per minute) and accuracy after the test.
  2. Provide analytics on the user's typing:
    • Speed and accuracy stats
    • A graph showing how typing speed changes over time during the test
  3. Create a daily leaderboard and an all-time leaderboard to display the top typers.
  4. See that frontend provides a good user experience, including real-time updating of letters typed , correct marking of letters and good looking UI.
  5. Bonus: Show how a user's typing speed improves over time.
  6. Bonus: Add a multiplayer mode where users can race with 5 random people online.

Useful resources:

Tips:

  1. Start with a basic typing test that records speed and accuracy.
  2. For leaderboards, use a simple database to store results and calculate rankings.
  3. For the graph, use Chart.js to visualize typing speed over time.

Task ID: Competitive Programming Portal

Mobile Application, APIs

Mentors: Abhishek Satpathy (+91 7619503901), Aman Sheoran (+91 8930460660)

Difficulty: Medium

Description

Develop a mobile application that displays a unified dashboard for Competitive Programming Platforms, aggregating user information, ratings, questions solved, contest data etc from at least three platforms (e.g., Codeforces, LeetCode, AtCoder). The app should offer users a comprehensive overview of their competitive programming profile across these platforms.

Follow the steps below to complete this challenge:

  1. Integrate user information like username, rating and other relevant information from at least three platforms of your choice.
  2. If contests are available, show contest information for:
    • Past Contests: Show recently concluded contests with relevant details.
    • Ongoing Contests: Display currently active contests.
    • Upcoming Contests: List future scheduled contests with dates and times.
  3. User's can tap on contests to view more information if available.
  4. Design and implement a clean, intuitive user interface for easy navigation between different pages. Great UI/UX will add bonus points.
  5. Allow the user to filter contest information by platform.
  6. Use appropriate APIs to fetch up-to-date contest information.
  7. Implement error handling for API failures or data unavailability.
  8. You can choose to implement a backend service to handle API requests and data processing.
  9. Allow the user to add upcoming contests to his calendar.
  10. Feel free to add any extra information from these platforms (heatmap, recent problem submissions, number of solved questions, difficulty of questions solved etc). Adding extra information would add bonus points.

Useful resources:

Tips:

  1. Any Mobile App Developement Technology can be used, either Native or Cross-Platform.
  2. Start by exploring the different platform APIs and the information they deliver.
  3. Then look into ways you can process and surface available information throught clean UI/UX.
  4. In case you find platforms that don't provide API endpoints for contests, display other information available.
  5. You can also use Unofficial Platform APIs, if official alternatives don't exist.

Task ID: News Feed Generation

Full Stack, API,Cache

Mentors: G Vishwas (+91 9606278892), Anshuman Upadhyay (+91 9175954118)

Difficulty: Medium

Description

Your task is to build a news feed application that focuses on understanding users' reading preferences without relying on pre-built filters. The website should allow users to search for news using simple keywords and track which full articles they choose to read.

You will use the NewsAPI to fetch and display articles on your website. It’s recommended to design a single-page layout, showing news articles in a card format (with the title, description, image, author/source, etc.). When a user clicks on a card, it should take them to the full article via the URL provided by the API.

The NewsAPI includes an advanced search endpoint, allowing you to search for articles (in the title, content, or description fields) based on a keyword.

Task Requirements:

  1. Implement login and signup functionality.
  2. Maintain personalization details, such as a list of keywords associated with each user.
  3. Provide a search feature for articles. (Phrase search is not required; simple keyword search is sufficient, e.g., "science," "Elon Musk," "crypto," "technology," "business," etc.)
  4. Track when a user clicks to view the full news article, marking it as an indication of their interest.
  5. Use a python library keyBERT, to extract keywords from articles.
  6. Store the extracted keywords in a database or cache (e.g., Redis) and associate them with the user's profile.
  7. Continuously update the user's interest profile based on their article click history.
  8. Use the stored keywords to filter or rank future news articles based on the user's interests.

Useful resources:

Tips:

  1. Set up login/signup and implement simple article search using the NewsAPI first.
  2. Use Postman to test API responses before coding to understand how data is returned.
  3. Start off with a minimum viable solution. install keyBert library and create a Backend Service, ensuring it runs alongside the frontend. Think of how to utilize the keyBERT library to extract the most relevant words of the articles the user reads.
  4. Start off with using a database to store user interests ( use FIFO with max size of list of keywords) in the form of keywords and then navigate towards using a cache with the most suitable eviction policy for the keywords.

Task ID: Chessly

Web Application, PWA

Mentors: J Hariharan (+91 8050030224), Harshit Gupta (+91 8583905686)

Difficulty: Medium/Hard

Description

Develop a Chess PWA from scratch - allow two players to play on a single, offline, fully-featured chessboard! The game can be played on the same device, and should provide valid move indicators, winner detection, takebacks (undos), reset board, and saving the same on the local device. The user should be able to install the app as a Progressive Web App (for bonus feature only).

Follow the steps below to complete this challenge:

  1. Build a simple board, with 64 alternating black and white squares. Try to insert pieces into these squares.
  2. Use any of your favourite frontend framework to manage states and make a working board.
  3. Add the chess.js engine to manage board state, find valid moves, detect checks and checkmates, piece positions, etc.
  4. Add a column for users to see the moves they have made, and undo/takeback the last move.
  5. Satisfy the necessary conditions to make the app a PWA, so that the user can add it as an app on their phone or computer.

Bonus Feature ( Optional ):

Implementing both the bonus features will make the task count as Hard, otherwise it will be Medium

  1. Animate the pieces when they move from one square to another.
  2. Store the board state to local storage so that the user can continue the game later on.

Note:

  • No chess libraries other than chess.js should be used to create this platform.
  • You are free to use any generic frontend framework and libraries to achieve state management and animations.
  • There is no need to add online multiplayer capability to the platform. Both players will play from the same device turn-wise.

Useful resources:


Task ID: TravelTribe

Mobile/Desktop Application, Google Cloud Platform

Mentors: Shreesha M (+91 8310992995), Abhishek Satpathy (+91 7619503901)

Difficulty: Medium/Hard

Description

Develop a comprehensive mobile application that enables users to create travel groups with friends, where the group owner selects a destination city or country. The app will utilize Gen AI APIs (such as the Gemini free tier) to generate customized travel itineraries based on user inputs, including travel dates and preferences(assume necessary details). It will allow group members to collaboratively modify the generated itinerary, and once finalized, it will sync with all group members' Google Calendars.

Connect, Plan, and Go!

Follow the steps below to complete this challenge:

  1. Creation of an app with Authentication and Login of users.
  2. Allow users to form groups.
  3. Use any Gen AI API preferably Gemini to generate an itinerary based on the inputs like destination and dates of travel.
  4. Allow the group members to Edit the Itinerary.
  5. Update the Itinerary to the Google Calendars of the members.

Bonus Feature ( Optional ):

Implementing the bonus features will make the task count as Hard, otherwise it will be Medium

  1. Allow for editing itinerary in realtime.
  2. Expense management feature which tracks expenses during the travel and calculates the debt/credit of each group member.

Useful resources:

Tips:

  1. Feel free to use any mobile app development technology, either Native or Cross-Platform.
  2. You can implement a backend service using Flask or Node.js or use backend-as-a-service platforms like Firebase or Supabase.
  3. Build the basic app with the sign up/in functionality.
  4. Have a neat UI where the owner can input details like start location, destination, dates of travel, duration and any other relevant details.
  5. Integrate the Gemini API/any other Gen AI to create itinerary.
  6. Add feature that allows users to make groups and allow members to edit the itinerary.
  7. Explore about the realtime editing feature.
  8. Then after things are decided by the group members update the itinerary to the google calendars of all group members.
  9. Work on the expense management feature in case of the groups.

Task ID: Club Recruitment Portal

Full stack web development, Frontend, Backend, RBAC

Mentors: Sanjeev Holla S (+91 7676977619), Fahim Ahmed (+91 8861054452)

Difficulty: Hard

Description

Develop a web application that streamlines the entire NITK clubs recruitment process, from announcing recruitment schedules to revealing the final selected candidates, ensuring a hassle-free experience for both clubs and participating students.

Features to Implement:

  1. Club Registration: Club convenors should be able to register their clubs on the platform and add necessary details.

  2. Student Announcements: Students should be able to view a list of clubs along with announcements regarding recruitment schedules.

  3. Club/SIG Preference Form: NITK Admin can release a club preference form during exclusive club recruitment, allowing students to fill out their preferences. In other cases, Club Conveners can create a SIG preference form.

  4. Recruitment Details: Clubs should be able to input details about their recruitment process, including the schedule and test links (if applicable).

  5. Student Registration: Students should be able to register for the recruitment process of multiple clubs.

  6. Recruitment Rounds: Clubs should be able to manage and track students across multiple rounds in the recruitment process.

  7. Final Announcements: Clubs should be able to announce their final selected candidates at the end of the recruitment process and export as Excel/PDF.

Bonus Feature (Optional):

  1. Integrated Calendar: To manage the hectic nature of club recruitment, integrate a calendar feature where students can view the recruitment schedules of all clubs.
  2. Club Core Members: Give view access of your club details and registration list to other core members of the club, these members can only be added by Club Conveners.

Useful resources:

Tips:

  1. Start by deciding a subset of features: Begin by selecting a subset of the features mentioned above that you want to implement first. This will help you build an MVP (Minimum Viable Product) and then gradually add more features.

  2. Design an efficient database schema: Create a well-thought-out database schema that efficiently organizes data for clubs, students, recruitment rounds, announcements, and schedules.

  3. Choose suitable frameworks: You can choose to use a full-stack framework like Django or Ruby on Rails to simplify the development of both the backend and frontend. Alternatively, you can use React/Next.js for the frontend and create APIs to connect to the backend services.

  4. Implement proper role-based access control (RBAC): Ensure that the platform remains secure by implementing proper role-based access. Define roles like NITK Admin, Club Convenor, and Student, ensuring that each role has the necessary permissions to perform actions on the platform.


InterSIG Tasks

Task ID: AgriVerify

Web Application, Blockchain, Smart Contracts

Mentors: Shubham Rasal (+91 7349784770), Ayush Kumar Singh (+91 9334352548), Krishna Tulsyan (+91 9506221135), Apoorva Agrawal (+91 8197404580), Mardav Gandhi (+91 9033398366)

Difficulty: Medium/Hard

Description

AgriVerify, where you'll blend blockchain technology with organic farming to bring trust and transparency to every crop grown! In this task, you’ll be creating a decentralized platform that empowers farmers to easily certify their organic produce and generate QR codes that consumers can scan for instant verification.

Imagine walking through a market, scanning a QR code on an apple, and instantly seeing its certification, the farm it came from, and the people behind it—all with the power of blockchain!

Steps to Complete the Challenge:

  1. Farmer Onboarding:
    Build a welcoming system where farmers can easily sign up using wallet authentication and request certification for their crops. The process should be seamless, ensuring the user experience is as simple as organic farming itself.

  2. Certification Process:
    Dive into smart contracts! Implement a contract where farmers submit their crops for certification. For simplicity, assume the certifications are auto-approved. The goal is transparency and accessibility.

  3. QR Code Generation:
    Generate QR codes for certified crops. These codes should link to a beautifully simple page showing the certification details stored on the blockchain, enabling consumers to instantly trust their food.

Bonus Task:

Implementing the bonus features will make the task count as Hard, otherwise it will be Medium

Push Notifications:
Add an extra touch by integrating Push Protocol to notify farmers in real-time when their crops are certified. Keep them excited and informed with instant updates!

Useful Resources:

Tips:

  • Focus on creating an easy-to-use platform where farmers feel confident certifying their crops.
  • Use smart contract libraries like OpenZeppelin to ensure security and accelerate development.
  • Keep the frontend user-friendly, ensuring a fun and smooth experience for both farmers and consumers.

Task ID: Hogwarts Q&A

NLP, Generative AI, RAG, ChatBot

Mentors: Aryan Kashyap N (+91 8123279065), Fahim Ahmed (+91 8861054452)

Difficulty: Hard

Description

Create a RAG (Retrieval-Augmented Generation) system that answers questions using the book "Harry Potter and the Prisoner of Azkaban" as the primary knowledge base. This system should be able to handle queries related to characters, spells, locations, and magical events, retrieving contextually accurate information and generating lore-true responses.

Participants will leverage this text to build a structured index for retrieval, generate embeddings, and deploy a Harry Potter-themed Q&A system. For added fun, include context references and quotes in the generated answers.

You can access the full text of the book from the following link:
Harry Potter and the Prisoner of Azkaban PDF.

Steps to Complete the Challenge:

  1. Data Collection & Ingestion:
    Download the book from the provided link and parse it into a machine-readable format. Make sure to structure the data, preserving the chapters and significant sections. You may want to split the text based on chapters, events, or specific scenes.

  2. Data Chunking & Preprocessing:
    Break down large paragraphs into smaller chunks of 100-150 words. Ensure that each chunk contains coherent, self-contained information.

  3. Embedding Generation:

    • Use a pre-trained embedding model like all-MiniLM-L6-v2 from Sentence Transformers to convert each text chunk into dense vector representations.
    • The embeddings should capture semantic meaning, making it easy to retrieve the most contextually relevant text.
  4. Vector Database Integration:
    Store the embeddings in a vector database such as ChromaDB, FAISS, or Milvus for efficient similarity searches and quick lookups.

  5. Query Handling & Retrieval:

    • Implement a query pipeline using the embedding model to process user queries.
    • Convert the query into an embedding and use the vector database to find the top N most relevant text chunks.
  6. Contextual Response Generation:

    • Use the retrieved chunks with a generative language model (like Gemini or LLaMA) to create a coherent response that incorporates quotes and references to specific parts of the book.
    • Ensure that the generated output maintains the tone and style of the Harry Potter universe.
  7. Serve via FastAPI:

    • Expose your RAG system through FastAPI endpoints. The /query endpoint should accept user queries like “What is the significance of the Marauder’s Map?” or “How does Sirius Black escape from Hogwarts?” and return a contextually accurate and engaging answer. The endpoint should: Accept POST requests with a JSON body containing the user's question. Process the query through your RAG pipeline. Return a JSON response with the answer, relevant quotes, and metadata
  8. Develop an Interface:

    • Build a basic web application. It should have a chat-like interface for asking questions and receiving answers.

Bonus Feature ( Optional ):

  1. Time-Turner:
    • Create a "Time-Turner" feature that allows users to view the conversation history and jump back to previous points in the chat.
    • You can store the previous conversations in the local storage itself instead of a database.

Useful Resources:

Tips:

  1. When chunking the text, experiment with different chunk sizes and overlaps to find the optimal balance between context preservation and retrieval quality.
  2. Consider adding metadata tags (chapter names, etc.) to the chunks at the time of preprocessing, this can help with retrieval.

All the Best!