Inspiration
Group life still lives in scattered chats: “Can you pick this up Friday?”, “Did anyone book the court?”, “Who owns the deck?”. The inspiration was simple — one calm place where a group’s plans become owned work, without drowning people in another heavy productivity suite.
Together is built around spaces: family home, a trip, a work crew, a club. Each space is fully separate (Slack-style isolation), so tennis practice in home never shows up in launch.
What it does
- Spaces — color-coded, invite-only rooms with their own people and data
- Home — living task board with owners, due times, tags, and status pulses
- Tell Together — plain-English commands like “Tennis at 4pm on 25th July” that land as the right event/task in the right space, in the user’s timezone
- Calendar — month / week / year for shared events
- Chat & notes — space chat, per-task threads, and notes so context stays with the work
- Invites & assignment — share a link; assign owners so responsibility is visible
How we built it
Together is a Next.js 14 App Router product in TypeScript and React, with Clerk for auth, Neon Postgres + Prisma for multi-tenant space data, and Vercel for hosting.
Tell Together starts with a local, timezone-aware intent parser (dates like “25th July”, times like “4 p.m.”, activities vs errands). Optionally it can upgrade with free-tier LLMs (Groq / Gemini) when keys are present.
The product shell is a three-pane workspace: space rail, home/calendar/chat/notes, and a detail/digest pane — with day and night themes.
This project was built with assistance from GPT-5.6 for the OpenAI Hackathon.
Challenges we faced
- Timezone truth — server-side parsing on UTC hosts turned “4pm” into the wrong local time; we fixed this with wall-clock → UTC conversion using the browser’s IANA timezone.
- Hard space isolation — fuzzy name matching (“abc” ⊂ “abcdefgh”) and shared client state could leak items across spaces; we enforced exact space matching and wipe-on-switch.
- Intent quality — “tennis at 4pm on 25th July” must become an event at that time, not a vague task “due” later; that meant preferring structured local parsing over naive LLM date strings.
- Shipping on free tiers — keeping Clerk + Neon + Vercel + optional LLM/email within free limits while still feeling like a real multi-user product.
What we learned
Clear ownership beats more features. When a group can say what should happen and see who owns it in which space, coordination gets quieter — and the product feels trustworthy.
Built With
- api
- clerk
- css
- gemini
- gpt-5.6
- groq
- javascript
- lucide
- neon
- next.js
- node.js
- postgresql
- prisma
- pwa
- react
- rest
- typescript
- vercel

Log in or sign up for Devpost to join the conversation.