<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rajesh Adhikari</title>
    <description>The latest articles on DEV Community by Rajesh Adhikari (@rajesh-adk-137).</description>
    <link>https://dev.to/rajesh-adk-137</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1474620%2F15a73034-8c75-4d72-93a6-ba1f7cf56aa3.jpeg</url>
      <title>DEV Community: Rajesh Adhikari</title>
      <link>https://dev.to/rajesh-adk-137</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rajesh-adk-137"/>
    <language>en</language>
    <item>
      <title>Talk to Your Data Like a Human: How I Built an AI Airline Analyst</title>
      <dc:creator>Rajesh Adhikari</dc:creator>
      <pubDate>Thu, 30 Oct 2025 22:13:29 +0000</pubDate>
      <link>https://dev.to/rajesh-adk-137/talk-to-your-data-like-a-human-how-i-built-an-ai-airline-analyst-4pl9</link>
      <guid>https://dev.to/rajesh-adk-137/talk-to-your-data-like-a-human-how-i-built-an-ai-airline-analyst-4pl9</guid>
      <description>&lt;p&gt;In the world of air travel, every passenger has a story. Some rave about the legroom. Others complain about cold meals or slow Wi-Fi. But here's the thing, what if you could actually &lt;em&gt;talk&lt;/em&gt; to those 20,000 stories and get answers that help you run a better airline?&lt;/p&gt;

&lt;p&gt;That's exactly what &lt;strong&gt;&lt;a href="https://github.com/rajesh-adk-137/AIRLYTICS" rel="noopener noreferrer"&gt;AIRLYTICS&lt;/a&gt;&lt;/strong&gt; does.&lt;/p&gt;

&lt;p&gt;I'm thrilled to introduce AIRLYTICS, my project for &lt;strong&gt;MindsDB Hacktoberfest 2025&lt;/strong&gt;. It's not just another analytics dashboard. It's a conversational intelligence platform that transforms messy, unstructured passenger reviews into strategic business insights — the kind that actually tell you &lt;em&gt;what to fix&lt;/em&gt; and &lt;em&gt;why it matters&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Think of it as having a genius data analyst who speaks plain English, never sleeps, and always knows exactly which 100 reviews out of 20,000 matter most for your question.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp51emr4i3klmsu0tjlc7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp51emr4i3klmsu0tjlc7.png" alt="Landing Page" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔗 &lt;a href="https://github.com/rajesh-adk-137/AIRLYTICS" rel="noopener noreferrer"&gt;Explore the GitHub Repository&lt;/a&gt; | 🎥 &lt;a href="https://www.youtube.com/watch?v=KkKMPIlNErU" rel="noopener noreferrer"&gt;Watch the Demo Video&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem: Drowning in Feedback, Starving for Insight
&lt;/h2&gt;

&lt;p&gt;Airlines collect mountains of customer feedback. Reviews pile up across booking sites, social media, and post-flight surveys. But here's where it gets messy.&lt;/p&gt;

&lt;p&gt;Traditional analytics tools are great at counting things. They'll tell you the average Wi-Fi rating is 2.8 out of 5. Cool. But they won't tell you that &lt;strong&gt;Wi-Fi below 3 stars drops overall satisfaction by 68%&lt;/strong&gt;, or that upgrading routers matters more than upgrading the catering menu.&lt;/p&gt;

&lt;p&gt;They can't understand questions like &lt;em&gt;"Show me Business Class travelers who loved the crew but hated baggage handling."&lt;/em&gt; They definitely can't explain why high ratings don't always mean high loyalty, or what that disconnect means for your bottom line.&lt;/p&gt;

&lt;p&gt;Most BI tools require you to speak &lt;em&gt;their&lt;/em&gt; language — SQL queries, pre-defined metrics, rigid schemas. AIRLYTICS flips that around. You speak English. It handles the rest.&lt;/p&gt;




&lt;h2&gt;
  
  
  Meet AIRLYTICS: Your AI Airline Analyst
&lt;/h2&gt;

&lt;p&gt;AIRLYTICS is what happens when you combine MindsDB's Knowledge Bases with a dual-agent architecture and sprinkle in some serious semantic search magic.&lt;/p&gt;

&lt;p&gt;Here's what makes it different.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa53wqnw7cq0q9y86ssbs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa53wqnw7cq0q9y86ssbs.png" alt="Home Dashboard" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 Two Modes, One Seamless Experience
&lt;/h3&gt;

&lt;p&gt;Most analytics platforms force you to choose between simplicity and power. AIRLYTICS gives you both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Semantic Search Mode&lt;/strong&gt; is perfect when you're exploring. Type something like &lt;em&gt;"excellent legroom and comfortable seats"&lt;/em&gt; or &lt;em&gt;"lost baggage and delayed luggage"&lt;/em&gt; and boom — the system surfaces the most relevant reviews using vector embeddings. Not just keyword matching. Real semantic understanding. The kind that knows "mishandled bag" and "lost luggage" mean the same thing.&lt;/p&gt;

&lt;p&gt;You get the top 50 matched reviews, plus comprehensive statistics: average ratings across every dimension, seat type distributions, traveler demographics, correlation matrices showing which metrics actually drive satisfaction. It's like having a full statistical report generated in seconds, tailored exactly to your query.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advanced Analytics Mode&lt;/strong&gt; is where things get interesting. This is for questions like &lt;em&gt;"Among users complaining about check-in delays, show me seat type distribution for those who still rated ground service above 3."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's not a simple search. That's a multi-layered analytical question. The AI agent interprets your intent, figures out you're asking for a conditional distribution analysis, rewrites your query for optimal semantic matching, executes the right statistical function, and returns targeted visualizations with contextual explanations.&lt;/p&gt;

&lt;p&gt;All from one sentence. No SQL. No setup. Just ask.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fll2phogsfohsptsbjnwc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fll2phogsfohsptsbjnwc.png" alt="Advanced Analytics Example" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Secret Sauce: Five Intelligent Functions
&lt;/h2&gt;

