Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
One open loop for cities, apartments, campuses and institutions: members report and verify, your team fixes, members confirm.
BusinessTypeScript · JavaScriptGitHub @triozcompanyOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗
🌐 Live: ungakoodal.vercel.app · 💻 Source: github.com/triozcompany/koodal · 🎬 Videos, demo & MVPs
Built by TEAM TRIOZ for Build with AI: Code for Communities
▶ Watch the 24-second product video · also in the repo: public/videos/koodal-product.mp4
One open loop for every community's issues. Koodal is a multi-tenant platform where any organization (a city corporation, an apartment community, a university or an institution) gets its own space to report, verify, fix and confirm local issues.
| 🗣 Members report and support | Report in your own language by photo, text or voice note through the Koodal app. Neighbours support and verify, so the most important issues rise to the top. |
| 🛠 The team decides and fixes | Staff use the Koodal Console to accept or reject cases, assign the right team, track deadlines and post proof of the fix. |
| ✅ The community confirms | A case closes only when the people who reported it agree it's fixed. Otherwise it reopens. |
What makes it different
Impact: people get a voice and see what happens to their reports. Organizations get fewer duplicates, clear priorities and data on which problems keep coming back.
Koodal started life as CivicPulse, a civic issue app for Tamil Nadu, and is growing into a platform for every kind of community. See Built vs roadmap for what is live today.
📖 View the pitch deck in the app, or download the PDF (also in the repo: public/docs/Koodal_Platform_Pitch_Deck.pdf).
| At a glance | |
|---|---|
| 🗣 12 | Indian languages |
| 🎁 14 days | free trial, no card needed |
| 💸 from ₹999 | per month, members never pay |
| 🎯 80% | community support opens an official case |
| Subject | What Koodal does | Remark |
|---|---|---|
| 📸 Reporting | Photo, text or voice note, in your own language | Takes a minute. Excuses not accepted. |
| 👥 Verification | Neighbours support and add evidence; enough support opens an official case | Plays well with others. |
| 🛠 Fixing | Staff accept, assign the right team, track deadlines and post proof | Always shows their work. |
| ✅ Trust | A public timeline; a case closes only when members confirm, and reopens if not | Never marks its own homework. |
| 🧩 Duplicates | The same problem filed ten times becomes one case with ten voices | Hates repeating itself. |
| 🔁 One account | Switch between your city, apartment and campus in a tap | Gets around. |
| 🤝 Fair pricing | Organizations subscribe, members never pay | Everyone's favourite. |
The full flow diagram is in Architecture below.
| 🖥 Apps | Next.js and TypeScript on Vercel: the installable PWA for members and the web Console for teams |
| 🔥 Firebase | Auth, Firestore (org-scoped data), Storage for photos and proof, push notifications |
| ✨ Gemini | Multilingual voice-to-report and case triage (category, severity, team), with staff making every decision |
| 🗺 Google Maps | Location, pins and nearby issues |
Diagrams from the pitch deck.
| Route | What it is |
|---|---|
/ | Landing page |
/get-started | Create an organization |
/pitch | Pitch deck viewer with PDF download (PDF) |
/nearby | Citizen app: nearby issues on a map |
/feeds | Citizen app: feed |
/search | Citizen app: search |
/cases | Citizen app: cases |
/profile | Citizen app: profile |
/settings | Citizen app: settings |
Plans and pricing are in Business model & growth below.
Organizations subscribe. Members never pay. Priced by community size, at about ₹2–10 per member a month. Every plan starts with a 14-day free trial.
| Plan | Price | Limits | Who it's for |
|---|---|---|---|
| Starter | ₹999 / month | 100 members · 2 staff | Small apartments, clubs |
| Community | ₹2,499 / month | 500 members · 5 staff | Gated communities, schools |
| Institution | ₹6,999 / month | 3,000 members · 15 staff | Colleges, hospitals, offices |
| Civic | Custom / year | Unlimited · SSO · open data | Cities and large campuses |
| Year 1 | Year 2 | Year 3 | |
|---|---|---|---|
| Annual recurring revenue | ₹30 L | ₹1 Cr | ₹2.7 Cr |
| Organizations | 73 | 271 | 735 |
| Footprint | 2 city pilots | 6 cities | 15 cities |
These are targets, not results.
How it grows
The platform-admin figures in the deck (8 paying organizations, ₹2.32 L MRR) come from demo/sample data, not real customers.
| ✅ Built in this repo | 🗺 Roadmap (shown in the deck) |
|---|---|
| Citizen app: nearby map and list, feed, search, cases, report flow, duplicate handling, profile, settings | Team/government workflow screens on live data |
| Firestore persistence, email/password auth | Multi-tenant organizations, billing, platform admin |
| Voice / WhatsApp intake, 12-language UI, policymaker hotspot analytics |
Koodal is a multi-tenant platform where any organization (city corporation, apartment, university or institution) gets its own space to report, verify, fix and confirm local issues.
Members report problems by photo, text or voice in 12 Indian languages via the Koodal app. Neighbours support and verify reports so urgent issues rise. Staff use the Koodal Console to accept, assign and track cases against deadlines, then post proof of the fix. A case closes only when the community confirms it; otherwise it reopens.
Gemini AI turns Tamil/Hindi voice notes into structured reports, merges duplicates and suggests category, severity and team; staff always make the final decision. One account works across many organizations, and the app adapts its wording, categories and teams to each.
Organizations subscribe monthly (from ₹999) after a 14-day free trial; members never pay.
Built with Next.js, Firebase, Gemini and Google Maps by Team TRIOZ.
Student: Koodal · Class: Communities of India · Class teacher: everyone who reports an issue
| Member | Role | Find them | |
|---|---|---|---|
| 🧭 | Santhosh S | Team Leader | GitHub · LinkedIn |
| 💻 | Aakash T | Team Member | GitHub · LinkedIn |
npm install
cp .env.example .env.local # then fill in real values, see below
You'll also need a Firebase Admin service account for local development — see Environment & secrets.
npm run dev
Open http://localhost:3000.
To (re)seed sample Firestore data:
npx tsx scripts/seed-koodal.ts
Nothing secret is committed to this repo. Copy .env.example to .env.local and fill in:
| Variable | Used for | Get it from |
|---|---|---|
GEMINI_API_KEY | AI report analysis (lib/domain/analyze.ts) | https://aistudio.google.com/apikey |
FIREBASE_SERVICE_ACCOUNT_JSON | Server-side Firestore writes (deploy-time alternative to a local key file) | Firebase Console → Project Settings → Service Accounts |
For local development, lib/firebase/admin.ts prefers a JSON key file over the env var:
secret/<project-id>-firebase-adminsdk-*.json
Download this from Firebase Console → Project Settings → Service Accounts → Generate new private key, and drop it in secret/. That whole folder is gitignored except secret/service-account.example.json, which documents the expected shape — copy the real file in beside it, don't overwrite it.
For deployment (Vercel or similar), you generally can't ship that file — set FIREBASE_SERVICE_ACCOUNT_JSON as a platform environment variable instead, pasting the entire service-account JSON as a single-line string. If neither the file nor the env var is present, admin.ts falls back to gcloud auth application-default login (ADC), which only works for local development.
The Firebase client (web) config in lib/firebase/client.ts is not secret — Firebase web API keys are safe to expose publicly; access is enforced by Firestore security rules, not by hiding that key. It's already committed as literal values; only change it if you're pointing this app at a different Firebase project.
app/(marketing)/ — the public site: landing /, /get-started and the pitch deck viewer /pitch with PDF download (public/docs/).app/(citizen)/ — the citizen-facing app (Next.js App Router), one route folder per screen (feeds/, search/, cases/, issues/[issueId]/, profile/, settings/, etc.), each typically split into a mobile *Screen.tsx and a desktop Desktop*.tsx.lib/domain/ — pure domain logic and types shared across screens (stages, filters, scoring, dedup, etc.), no framework or I/O dependencies.lib/firebase/ — Firestore client SDK (client.ts) and Admin SDK (admin.ts) setup.server/actions/ — Next.js Server Actions that perform the actual Firestore writes.app/tokens.css — design tokens (colors, type, spacing) imported by app/globals.css.scripts/seed-koodal.ts — seeds sample issues/cases into Firestore for local development and demos.| Command | Does |
|---|---|
npm run dev | Start the dev server (Turbopack) |
npm run build | Production build |
npm run start | Run a production build |
npm run test | Run the test suite (Vitest) |