This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend
What I Built
During a recent SIH project, my team and I ended up communicating about the same project across both a WhatsApp group and a Discord server.
The problem was not that we were not communicating. The problem was that we were communicating in different places.
A task could be assigned on WhatsApp and later discussed differently on Discord. A deadline mentioned on one platform could be different from the one mentioned somewhere else. Updates could also get buried, leading to confusion about who was responsible for what or whether something was actually finished.
That experience inspired me to build CentralResolve.
CentralResolve takes exported WhatsApp and Discord conversations and analyzes them together to identify contradictions that may otherwise be missed.
It currently looks for:
- Conflicting task ownership
- Different deadlines
- Contradictory project statuses
- Unresolved decisions
Instead of producing another long summary of everything a team said, CentralResolve focuses on the parts that may actually require attention.
The idea is simple:
One project. Multiple conversations. One clear picture.
I built this for one of my friends from that project because we had already experienced the communication problem that CentralResolve is designed to solve.
Demo
Demo video: https://youtu.be/n1In5QHXMN4
The demo shows the complete end-to-end workflow:
- Open CentralResolve.
- Upload a WhatsApp chat export.
- Upload a Discord JSON export.
- Start the analysis.
- Let Gemma extract structured project facts.
- View the detected conflicts.
- Inspect the supporting evidence from each platform.
- Start a new analysis.
Code
GitHub Repository: https://github.com/shujahaadi/CentralResolve
How I Built It
The core of CentralResolve is Gemma 3 4B, running locally through Ollama.
The application is divided into four main stages:
WhatsApp Export ──┐
├──> FastAPI ──> Gemma 3 4B
Discord Export ───┘ │
↓
Structured Facts
↓
Deterministic Conflict Detection
↓
React Dashboard
Parsing
CentralResolve accepts:
- WhatsApp chat exports as
.txt - Discord message exports as
.json
Both formats are parsed into a common message structure containing:
- Platform
- Sender
- Timestamp
- Message content
The platform is preserved throughout the pipeline so that the system knows whether a piece of evidence came from WhatsApp or Discord.
Understanding the Conversations
Gemma 3 4B is used to turn messy conversation text into structured project facts.
For example:
[whatsapp] Rahul: I'll handle deployment.
[discord] Rahul: I can't handle deployment anymore.
Gemma extracts facts such as:
- Task assignments
- Deadlines
- Status updates
- Decisions
- Unresolved issues
The model also returns the original message as evidence.
The prompt explicitly tells the model not to invent information and to preserve the original meaning of the conversation.
Conflict Detection
The structured facts are then passed to a deterministic Python conflict detector.
CentralResolve currently checks for:
- Ownership conflicts
- Deadline conflicts
- Status conflicts
- Unresolved decisions
The LLM does not make the final conflict decision by itself.
Instead:
Conversation
↓
Gemma 3 4B
↓
Structured Facts
↓
Python Conflict Rules
↓
Explainable Conflict
This separation makes the final conflict logic explicit and inspectable.
For example, if one fact says:
Rahul will handle deployment
and another says:
Rahul can't handle deployment anymore
the deterministic detector can identify that as an ownership conflict and return the original messages as evidence.
Frontend
The frontend is built with React and Vite.
The dashboard displays:
- WhatsApp message count
- Discord message count
- Total messages
- Number of conflicts
- Conflict type
- Conflict severity
- Supporting evidence
- Original platform for each evidence item
The goal of the interface is to take a large amount of conversation data and quickly show the small number of issues that need attention.
Why Does Open Innovation Matter?
CentralResolve works with potentially private team conversations.
The current implementation uses Gemma 3 4B locally through Ollama rather than relying on a closed third-party AI API.
Conversation Files
↓
FastAPI
↓
Local Ollama
↓
Gemma 3 4B
↓
Structured Facts
This matters because the conversation data can be analyzed on the user's own machine without requiring it to be sent to a proprietary AI provider just to perform the model inference.
For a tool dealing with private team communication, that is an important difference.
The open approach also gives the project more control over the AI layer. Because the model is open-weight, the system can be adapted as the project evolves instead of being completely tied to one closed API.
It also makes it possible to:
- Run inference locally
- Swap models
- Change prompts and model behavior
- Experiment with different open models
- Avoid being locked into a single proprietary AI provider
For CentralResolve, local inference was not just a technical experiment. It fit the problem.
We wanted a tool that could look at conversations without making privacy an unnecessary tradeoff.
Prize Categories
Best Use of Gemma
I am entering Best Use of Gemma.
CentralResolve uses Gemma 3 4B as the core language model for understanding cross-platform team conversations and extracting structured project facts.
Gemma runs locally through Ollama, while deterministic Python logic handles the final conflict detection.
Final Thoughts
CentralResolve started with a problem that felt very real during a project with friends.
We were already communicating.
We were already sharing updates.
But because those conversations were spread across WhatsApp and Discord, we sometimes ended up with different understandings of the same project.
That led me to a simple question:
What if we could look at all of those conversations together and identify where the team stopped agreeing?
CentralResolve is my attempt at answering that question.
Not another tool that summarizes everything.
A tool that tells you where your team might no longer be on the same page.
Top comments (0)