&lt;p&gt;Behind the scenes, AIRLYTICS uses five specialized analytical engines. When you ask a complex question, the agent automatically routes it to the right one:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;General Percentage Distribution&lt;/strong&gt; handles questions like &lt;em&gt;"What percentage of passengers rated value for money above 4?"&lt;/em&gt; — fast, simple threshold checks across any numeric field.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conditional Distribution Analysis&lt;/strong&gt; shows you breakdowns like &lt;em&gt;"For delayed passengers, what's the seat type distribution?"&lt;/em&gt; — perfect for understanding how issues vary across categories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category-to-Category Analysis&lt;/strong&gt; compares two categorical fields, like &lt;em&gt;"How many Economy passengers were Solo Leisure versus Business travelers?"&lt;/em&gt; — great for demographic pivots.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rating-to-Rating Analysis&lt;/strong&gt; finds overlaps between numeric conditions, like &lt;em&gt;"Of passengers with low Wi-Fi scores, how many also rated overall experience poorly?"&lt;/em&gt; — the correlation detective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conditional Rating Analysis&lt;/strong&gt; connects ratings to outcomes, like &lt;em&gt;"Among high food raters, what percent still recommended the airline?"&lt;/em&gt; — revealing those crucial loyalty disconnects.&lt;/p&gt;

&lt;p&gt;The beautiful part? You never have to know which function does what. Just ask your question naturally. The agent figures it out.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yggbuzd832b06bm48ju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yggbuzd832b06bm48ju.png" alt="Multi-Value Analytics Functions" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Smart Sampling: Why Less is More
&lt;/h2&gt;

&lt;p&gt;Here's something cool about AIRLYTICS that most analytics platforms get wrong.&lt;/p&gt;

&lt;p&gt;It doesn't analyze all 20,000 reviews for every query. That would be slow, expensive, and frankly, unnecessary. Instead, it uses &lt;strong&gt;smart sampling&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every query retrieves the top N semantically matched reviews — you can choose 10, 20, 50, 75, or 100 (MindsDB's current limit). All statistics, distributions, and correlations are computed from this focused subset.&lt;/p&gt;

&lt;p&gt;Why does this matter? Because when you ask about Wi-Fi complaints, you don't need reviews about excellent meals. You need the 100 most relevant Wi-Fi-related reviews. That's your representative sample. That's where your signal lives.&lt;/p&gt;

&lt;p&gt;It's faster, more focused, and statistically just as valid. Plus, it means every metric you see is actually &lt;em&gt;about&lt;/em&gt; what you asked for, not diluted by thousands of unrelated reviews.&lt;/p&gt;




&lt;h2&gt;
  
  
  InsightInterpreter: Your AI Strategist
&lt;/h2&gt;

&lt;p&gt;Raw numbers are useful. Strategic recommendations are invaluable.&lt;/p&gt;

&lt;p&gt;That's why AIRLYTICS includes &lt;strong&gt;InsightInterpreter&lt;/strong&gt; — think of it as your in-house AI consultant who's allergic to corporate buzzwords and loves cutting through noise.&lt;/p&gt;

&lt;p&gt;After any query, hit the "Get AI Insights" button. InsightInterpreter looks at your results — the distributions, correlations, top reviews, all of it — and tells you what actually matters.&lt;/p&gt;

&lt;p&gt;Not &lt;em&gt;"Wi-Fi ratings are low."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But &lt;em&gt;"Wi-Fi below 3 stars drops overall satisfaction by 68%. Upgrade routers on long-haul routes — it impacts loyalty more than catering."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Not &lt;em&gt;"Business travelers rate cleanliness at 6.2."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But &lt;em&gt;"Business travelers forgive delays but hate dirty cabins. Prioritize cleaning staff over gate efficiency."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It spots contradictions (high ratings, low loyalty — what gives?), identifies root causes (it's not the food, it's the pricing), and suggests concrete next steps. All written in the voice of a seasoned analyst who knows that real insight is the difference between a refund and a repeat customer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yzctjrwmkxq2iryfqq1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yzctjrwmkxq2iryfqq1.png" alt="InsightInterpreter Example" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Rich Metadata Filtering: Slice and Dice Your Way
&lt;/h2&gt;

&lt;p&gt;AIRLYTICS supports filtering across every structured dimension in your data.&lt;/p&gt;

&lt;p&gt;Want to see only Emirates Business Class reviews? Done. Need verified Solo Leisure travelers on long-haul flights? Easy. Looking for passengers who rated Wi-Fi below 3 but overall experience above 7? No problem.&lt;/p&gt;

&lt;p&gt;You've got 50+ airlines, multiple aircraft types, four seat classes, different traveler types, verification flags, recommendation status, and eight numeric rating fields to work with. Mix and match however you want.&lt;/p&gt;

&lt;p&gt;Every filter applies to both semantic searches and analytical queries. The system handles it seamlessly in the background.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building AIRLYTICS: The MindsDB Magic
&lt;/h2&gt;

&lt;p&gt;So how does all this actually work?&lt;/p&gt;

&lt;p&gt;At its core, AIRLYTICS is powered by three MindsDB components working in perfect harmony.&lt;/p&gt;

&lt;h3&gt;
  
  
  Knowledge Bases: The Foundation
&lt;/h3&gt;

&lt;p&gt;MindsDB Knowledge Bases are what make semantic search possible. Instead of storing just text, they store &lt;em&gt;meaning&lt;/em&gt; — vector embeddings that capture the semantic essence of each review.&lt;/p&gt;

&lt;p&gt;When you search for "bad food and poor service," the Knowledge Base doesn't just match those exact words. It finds reviews about "terrible meals and rude staff," "cold food and unhelpful crew," or "worst dining experience and slow service." It understands synonyms, context, and intent.&lt;/p&gt;

&lt;p&gt;Plus, it respects structured metadata. You can search semantically &lt;em&gt;and&lt;/em&gt; filter by airline, seat type, ratings — all in one query. That's the hybrid power MindsDB brings to the table.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Analytics Agent: The Interpreter
&lt;/h3&gt;

&lt;p&gt;This is where things get really clever.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;analytics_query_agent&lt;/strong&gt; is trained to understand natural language questions and break them down into two parts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 1:&lt;/strong&gt; The semantic filter — &lt;em&gt;what kind of reviews should we look at?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Part 2:&lt;/strong&gt; The analytical question — &lt;em&gt;what measurement or comparison do we want?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If only Part 1 exists, it's a straightforward semantic search. If both parts exist, the agent maps Part 2 to one of the five analytical functions, extracts the right parameters (which fields, what thresholds, which operators), and returns everything as structured JSON.&lt;/p&gt;

&lt;p&gt;All you had to do was ask a question in plain English.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Insight Agent: The Strategist
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;insight_interpreter_agent&lt;/strong&gt; is your executive translator.&lt;/p&gt;

&lt;p&gt;It takes the raw analytics output — the numbers, distributions, top reviews — and interprets them through the lens of airline operations strategy. It's trained to spot patterns, identify contradictions, connect dots between seemingly unrelated metrics, and recommend concrete actions.&lt;/p&gt;

