Inspiration
We've all been in that meeting where someone says "I'll get that to you by Friday" and everyone nods, and then Friday comes and goes and nobody remembers. Promises get made in emails, Slack threads, and standups, but they never end up anywhere trackable. I wanted a tool that treats those sentences like the commitments they actually are.
What it does
Promised is a commitment tracker. You paste in raw text — an email thread, a Slack export, meeting notes — and it extracts who promised what, to whom, and by when. Every commitment shows up on a filterable ledger where you can mark it KEPT or BROKEN (styled like old library due-date stamps). There's a trust ledger that shows reliability scores for each person based on their track record. And when something is overdue, you can draft a follow-up nudge in one click. Everything lives in your browser — no backend, no signup.
How we built it
I used Codex extensively throughout the build. The project is React + TypeScript + Vite with Tailwind CSS. Codex helped me scaffold the data model, build the extraction engine, and design the component architecture. The hardest part was the natural language extraction — getting the GPT-5.6 prompt to reliably distinguish "I owe" from "owed to me" and handle relative dates like "tomorrow" or "by end of week." I also built a fully offline regex-based fallback parser so the app works without any API key, and Codex helped me iterate on those regex patterns. The trust ledger scoring system and the statistics dashboard were also built through Codex sessions.
Challenges we ran into
The biggest challenge was extraction accuracy. Early versions of the prompt would misidentify who was making the promise, especially in group email threads. Getting the date parsing right for relative dates across different contexts took a lot of iteration. I also had to handle the case where the same sentence matches multiple regex patterns in the offline parser — deduplication logic was trickier than expected.
Accomplishments that we're proud of
The offline parser works surprisingly well for a regex-based approach — it catches most common promise patterns without needing any API. The library-stamp visual design (KEPT/BROKEN badges with an SVG turbulence filter for a rough, hand-stamped look) came out really clean. And the whole app works with zero setup — just open the URL, and there's sample data loaded so you can see the full experience immediately.
What we learned
Prompt engineering for structured extraction is a whole skill. Getting GPT-5.6 to return consistent JSON with the right fields and correct attribution required a lot of testing with real-world text. I also learned that building a "simple" CRUD app with good UX has a surprising amount of depth — toast notifications, confirmation dialogs, search, export/import, error boundaries — all the small things that make it feel like a real product.
What's next for Promised
I want to build a Chrome extension so you can highlight a message in Gmail or Slack and extract commitments directly from the page. Also thinking about shared team ledgers, calendar integration for automatic due-date reminders, and maybe a Slack bot that watches threads and auto-logs promises.
Built With
- openai-gpt-5.6
- react
- tailwind-css
- typescript
- vite

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