Manage and analyze feedback efficiently with Feednest
Handle user feedback like a pro!
Inspiration
In the fast-paced world of development, user feedback is more than a nice-to-have—it's the cornerstone of creating impactful, user-focused products. Yet, many feedback tools feel generic, misaligned with the developer workflow, and fail to turn insights into meaningful actions. Feednest was built with developers in mind, offering a seamless way to gather, analyze, and act on feedback right where it matters most. Designed to fit naturally into your projects, Feednest transforms raw feedback into actionable insights, empowering you to refine your work and deliver exceptional results. Whether you're fine-tuning a feature or launching something brand new, Feednest helps you stay connected to your users while keeping your focus on building.
What it does
Feednest is a next-generation platform designed to revolutionize how developers (and anyone really) collect and manage feedback. Feednest goes beyond simple collection—it provides powerful tools to analyze user sentiment, identify key concerns, and highlight actionable insights. With its intuitive design and developer-friendly features, Feednst ensures every piece of feedback is captured, understood, and turned into actionable improvements—helping you build better, faster, and smarter.
Demo
How I built it
Feednest was built using Modus, an open-source, serverless framework designed for crafting scalable functions and APIs with WebAssembly. With Modus, we wrote our app logic in AssemblyScript, leveraging its streamlined integration capabilities to connect seamlessly with AI models. This allowed us to power Feednest’s advanced sentiment analysis, summarisation and vector search with ease.
Modus’s flexibility made it simple to scale from basic CRUD operations to more complex data-driven insights. Its ability to integrate both classical machine learning models and generative AI enabled us to implement features like highlighting actionable feedback and surfacing user sentiment in real-time.
By using Modus, we gained a dedicated API framework tailored for working with AI models, allowing us to focus on creating thoughtful and impactful solutions. This streamlined approach enabled us to build Feednest as a developer-first tool, optimized for seamlessly integrating AI-driven insights without the burden of managing complex infrastructure.
Modus & Hypermode Integration
To build Feednest, we combined the strengths of Modus and Hypermode. Modus provided a dedicated API framework for integrating AI models, allowing us to add features like sentiment analysis and feedback embedding for vector search. This made it easy to integrate enable powerful, AI-driven search using natural language.
Hypermode handled the infrastructure, giving us the tools to create a secure and responsive backend for real-time feedback summaries and insightful analytics. These features ensure creators can quickly understand user sentiment, find patterns in feedback, and make informed decisions—all without worrying about the complexities of AI integration or scaling. Together, Modus and Hypermode helped us turn Feednest into a fast, intuitive, and developer-friendly solution.
Embedding feedback for search
import { collections } from "@hypermode/modus-sdk-as";
import { feedbackCollectionName } from "../utils";
import { EmbedFeedbackResponse } from "../types";
export function embedFeedback(
stringifiedFeedback: string,
projectId: string,
): EmbedFeedbackResponse {
// embed feedback into collection, using the projectId as namespace for easy retrieval
const feedbackCollectionMutationResult = collections.upsert(
feedbackCollectionName,
null,
stringifiedFeedback, // stringified feedback to embed
[], // labels
projectId, // namespace
);
return {
feedbackCollectionMutationResult: feedbackCollectionMutationResult,
};
}
Analysing Sentiments
import { models, collections } from "@hypermode/modus-sdk-as";
import {
OpenAIChatModel,
SystemMessage,
UserMessage,
} from "@hypermode/modus-sdk-as/models/openai/chat";
import { feedbackCollectionName, modelName } from "../utils";
import { AnalyseSentimentResponse, SummaryResponse } from "../types";
export function analyseSentiment(text: string): AnalyseSentimentResponse {
const model = models.getModel<OpenAIChatModel>(modelName);
const input = model.createInput([
new SystemMessage("You are a great feedback sentiment analysis agent."),
new UserMessage(
`Analyse the sentiment of the following text: "${text}" If it is positive, return "positive",
if it is neutral, return "neutral", and if it is negative, return "negative". Do not add your own context, comment
or an explanation, return either positive, neutral or negative. Just either of those words`,
),
]);
input.temperature = 0.7;
const output = model.invoke(input);
const sentiment = output.choices[0].message.content.trim();
// reply based on sentiment
const messageInput = model.createInput([
new SystemMessage("You are a great smart reply agent."),
new UserMessage(
`Based on this sentiment ${sentiment}, generate a smart reply to the following text: "${text}" in less than 25 words.
If the text is positive, return a smart reply showing positivity and gratitude, if it is neutral, return a smart reply
showing neutrality and understanding, and if it is negative, return a smart reply about how sorry you are and that
the issue would be looked at and fixed. Do not ask follow-up questions.
Do not add your own context, comment or an explanation, return a smart reply in less than 25 words. Just return a string
less than 25 words, no weird formatting`,
),
]);
messageInput.temperature = 0.7;
const messageOutput = model.invoke(messageInput);
return {
message: messageOutput.choices[0].message.content.trim(),
sentiment,
};
}
Search function using Natural Language
import { collections } from "@hypermode/modus-sdk-as";
import { feedbackSearchMethod } from "../utils";
export function search(
text: string,
collection: string,
maxItems: i32,
projectId: string,
): collections.CollectionSearchResult {
const response = collections.search(
collection,
feedbackSearchMethod,
text, // text to search for
maxItems,
true,
[projectId], // namespace to search from
);
return response;
}
App Anatomy (How it works)
Project Creation and Widget Setup
After creating a project, users can move on to the projects page ( /console ) then select a project. On the project page they will see a button with angle brackets as an icon on the top right side of the page. Clicking this button reveals the steps needed to integrate the feedback collection widget into their own website or app. The widget is set up in a few easy steps:
Install the npm package with
npm install feednest
Feednest widget also depends on
@apollo/client
andgraphql
. Install them too like this:npm install @apollo/client graphql
Use the package in your app, following the below example
import "feednest/dist/index.css"; import { FeedbackWidget, client } from "feednest"; import { ApolloProvider } from "@apollo/client"; <ApolloProvider client={client}> <FeedbackWidget projectId="your_project_id" /> // your other react components </ApolloProvider>
This widget is the core of the feedback collection process, seamlessly embedding into websites for collecting and managing feedback.
AI-Powered Sentiment Analysis
The AI-powered sentiment analysis in Feednest is designed to help developers quickly understand the tone and emotional context of user feedback. This feature helps analyze the text of each feedback entry and classify it into sentiment categories such as positive, negative, or neutral.
This feature allows developers to:
Prioritize Critical Issues: Negative feedback can be immediately be actued upon.
Track User Satisfaction Trends: Over time, sentiment insights help visualize how users feel about updates or new features.
Improve Product Iterations: By understanding the emotional response behind feedback, creators can fine-tune their products to better meet user needs.
AI-Powered Summarisation
The AI-powered summarisation feature in Feednest is designed to distill large amounts of feedback into concise, actionable summaries. This helps creators quickly grasp the main points without having to sift through every individual comment.
Benefits
Save Time: Instead of combing through hundreds of feedback entries, creators can rely on summaries to get a clear picture in seconds.
Focus on Impact: Quickly identify what matters most to users—be it feature requests, bugs, or product praises.
Enhanced Decision-Making: The summaries provide clear, actionable insights, making it easier to prioritize improvements and updates.
Vector Search on Feedback
The vector search feature in Feednest uses natural language processing (NLP) to make finding relevant feedback fast, intuitive, and precise. Instead of relying on exact keyword matches, vector search leverages embeddings to understand the meaning behind a query, enabling smarter and more flexible search results.
Benefits
Natural Language Queries: Creators can search feedback using conversational language instead of relying on exact terms. For example, a query like "users not happy with onboarding" will find feedback related to onboarding issues, even if the exact words aren't used.
Find Hidden Patterns: The semantic understanding enables the discovery of related feedback that traditional keyword searches might miss.
Faster Iteration: By retrieving relevant insights instantly, developers can make informed decisions and respond to user concerns more efficiently.
Closing Words
When I first started working on Feednest, I honestly didn’t see the point of AI, since I hadn’t used any other AI tools aside ChatGPT. I was skeptical about how it could actually improve a tool like this and wasn't particularly interested in diving into the world of machine learning and natural language processing. The idea of AI felt like a buzzword—something that sounded cool in theory but didn’t seem to have practical value in the real world.
But as I started experimenting with features like sentiment analysis, vector search, and summarization, my perspective changed. The more I worked with AI models, the more I saw their potential to make feedback processing faster, smarter, and far more impactful. For example, AI-powered sentiment analysis helped me understand user emotions in a way that raw data simply couldn’t convey, and vector search turned our feedback database into an intelligent system that could actually "understand" and retrieve the most relevant insights.
The breakthrough moment for me was realizing how Modus helped me integrate AI seamlessly in my app. Instead of seeing AI as an abstract or unnecessary tool, I began to see it as a powerful way to enhance product development, user experience, and overall efficiency.
Now, I’m genuinely excited about the possibilities Modus brings to projects like Feednest, and I’m constantly exploring new ways to integrate AI for even better results. What once seemed like a complex and distant concept has become an essential part of building smart, data-driven applications.