&lt;p&gt;It doesn't just describe what it sees. It explains what it &lt;em&gt;means&lt;/em&gt; and what you should &lt;em&gt;do&lt;/em&gt; about it.&lt;/p&gt;

&lt;p&gt;Here's a tiny peek at its prompt philosophy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are InsightInterpreter — the sharp data analyst inside an airline's analytics division.
Your job: Cut through the noise and tell the manager something they didn't already know.
Focus on contradictions, unexpected drivers, and actionable next steps.

Rules:
1. No recaps. Don't restate the query.
2. No fluff. Skip "The data shows..."
3. Be concrete. Use actual numbers when they matter.
4. Stay tight. 2-3 paragraphs, max.
5. End with action. Always tell what should be done differently.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Sharp, focused, actionable. Every time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Beyond Airlines: A Blueprint for Any Feedback Domain
&lt;/h2&gt;

&lt;p&gt;Here's the thing — while AIRLYTICS is built for airline reviews, the architecture is a &lt;strong&gt;template&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The same approach works for:&lt;/p&gt;

&lt;p&gt;🏨 &lt;strong&gt;Hotels&lt;/strong&gt; — guest reviews, amenity feedback, service ratings&lt;br&gt;&lt;br&gt;
🍽️ &lt;strong&gt;Restaurants&lt;/strong&gt; — delivery experiences, menu feedback, ambiance comments&lt;br&gt;&lt;br&gt;
🛒 &lt;strong&gt;E-commerce&lt;/strong&gt; — product reviews, shopping experiences, return issues&lt;br&gt;&lt;br&gt;
🏥 &lt;strong&gt;Healthcare&lt;/strong&gt; — patient satisfaction, appointment experiences, facility feedback&lt;br&gt;&lt;br&gt;
📞 &lt;strong&gt;Support&lt;/strong&gt; — ticket descriptions, call transcripts, chat logs&lt;/p&gt;

&lt;p&gt;Anywhere you have unstructured feedback with structured metadata, this pattern applies. Swap the schema, prepare the agents on domain-specific language, and you're off to the races.&lt;/p&gt;

&lt;p&gt;That's the power of MindsDB's Knowledge Bases. They're not industry-specific. They're &lt;em&gt;insight-specific&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real-World Impact: What This Means for Airlines
&lt;/h2&gt;

&lt;p&gt;Let's get practical for a second.&lt;/p&gt;

&lt;p&gt;Imagine you're an airline ops manager. You know Wi-Fi complaints are up, but you don't know if it's a dealbreaker or just noise. You type:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Users who complained about baggage claim delays — what percentage of those who rated ground service above 4 rated overall experience below 5?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In 3 seconds, you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;42% of users with good ground service ratings still had poor overall experiences&lt;/li&gt;
&lt;li&gt;A breakdown by seat type showing Business Class is disproportionately affected&lt;/li&gt;
&lt;li&gt;A correlation heatmap revealing that baggage issues matter 3× more than food quality for Business travelers&lt;/li&gt;
&lt;li&gt;An InsightInterpreter note: &lt;em&gt;"Baggage delays hit Business travelers hardest. They pay premium prices for time — not food. Fast-track baggage handling for premium cabins immediately."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You just went from a hunch to a prioritized action plan in seconds.&lt;/p&gt;

&lt;p&gt;That's what conversational analytics looks like. And that's what AIRLYTICS delivers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffduw5z2yefl5i5asyosz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffduw5z2yefl5i5asyosz.png" alt="Use Case Visualization" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Tech Behind the Magic
&lt;/h2&gt;

&lt;p&gt;For the curious: AIRLYTICS is built with React and TailwindCSS on the frontend, FastAPI on the backend, and MindsDB handling all the AI heavy lifting. Data flows from Google Sheets straight into MindsDB's Knowledge Base — zero ETL pipelines, zero data warehouses.&lt;/p&gt;

&lt;p&gt;Docker Compose keeps MindsDB containerized for local development. OpenAI's embeddings power the semantic search. Recharts and Plotly handle visualizations. The whole stack is designed to be clean, modular, and production-ready.&lt;/p&gt;

&lt;p&gt;Want to set it up yourself? The full installation guide, architecture diagrams, and SQL examples are all in the &lt;strong&gt;&lt;a href="https://github.com/rajesh-adk-137/AIRLYTICS" rel="noopener noreferrer"&gt;GitHub README&lt;/a&gt;&lt;/strong&gt;. Everything you need to get it running locally or extend it to your own domain.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hacktoberfest 2025: Built for Advanced Capabilities
&lt;/h2&gt;

&lt;p&gt;AIRLYTICS was designed for &lt;strong&gt;MindsDB Hacktoberfest Track 2: Advanced Capabilities&lt;/strong&gt;. That means it checks all the boxes:&lt;/p&gt;

&lt;p&gt;✅ Knowledge Base integration with 20,000+ reviews&lt;br&gt;&lt;br&gt;
✅ Dual-agent architecture (analytics + insights)&lt;br&gt;&lt;br&gt;
✅ Metadata filtering across multiple dimensions&lt;br&gt;&lt;br&gt;
✅ Hybrid search capabilities (semantic + structured)&lt;br&gt;&lt;br&gt;
✅ Automated data freshness with MindsDB Jobs&lt;br&gt;&lt;br&gt;
✅ Zero-ETL architecture (Google Sheets → MindsDB direct)&lt;/p&gt;

&lt;p&gt;But beyond the checklist, it's a &lt;strong&gt;complete RAG-to-BI pipeline&lt;/strong&gt;. Not a toy demo. Not a proof of concept. A production-grade analytics engine that shows what's possible when you combine semantic understanding, statistical rigor, and AI interpretation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8xwxn5qjecn2o3tfauu1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8xwxn5qjecn2o3tfauu1.png" alt="General Statistics " width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;p&gt;Curious to see AIRLYTICS in action?&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/rajesh-adk-137/AIRLYTICS" rel="noopener noreferrer"&gt;rajesh-adk-137/AIRLYTICS&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🎥 &lt;strong&gt;Demo Video:&lt;/strong&gt; &lt;a href="https://www.youtube.com/watch?v=KkKMPIlNErU" rel="noopener noreferrer"&gt;Watch on YouTube&lt;/a&gt;&lt;br&gt;&lt;br&gt;
📖 &lt;strong&gt;Full Documentation:&lt;/strong&gt; Available in the repo README&lt;/p&gt;

