Inspiration
A couple months ago I asked my friend Laura to apply to Hack the Valley with me. Then… silence. I even double-texted (yup, full simp mode) and still nothing. Sixty-four days later—one week before HTV—she resurfaces: “hey! saw the HTV email… are we still teaming?” That whiplash became the spark. Real conversations are messy: people vanish, reply on “business-day time,” and plans die in the gaps. We built The Dryness Eliminator™ to rescue momentum reading reply cadence, surfacing who owes the next message, and turning chat into action with smarter drafts, polite nudges, and one-click plans.
What it does
It’s a simple chat app that helps you keep conversations alive. Our AI helper Alex has three tools; Analyze, Rewrite, and Insights. Analyze reads the latest thread to propose context-aware conversation starters or follow-ups; Rewrite makes dry messages warmer, clearer, or shorter; Insights summarizes the vibe, shows who owes the next reply and how long it’s been, and flags ghosting risk/overall conversation health. Built with Next.js, Supabase, and Gemini, it works in real time.
How we built it
The app runs on Next.js + TypeScript with Supabase (Postgres, Auth, Realtime) for users, conversations, and live messages. Google’s Gemini 2.5 Flash is the brain, called from server-side route handlers so keys and prompts stay private. For each action we send only the last few messages (with light redaction) and a compact prompt; Gemini returns three improved rewrites, a concise analysis JSON for Insights (summary, topics, sentiment), and gentle re-engagement nudges, with optional graceful-exit drafts. We cache responses in Supabase, merge them with our own stats (who owes the reply, longest gap, business-day latency), and invalidate on new messages to keep everything real-time, safe, and fast.
Challenges we ran into
Challenges we ran into (simple)
- We didn’t lock the idea until around 1 AM, so planning and scoping were rushed.
- It was hard to pick the right Gemini model (speed vs. quality) and tune temperature/length so replies felt human.
- API key security was tricky—we had to move all AI calls server-side, hide keys, and set strict rate limits.
- Prompt design kept breaking: keeping enough context without blowing token limits took a lot of trial and error.
- Realtime stats (who owes reply, longest gap, biz-day timing) were easy to define but harder to get accurate and fast.
Accomplishments that we're proud of
- We pivoted at 1 AM from a throwaway idea and still shipped something real and useful.
- Laura set up API keys and used AI for the first time, wiring Gemini into the app end-to-end.
- Faiz mentored Laura through auth, prompts, and debugging - pairing until things clicked.
- We turned a 64-day ghosting story into a clean, three-panel product with live insights.
What we learned
- How to design a logo that actually matches the product vibe (not just a pretty icon).
- How to use Cursor effectively: prompt chaining, context blocks, and quick refactors without fighting the editor.
- Small UX choices (tone chips, “who owes reply,” biz-day timing) make AI feel useful, not gimmicky.
What's next for The Dryness Eliminator™
I want to make this actually useful where I text, so first up I’m adding read-first iMessage support—I’ll import a thread (via export/Shortcut), let Alex analyze cadence and suggest replies, and I’ll still hit send in Messages for privacy. Same deal for Instagram DMs: pull recent chats, get smart rewrites and gentle nudges, then copy-paste back to IG. I’m also shipping one-tap “Copy to iMessage/Instagram” with tone chips (Short/Warm/Playful), plus a small style memory so drafts sound like me (emoji rate, length, greetings). After that: group chats, a lightweight mobile PWA with notifications, and stronger redaction/rate-limits so it stays safe and respectful.

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