The thinking behind the thing
A small app, made with some care.
Loose Ends turns a scattered group conversation into a tentative plan, visible tradeoffs, and one useful follow-up message. Here is the prompt trail, the important iteration, and the limits of what it can do.
01 / The actual problem
Everyone replied. Nothing got decided.
Group plans become little archaeology projects: one person is free Saturday, another needs vegetarian options, someone else says “maybe,” and nobody ever picks a place. The work is not summarizing a chat. It is separating what people actually agreed to from what the organizer is quietly assuming.
The interview brief was simple: build a web app or AI agent that solves a problem for yourself, a friend, or a family member; share the prompts and working link; explain the approach in about five minutes; and keep the build to a few hours.
02 / Initial build prompt
Start with one useful job.
Build a standalone web app for people who struggle to turn a messy friend-group chat into an actual plan. Let someone paste messages written as “Name: message.” Identify who is participating, what days were mentioned, who is available or unavailable, any relevant time restrictions, practical constraints, and the best tentative plan. Show the unresolved questions and write one friendly message the organizer can send back to the group. Include realistic examples, make it work on mobile, and keep the project small enough to finish in a few hours.
That set the first boundary: one screen, one input, one proposed next step. No accounts, calendars, integrations, or elaborate agent orchestration.
03 / The iteration that mattered
Uncertainty is part of the answer.
Improve the planner so it never presents a guess as confirmed. Treat “maybe,” “if,” and “should work” as tentative. If someone replies “I’m in” without naming the day, keep that response contextual and explicitly ask for confirmation. Detect direct conflicts, conflicting before/after times, budgets, dietary requirements, accessibility, dog-friendly spaces, childcare, weather, and reservations. Explain missing details rather than inventing a venue, availability, or agreed start time.
A polished summary that quietly invents consensus makes the original problem worse. The app now distinguishes confirmed, tentative, unavailable, and not-yet-answered responses; surfaces the evidence; and labels every recommendation as a proposal.
04 / Reliability and privacy
Choose the simpler architecture.
Keep every conversation in the current browser tab. Use a transparent rules-based parser instead of an external AI call. Do not store messages, send requests, load tracking, or claim the app is AI-powered. Render pasted names and messages as plain text, add a restrictive content-security policy, support keyboard and screen-reader users, respect reduced-motion preferences, and test representative conversations plus ambiguous replies, relative dates, explicit conflicts, malformed input, and malicious-looking markup.
A language model could make the parser more flexible, but it would also introduce an API key, a server boundary, usage costs, latency, and questions about sharing friends’ private conversations. For a time-boxed take-home, predictable behavior and honest privacy were the better tradeoff.
05 / What this showed
Useful is not the same as certain.
- The valuable output is a next action, not a longer summary.
- “I’m in” is not a confirmed day unless the day is actually named.
- Constraints belong beside the plan, not buried in a transcript.
- A smaller, inspectable browser-only solution can be the safer product choice.
- Rules have limits: unfamiliar phrasing, sarcasm, and nuanced context may still need human judgment.
Next, I would test the tool with real friend-group conversations, refine the parser around missed cases, and consider an opt-in, securely hosted AI mode only if that genuinely improved the outcome.