&lt;p&gt;Clone it. Run it. Break it. Extend it to your own domain. The entire codebase is open source and ready to go.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Future of Analytics is Conversational
&lt;/h2&gt;

&lt;p&gt;Here's what I learned building AIRLYTICS:&lt;/p&gt;

&lt;p&gt;The future of business intelligence isn't about building more dashboards. It's about building systems that &lt;em&gt;understand questions&lt;/em&gt;, &lt;em&gt;find answers&lt;/em&gt;, and &lt;em&gt;explain what to do next&lt;/em&gt;. All in natural language. All in real-time.&lt;/p&gt;

&lt;p&gt;MindsDB's Knowledge Bases make that possible. Their agent architecture makes it scalable. And the zero-ETL approach makes it practical.&lt;/p&gt;

&lt;p&gt;Whether you're analyzing airline reviews, hotel feedback, or customer support tickets, the pattern is the same: semantic understanding + statistical rigor + AI interpretation = actionable intelligence.&lt;/p&gt;

&lt;p&gt;The age of asking your data questions and getting strategic answers has arrived.&lt;/p&gt;

&lt;p&gt;And it's powered by MindsDB.&lt;/p&gt;




&lt;h2&gt;
  
  
  Acknowledgments
&lt;/h2&gt;

&lt;p&gt;Huge thanks to the MindsDB team for creating such a powerful platform, OpenAI for the embedding models, and the entire open-source community for the tools that made this possible.&lt;/p&gt;

&lt;p&gt;Built with ❤️ for MindsDB Hacktoberfest 2025.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AIRLYTICS: Transforming unstructured feedback into strategic intelligence, one query at a time.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Ready to unlock intelligence from your own feedback data? Check out the *&lt;/em&gt;&lt;a href="https://github.com/rajesh-adk-137/AIRLYTICS" rel="noopener noreferrer"&gt;AIRLYTICS GitHub repo&lt;/a&gt;** and start exploring what's possible with MindsDB Knowledge Bases.*&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mindsdb</category>
      <category>python</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>CharacterKB: Your AI-Powered Companion for Fictional Characters</title>
      <dc:creator>Rajesh Adhikari</dc:creator>
      <pubDate>Sun, 29 Jun 2025 14:41:48 +0000</pubDate>
      <link>https://dev.to/rajesh-adk-137/characterkb-your-ai-powered-companion-for-fictional-characters-40i</link>
      <guid>https://dev.to/rajesh-adk-137/characterkb-your-ai-powered-companion-for-fictional-characters-40i</guid>
      <description>&lt;h2&gt;
  
  
  Discover, Analyze, and Chat: Unleash the Power of Fictional Characters with CharacterKB
&lt;/h2&gt;




&lt;p&gt;In the vast genre of storytelling, fictional characters often become as real to us as the people we know. But what if you could not only discover them based on nuanced descriptions but also delve into their psyches and even converse with them? This is where &lt;strong&gt;CharacterKB&lt;/strong&gt; steps in – an innovative AI-powered platform designed to revolutionize how you interact with fictional characters.&lt;/p&gt;

&lt;p&gt;I'm thrilled to introduce CharacterKB, a project developed for the MindsDB Quest 019, showcasing the robust capabilities of MindsDB's &lt;strong&gt;Knowledge Bases&lt;/strong&gt;. CharacterKB leverages MindsDB's cutting-edge semantic search, AI Tables, and Agents to transform your character ideas into precise discoveries, deep psychological insights, and engaging conversations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why MindsDB Knowledge Bases?
&lt;/h3&gt;

&lt;p&gt;MindsDB is an AI data solution that empowers users to query data using natural language and SQL across diverse data sources. Their &lt;strong&gt;Knowledge Bases&lt;/strong&gt; are a game-changer, offering semantic search capabilities that allow you to store and retrieve information based on its meaning, rather than just keywords. This semantic understanding is crucial for CharacterKB, enabling it to go beyond simple keyword matching and truly understand your character descriptions.&lt;/p&gt;




&lt;h3&gt;
  
  
  Introducing CharacterKB: Your Intelligent Character Companion
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flopdhja667ga72ddbakw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flopdhja667ga72ddbakw.png" alt="Landing Page" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CharacterKB is more than just a search engine; it's a comprehensive character experience crafted for writers, fans, and anyone curious about the depths of fictional personalities. Here's what makes it unique:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI-Powered Character Discovery:&lt;/strong&gt; Describe any character idea in natural language (e.g., "Billionaire who becomes a symbol of fear for criminals") and instantly get the best match along with the top 5 closest results using MindsDB's semantic search.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;A natural language query in action, demonstrating CharacterKB's intuitive search and personalized character suggestions.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr7zt9f9nr4ttktdryn14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr7zt9f9nr4ttktdryn14.png" alt="Suggested Characters" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Character Insights &amp;amp; Analysis:&lt;/strong&gt; Dive deeper with AI-powered psychological profiling that analyzes personality traits, emotional patterns, and core characteristics. Get concise personality tags and structured emotional profiles highlighting confidence, optimism, wit, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Detailed character insights, including personality tags and emotional profiles, all generated by MindsDB AI Tables.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4tfvtkoaa5tsqgb8o4i7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4tfvtkoaa5tsqgb8o4i7.png" alt="Character Insights" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Character Chat:&lt;/strong&gt; Engage in authentic conversations with discovered characters in their unique voices and mannerisms. Just click 'Chat' to get personalized advice, creative insights, or fun interactions—no setup needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Interact with the AI literary expert for in-depth conversations about characters.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ljcknssaesdibyq46m9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ljcknssaesdibyq46m9.png" alt="Chatbot" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Smart Image Suggestions:&lt;/strong&gt; See visual representations of your matched character with curated image results pulled from the web using intelligent search, automatically and seamlessly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filter by Media Type:&lt;/strong&gt; Refine your character searches by over 20 different media types, including Movies, TV Shows, Novels, Games, Anime, and Mythology.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentic Conversations:&lt;/strong&gt; Characters respond with their unique voice, mannerisms, and wisdom, offering life advice, creative insights, and new perspectives.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Tech Stack: MindsDB at the Core
&lt;/h3&gt;

&lt;p&gt;CharacterKB is built with a robust and modern tech stack designed for scalability, performance, and reliability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MindsDB:&lt;/strong&gt; The central AI layer, handling Knowledge Bases for semantic search, AI Tables for data enrichment, and Agents for the conversational bot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI (Python):&lt;/strong&gt; The high-performance backend API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React + Tailwind CSS:&lt;/strong&gt; For a sleek, responsive, and interactive user interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI:&lt;/strong&gt; Powering the large language models used by MindsDB for embeddings, AI Tables, and Agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Custom Search API:&lt;/strong&gt; For smart image suggestions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker Desktop:&lt;/strong&gt; For consistent development and deployment environments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  System Architecture
&lt;/h3&gt;

