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

  1. 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.
  2. 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.
  3. 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.
  4. 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

Share this project:

Updates