This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend
I built FriendReply AI, a small AI-powered web app that helps a friend reply to messages without spending too much time thinking about how to phrase them.
The idea is simple: sometimes you already know what you want to say, but you want a few natural ways to say it.
FriendReply AI lets the user:
I built it around a real everyday communication problem and tested the working application with a friend using different messages, tones, and styles.
The goal wasn't to build another general-purpose chatbot. I wanted to build one small tool that does one useful thing well:
Message → Tone + Style → 3 natural replies
The deployed application includes the React frontend and connected backend AI service.
FriendReply AI uses an open-weight AI model through the Dahl inference API.
The architecture is:
React Frontend
↓
POST /api/reply
↓
Node.js + Express Backend
↓
Dahl OpenAI-compatible API
↓
Open-weight Model
↓
3 Reply Suggestions
The frontend is built with:
The user selects a tone and style and sends the message to the backend.
The backend uses:
The backend handles the AI request instead of exposing the AI API key to the browser.
The application currently uses:
deepseek-ai/DeepSeek-V4-Flash-0731
through Dahl's OpenAI-compatible inference API.
The backend instructs the model to:
This makes the AI output easier for the application to process reliably.
Open innovation matters because the AI model should not have to be permanently tied to one closed provider.
For FriendReply AI, the model is separated from the frontend and accessed through a backend inference layer. This means the underlying model can be changed or experimented with without redesigning the entire application.
Using an open-weight model also made this project a useful way to learn how model inference fits into a real application:
User Interface
↓
Application Backend
↓
Model Inference
↓
Structured AI Output
It also keeps the project focused on the application itself rather than requiring a large custom AI training pipeline.
I did not use DevRelay for this project, so I am leaving the optional agent session section out.
I am submitting this project for the main Build for a Friend challenge.
FriendReply AI is intentionally small.
I didn't want to build an AI assistant that tries to do everything. I wanted to solve one everyday problem for a friend: making it easier to turn a thought into a natural reply.
The project gave me the opportunity to work with an open-weight model, build an AI-backed application from frontend to inference, deploy it, and test the result with a real user.
Thanks for checking out FriendReply AI!