&lt;p&gt;CharacterKB's multi-layered architecture ensures a seamless and powerful user experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Layer:&lt;/strong&gt; Built with React and Tailwind CSS, focusing on responsive design and intuitive user interaction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Layer:&lt;/strong&gt; Powered by FastAPI, handling requests for character search, interactive character chat, and enriched character information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Layer:&lt;/strong&gt; MindsDB orchestrates the core AI functionalities, including Knowledge Base queries, Agent interactions, and semantic search.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Layer:&lt;/strong&gt; Manages character metadata, media type classification, and relevance scoring, leveraging a dataset of over 10,000 characters.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Building CharacterKB: A Deep Dive into MindsDB Integration
&lt;/h3&gt;

&lt;p&gt;The integration of MindsDB is fundamental to every intelligent feature within CharacterKB. Here’s a glimpse into how different MindsDB capabilities are utilized, directly with SQL queries executed within MindsDB Studio:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Intelligent Character Discovery with Knowledge Bases
&lt;/h4&gt;

&lt;p&gt;At the heart of CharacterKB's search is a MindsDB Knowledge Base, which stores over 10,000 character descriptions. This allows the application to understand the context, personality, and media type preferences of your query, going beyond simple keyword matching.&lt;/p&gt;

&lt;p&gt;Here's an example of a semantic search query within MindsDB:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;character_kb_10000&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'a genius scientist who loves trains sheldon'&lt;/span&gt;
&lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This SQL query to the &lt;code&gt;character_kb_10000&lt;/code&gt; Knowledge Base allows for semantic search, finding characters based on their description, and retrieving the top results.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. AI-Powered Interactive Character Chat with MindsDB Agents
&lt;/h4&gt;

&lt;p&gt;The interactive "Character Chat" is powered by a custom conversational agent created within MindsDB. This agent is designed to provide thoughtful analysis, interpretations, and discussions about characters, drawing from its deep literary knowledge and role-playing as the character.&lt;/p&gt;

&lt;p&gt;Here’s how you can query the Character Agent in MindsDB:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;answer&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;character_agent&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
  &lt;span class="n"&gt;character_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Tony Stark'&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;character_description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Tony Stark is a genius billionaire inventor who masks his insecurities with sarcasm and bold charisma. As Iron Man, he faces threats with a mix of wit, technology, and restless optimism about humankind’s potential.'&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;question&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'I’m nervous before my first job interview. Any advice?'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This SQL query to the &lt;code&gt;character_agent&lt;/code&gt; MindsDB Agent passes the character's name, description, and the user's question to get a contextual, in-character answer.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Enriched Character Information with MindsDB AI Tables
&lt;/h4&gt;

&lt;p&gt;To provide comprehensive character details, CharacterKB utilizes MindsDB AI Tables. These tables dynamically generate enriched metadata such as personality traits, emotional profiles, and smart tags.&lt;/p&gt;

&lt;p&gt;Here’s how you query the Character Insights model in MindsDB:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;character_insights&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
  &lt;span class="n"&gt;character_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Tony Stark'&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;character_description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Tony Stark is a genius billionaire inventor who masks his insecurities with sarcasm and bold charisma. As Iron Man, he faces threats with a mix of wit, technology, and restless optimism about humankind’s potential.'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This query to the &lt;code&gt;character_insights&lt;/code&gt; MindsDB Model (an AI Table) takes the character's name and description to generate a rich set of personality details.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Data Freshness with MindsDB Jobs
&lt;/h4&gt;

&lt;p&gt;To ensure the Knowledge Base remains up-to-date with new characters, a MindsDB JOB is scheduled to periodically check for and ingest new data from the source Google Sheet.&lt;/p&gt;

&lt;p&gt;An example of the MindsDB JOB creation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;JOB&lt;/span&gt; &lt;span class="n"&gt;character_kb_job&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;character_kb_10000&lt;/span&gt;
  &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;unique_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;media_type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;genre&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;character_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;
  &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;character_sheet_10000&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;character_data_10000&lt;/span&gt;
  &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;unique_id&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;-- Adjust this condition if your initial dataset has a different max ID&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;EVERY&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;minute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This job is configured to run every minute, checking for and inserting new character data into the &lt;code&gt;character_kb_10000&lt;/code&gt; Knowledge Base.&lt;/p&gt;




&lt;h3&gt;
  
  
  Live Demo &amp;amp; GitHub Repository
&lt;/h3&gt;

&lt;p&gt;Curious to see CharacterKB in action?&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/rajesh-adk-137/character_kb.git" rel="noopener noreferrer"&gt;&lt;strong&gt;CharacterKB GitHub Repository&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Building CharacterKB for the MindsDB Quest 019 has been an incredibly insightful journey. MindsDB's Knowledge Bases, AI Tables, and Agents provide a robust and intuitive framework for creating intelligent, data-driven applications. CharacterKB stands as a testament to the power of AI in transforming how we discover, analyze, and interact with the vast world of fictional characters, making the exploration of their personalities an engaging and intelligent experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Acknowledgments
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI &amp;amp; Vector Search&lt;/strong&gt;: &lt;a href="https://mindsdb.com" rel="noopener noreferrer"&gt;MindsDB&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLMs&lt;/strong&gt;: &lt;a href="https://openai.com" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image Search&lt;/strong&gt;: &lt;a href="https://developers.google.com/custom-search/v1/overview" rel="noopener noreferrer"&gt;Google Custom Search API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dataset&lt;/strong&gt;: &lt;a href="https://huggingface.co/datasets/NousResearch/CharacterCodex" rel="noopener noreferrer"&gt;CharacterCodex Dataset by NousResearch&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI Framework&lt;/strong&gt;: &lt;a href="https://react.dev/" rel="noopener noreferrer"&gt;React&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling&lt;/strong&gt;: &lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>webdev</category>
      <category>llm</category>
    </item>
    <item>
      <title>AutoGenius: AI-Powered Car Valuation and Trading Assistant</title>
      <dc:creator>Rajesh Adhikari</dc:creator>
      <pubDate>Tue, 16 Jul 2024 05:05:34 +0000</pubDate>
      <link>https://dev.to/rajesh-adk-137/autogenius-ai-powered-car-valuation-and-trading-assistant-4299</link>
      <guid>https://dev.to/rajesh-adk-137/autogenius-ai-powered-car-valuation-and-trading-assistant-4299</guid>
      <description>&lt;h2&gt;
  
  
  Introducing AutoGenius: Your AI-Powered Car Valuation and Trading Assistant
&lt;/h2&gt;

&lt;p&gt;Hey there, dev community! 👋 I'm excited to share a project I've been working on that combines the power of predictive models and LLMs with the world of automotive trading. Say hello to &lt;strong&gt;AutoGenius&lt;/strong&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  What is AutoGenius?
&lt;/h2&gt;

&lt;p&gt;AutoGenius is a smart platform that leverages intelligent models build using mindsdb to predict pre-owned car prices and provide personalized trading tips. It's designed to make the process of buying or selling a used car smarter and more informed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbjiq2hpef03ubqtxumi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbjiq2hpef03ubqtxumi.png" alt="car details form" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;AI-Powered Price Prediction&lt;/strong&gt;: Using MindsDB's Lightwood engine, AutoGenius predicts car prices based on various factors like fuel type, transmission, mileage, and more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personalized Trading Tips&lt;/strong&gt;: With a chatbot powered by Google's Gemini engine, users get tailored advice for buying or selling cars.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User-Friendly Interface&lt;/strong&gt;: A sleek React frontend makes inputting car details and getting predictions a breeze.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time AI Integration&lt;/strong&gt;: FastAPI backend ensures quick and up-to-date predictions and advice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker Integration&lt;/strong&gt;: Easy setup and management of the MindsDB environment.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Frontend: React&lt;/li&gt;
&lt;li&gt;Backend: FastAPI&lt;/li&gt;
&lt;li&gt;Database: MySQL&lt;/li&gt;
&lt;li&gt;Machine Learning: MindsDB (Lightwood engine for prediction, Google Gemini engine for chatbot)&lt;/li&gt;
&lt;li&gt;Containerization: Docker&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;As a developer passionate about AI and its practical applications, I wanted to create a tool that brings the power of machine learning to everyday car traders. Whether you're a dealership looking to price your inventory accurately or an individual trying to get the best deal on your next car, AutoGenius is here to help!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs8ys4pn4hhcvduafjkkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs8ys4pn4hhcvduafjkkl.png" alt="Image showing prediction and ai response" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Development Journey
&lt;/h2&gt;

&lt;p&gt;Building AutoGenius was an exciting challenge. Some key aspects of the development process included:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Data Preprocessing&lt;/strong&gt;: Cleaning and preparing a Kaggle dataset for training our prediction model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MindsDB Integration&lt;/strong&gt;: Setting up and training models using MindsDB's powerful AI capabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Design&lt;/strong&gt;: Creating an intuitive and responsive UI with React.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend Architecture&lt;/strong&gt;: Developing a robust FastAPI backend to handle requests and interact with MindsDB.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker Implementation&lt;/strong&gt;: Containerizing the MindsDB environment for easy deployment and scaling.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  See It in Action
&lt;/h2&gt;

&lt;p&gt;Want to see AutoGenius at work? Check out our &lt;a href="https://github.com/user-attachments/assets/f7c97892-3716-4d7c-a327-151c3a3d26cf" rel="noopener noreferrer"&gt;demo video&lt;/a&gt; to get a feel for how it works!&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Involved!
&lt;/h2&gt;

&lt;p&gt;I'm thrilled to share this project with the community, and I'd love your support and feedback:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check out the repo&lt;/strong&gt;: Visit our &lt;a href="https://github.com/rajesh-adk-137/autogenius" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt; and star it if you like what you see!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vote for AutoGenius&lt;/strong&gt;: We're participating in a project showcase! If you think AutoGenius is cool, please vote for us &lt;a href="https://quira.sh/repo/rajesh-adk-137-autogenius-828959591?utm_source=copy&amp;amp;utm_share_context=quests_creators" rel="noopener noreferrer"&gt;here&lt;/a&gt;. Voting deadline is July 16, 2024!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contribute&lt;/strong&gt;: Feel free to fork the repo, open issues, or submit pull requests. Your contributions are always welcome!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's Next for AutoGenius?
&lt;/h2&gt;

&lt;p&gt;I'm constantly looking to improve and expand AutoGenius. Some ideas for future development include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrating more data sources for even more accurate predictions&lt;/li&gt;
&lt;li&gt;Adding features like image recognition for car valuation&lt;/li&gt;
&lt;li&gt;Developing a mobile app version&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftz1kbwj1bj06pjoq84bj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftz1kbwj1bj06pjoq84bj.png" alt="About section" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap Up
&lt;/h2&gt;

&lt;p&gt;AutoGenius is more than just a project—it's a step towards making AI accessible and useful in the automotive world. Whether you're a car enthusiast, a developer interested in AI, or just curious about the intersection of technology and everyday life, I hope you find AutoGenius interesting!&lt;/p&gt;

&lt;p&gt;Remember to check out the &lt;a href="https://github.com/rajesh-adk-137/autogenius" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;, give it a star if you like it, and don't forget to &lt;a href="https://quira.sh/repo/rajesh-adk-137-autogenius-828959591?utm_source=copy&amp;amp;utm_share_context=quests_creators" rel="noopener noreferrer"&gt;vote&lt;/a&gt; !&lt;/p&gt;

&lt;p&gt;Thanks for reading, and happy coding! 🚗💻🔧&lt;/p&gt;




&lt;p&gt;Feel free to ask any questions or share your thoughts in the comments. I'm always excited to discuss tech and AI!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>mindsdb</category>
      <category>gemini</category>
      <category>programming</category>
    </item>
    <item>
      <title>StudyPal: Your AI-Powered Personalized Learning Companion</title>
      <dc:creator>Rajesh Adhikari</dc:creator>
      <pubDate>Tue, 07 May 2024 08:28:31 +0000</pubDate>
      <link>https://dev.to/rajesh-adk-137/studypal-your-ai-powered-personalized-learning-companion-59d</link>
      <guid>https://dev.to/rajesh-adk-137/studypal-your-ai-powered-personalized-learning-companion-59d</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As students navigate the complexities of modern education, they encounter diverse challenges, from grasping complex concepts to effective time management. Traditional learning resources often fail to address individual needs and learning styles. StudyPal steps in as a dynamic and adaptive solution, leveraging the latest AI and machine learning advancements to deliver personalized learning experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  The StudyPal Experience
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Subject Selection and Personalization
&lt;/h3&gt;

&lt;p&gt;Upon accessing StudyPal, students choose their desired subject from a curated list, setting the stage for a personalized learning journey. They provide details about their educational background, enabling StudyPal to tailor materials and exercises to their current knowledge level. An "Additional Details" section allows students to specify focus areas, ensuring content alignment with their learning objectives.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fet612tvcwr290ddovsxg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fet612tvcwr290ddovsxg.png" alt="Subject Selection and Personalization" width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Intelligent Study Material Generation
&lt;/h3&gt;

&lt;p&gt;StudyPal's AI-powered engine generates concise and comprehensive study materials tailored to the selected subject. These materials distill core concepts into key points for quick review and reinforcement. A chat feature provides detailed explanations for further clarity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdi21x06zt0k273og03r2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdi21x06zt0k273og03r2.png" alt="Intelligent Study Material Generation" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  MCQ Practice with AI-Powered Assistance
&lt;/h3&gt;

&lt;p&gt;StudyPal offers an interactive MCQ practice module for practical application of knowledge. CopilotKit's AI copilot provides contextual guidance during practice sessions, fostering independent thinking and problem-solving skills.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvj0qayrhgl4apilngc1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvj0qayrhgl4apilngc1.png" alt="MCQ Practice with AI-Powered Assistance" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Unveiling the Rationale: Deeper Understanding
&lt;/h3&gt;

&lt;p&gt;Students can delve deeper into subjects by querying the AI copilot for detailed explanations and rationales behind each answer choice. This interactive feature promotes critical thinking and analysis.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fueop0xvqqxi4xkgzylqw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fueop0xvqqxi4xkgzylqw.png" alt="Unveiling the Rationale: Deeper Understanding" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Progress Tracking and Scoreboard
&lt;/h3&gt;

&lt;p&gt;StudyPal incorporates a comprehensive scoreboard for real-time progress monitoring and performance measurement. Immediate feedback empowers students to identify areas for improvement and celebrate achievements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjl6gm2mxgtthhv96h2q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjl6gm2mxgtthhv96h2q.png" alt="Progress Tracking and Scoreboard" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Use Cases for StudyPal:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Classroom Supplement:&lt;/strong&gt;&lt;br&gt;
StudyPal can be integrated into traditional classroom settings to supplement teacher-led instruction. Students can use the platform to review key concepts, access additional study materials, and reinforce their understanding of topics covered in class. Teachers can also leverage StudyPal to provide personalized assistance and support to students with varying learning needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Remote Learning Support:&lt;/strong&gt;&lt;br&gt;
With the rise of remote and hybrid learning models, StudyPal can serve as a valuable tool for students and educators alike. Students can access StudyPal from anywhere with an internet connection, allowing them to continue their studies outside of the classroom. Educators can use StudyPal to facilitate remote tutoring sessions, provide feedback on student assignments, and track student progress in real-time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Exam Preparation:&lt;/strong&gt;&lt;br&gt;
StudyPal can be used as a comprehensive exam preparation tool for standardized tests, entrance exams, and certification exams. Students can utilize the platform to review study materials, practice exam-style questions, and receive personalized feedback and guidance from the AI copilot. StudyPal's adaptive learning capabilities can help students identify areas of weakness and focus their study efforts where they are needed most.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Professional Development:&lt;/strong&gt;&lt;br&gt;
Beyond academic learning, StudyPal can also support professional development initiatives for individuals in various industries. Professionals can use the platform to brush up on industry-specific knowledge, prepare for professional certification exams, and enhance their skills in areas such as project management, data analysis, or programming languages. StudyPal's personalized learning approach can help professionals stay competitive in their fields and advance their careers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Special Education Support:&lt;/strong&gt;&lt;br&gt;
StudyPal can be adapted to meet the needs of students with diverse learning abilities, including those with special education requirements. Educators can customize StudyPal's learning materials and exercises to accommodate different learning styles, provide additional support for students with learning disabilities, and offer alternative assessment methods such as interactive quizzes or multimedia presentations. StudyPal's AI copilot can also provide targeted assistance and accommodations for students who require extra support.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Language Learning and ESL Support:&lt;/strong&gt;&lt;br&gt;
StudyPal can be used as a language learning platform for students learning a new language or seeking to improve their English language skills. Students can access StudyPal's language-specific study materials, practice vocabulary and grammar exercises, and engage in conversation practice with the AI copilot. StudyPal's adaptive learning features can help students progress at their own pace and tailor their language learning experience to their individual needs and goals.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  StudyPal's Tech Stack
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Frontend
&lt;/h3&gt;

&lt;p&gt;StudyPal's frontend is meticulously crafted using React, a renowned JavaScript library celebrated for its ability to create captivating user interfaces. Leveraging React's component-based architecture and virtual DOM, StudyPal ensures a seamless and responsive user experience, even when handling complex UI elements and real-time updates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UI Design:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The user interface for our project was designed and developed in-house using Tailwind. If you wish to develop a similar project, you can either create your own UI or utilize the UI from our GitHub repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copilotkit Implementation:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
To integrate Copilotkit, components are wrapped with &lt;code&gt;&amp;lt;Copilotkit&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;/Copilotkit&amp;gt;&lt;/code&gt; tags. The backend URL is provided within these tags. Here's an example of how Copilotkit is implemented for the MCQ section of the project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PracticeMCQ&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;CopilotKit&lt;/span&gt; &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"http://localhost:3000/api"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;McqQns&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;CopilotKit&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To facilitate AI-powered assistance during MCQ practice sessions, StudyPal integrates the &lt;code&gt;&amp;lt;CopilotPopup/&amp;gt;&lt;/code&gt; component from CopilotKit. This component provides a chat interface where students can request MCQ questions and hints without revealing the full answer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;CopilotPopup&lt;/span&gt;
  &lt;span class="na"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;instructions&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;defaultOpen&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;StudyPal Copilot&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;initial&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hi there! 👋 You can ask me to generate personalized MCQ questions and hints.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;clickOutsideToClose&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To manage hint displays, StudyPal utilizes both the &lt;code&gt;useCopilotAction&lt;/code&gt; and &lt;code&gt;useMakeCopilotReadable&lt;/code&gt; hooks from CopilotKit. The former enables the application to define custom actions triggered by user input in the chat interface, while the latter ensures that the code segments are readable to Copilot.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;hintsShown&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setHintsShown&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;questions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;fill&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="nf"&gt;useMakeCopilotReadable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;This is the current value of hintsShown usestate to show hints to questions: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;hintsShown&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nf"&gt;useCopilotAction&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;updateHintsShown&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Show or hide hints by updating the hintsShown state based on user requests for hints.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;showHint&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boolean&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Show or hide hints.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;indexNo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;number&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Index number of the question for which the hint should be shown or hidden.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;showHint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;indexNo&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newHintsShown&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;hintsShown&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="nx"&gt;newHintsShown&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;indexNo&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;showHint&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nf"&gt;setHintsShown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newHintsShown&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;hintUsed&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;indexNo&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;hintUsed&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;indexNo&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;showHint&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Updating hints...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Additionally, MCQs are loaded with options, but initially, no hints are displayed. However, upon requesting assistance from Copilot, hints are dynamically generated below each question. This approach ensures that students can interactively receive hints tailored to their specific questions. Here's the example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;questions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setQuestions&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;([{}]);&lt;/span&gt;

&lt;span class="nf"&gt;useMakeCopilotReadable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;This is the questions with their options, hint and answers: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;questions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nf"&gt;useCopilotAction&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;newQuestions&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Provide questions based on conditions given. If number of questions are not specified provide 10 of them. Do not tell questions and options in chat.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;items&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;object[]&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;The new questions.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;attributes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;question&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;The MCQ questions.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;option1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;One of the four options and only one of them is correct.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;option2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;One of the four options and only one of them is correct.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;option3&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;One of the four options and only one of them is correct.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;option4&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;One of the four options and only one of them is correct.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hint&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hint to the question.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;answer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Correct answer among available options.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="na"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// { question, option1, option2, option3, option4, hint, answer }&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newQuestions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="na"&gt;question&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;question&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;option1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;option2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;option3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;option4&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="na"&gt;hint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;answer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;answer&lt;/span&gt;
        &lt;span class="p"&gt;}));&lt;/span&gt;
        &lt;span class="nf"&gt;setQuestions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newQuestions&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;setShowQuestion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;setHintsShown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newQuestions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;fill&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
        &lt;span class="nf"&gt;setHintUsed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newQuestions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;fill&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Updating questions...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The revision points are generated using the OpenAI API and are integrated with the chat using similar techniques as described above.&lt;/p&gt;

&lt;h3&gt;
  
  
  Backend
&lt;/h3&gt;

&lt;p&gt;On the backend, StudyPal harnesses Node.js, a high-performing JavaScript runtime, coupled with Express.js, a lightweight web application framework. This combination enables efficient handling of server-side operations, including communication with the CopilotKit API and processing user requests.&lt;/p&gt;

&lt;p&gt;The integration of CopilotKit serves as the backbone of StudyPal's AI capabilities. Acting as a bridge, CopilotKit facilitates seamless communication between the StudyPal application and potent language models like GPT-3.5. Through CopilotKit's APIs, StudyPal generates personalized study materials, context-specific hints, and detailed explanations, powered by cutting-edge advancements in natural language processing (NLP) and machine learning.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;HEADERS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Modify CORS headers to match your frontend's origin&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Access-Control-Allow-Origin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://localhost:5173&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Access-Control-Allow-Methods&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;GET, POST, OPTIONS, PUT, PATCH, DELETE&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Access-Control-Allow-Headers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;X-Requested-With,content-type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Use CORS for all routes&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;cors&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="c1"&gt;// Use express.json() to parse JSON bodies into JS objects&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="c1"&gt;// Define a route for POST requests to '/api'&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/api&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;copilotKit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;CopilotBackend&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;adapterOptions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gpt-3.5-turbo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="nx"&gt;copilotKit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;streamHttpServerResponse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;OpenAIAdapter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;adapterOptions&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;HEADERS&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;end&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;error&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Development Practices
&lt;/h3&gt;

&lt;p&gt;StudyPal's codebase follows the latest industry standards, making the development process smooth and efficient. With top-notch technologies such as React, Node.js, and CopilotKit, StudyPal showcases innovation in educational technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap-up
&lt;/h2&gt;

&lt;p&gt;StudyPal stands as a versatile tool reshaping traditional learning paradigms. Its integration of CopilotKit offers personalized and intelligent support across various contexts, from classroom enrichment to remote learning and exam preparation. Empowering both learners and educators, StudyPal represents the transformative potential of technology in education.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/rajesh-adk-137/StudyPal/assets/89499267/a06b11c6-ffbc-44b6-96b0-648d2a38cd7c"&gt;click-for-demo-video&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Installation and Setup Guide
&lt;/h2&gt;

&lt;p&gt;● &lt;strong&gt;Clone the Repository:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   git clone https://github.com/rajesh-adk-137/StudyPal.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;● &lt;strong&gt;Install Dependencies:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Inside frontend:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Inside backend:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;● &lt;strong&gt;Set Up Environment Variables:&lt;/strong&gt; &lt;br&gt;
   Add a &lt;code&gt;.env.local&lt;/code&gt; file in the backend and insert your API key.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   OPENAI_API_KEY=sk-proj-*******************************
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We have used &lt;code&gt;gpt-3.5-turbo&lt;/code&gt; as our OpenAI model. If you want to use a different OpenAI model, change the &lt;code&gt;model&lt;/code&gt; in &lt;code&gt;backend\server.js&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;adapterOptions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gpt-3.5-turbo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
   &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;● &lt;strong&gt;Start the Development Server:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setting up the frontend: &lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F83ygon8cquevqn75jtz7.png" alt="Frontend Setup" width="569" height="62"&gt;
&lt;/li&gt;
&lt;li&gt;Setting up the backend: &lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp14gk5zoax5f4s2u0maq.png" alt="Backend Setup" width="569" height="62"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;● &lt;strong&gt;Visit the Page:&lt;/strong&gt; &lt;br&gt;
   Open your browser and navigate to &lt;a href="http://localhost:5173"&gt;http://localhost:5173&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If your frontend is not running on &lt;code&gt;http://localhost:5173&lt;/code&gt; but some other URL, then you have to change the CORS address from &lt;code&gt;backend\server.js&lt;/code&gt;. Inside HEADERS, you have to change the following line:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Access-Control-Allow-Origin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://localhost:5173&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;● &lt;strong&gt;For more information about CopilotKit, visit the website:&lt;/strong&gt; &lt;a href="https://www.copilotkit.ai/"&gt;https://www.copilotkit.ai/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;● &lt;strong&gt;GitHub Link to the project:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/rajesh-adk-137/StudyPal"&gt;https://github.com/rajesh-adk-137/StudyPal&lt;/a&gt;&lt;/p&gt;

</description>
      <category>copilotkit</category>
      <category>react</category>
      <category>node</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
