Inspiration
What it does
Inspiration
Task messages often sound clear to the person who wrote them, but the person receiving them has to guess. "Can someone finish the evaluation and send it over before the meeting?" hides at least four questions: who owns it, what should be produced, who receives it, and what "before the meeting" actually means. These gaps cause delays, duplicated work and avoidable back-and-forth. Rewriting a message so it sounds smoother doesn't fix any of that, so I built a tool that finds the gaps instead.
What it does
HandoffLint is a local-first checker for task instructions. You paste a message, and it:
- flags missing or unclear owners, deliverables, deadlines, recipients, dependencies and ordering of actions
- quotes the exact words that triggered each finding and suggests a clarification question to ask
- lists the facts it could identify, each with evidence from the message
- lets you confirm details in editable fields; confirmed edits are kept if the message changes
- builds an editable handoff that you can copy or download, where anything still unknown stays in [brackets] instead of being guessed
The guiding rule is that unknown facts stay unknown until a person confirms them. For example, in "email the PDF report to Arjun by October 30, 2026, at 5 PM IST", Arjun is recorded as the recipient. HandoffLint never assumes Arjun, or anyone else, is the owner.
How I built it
React, TypeScript and Vite, with all the analysis in one framework-free module (src/analysis.ts) that is unit-tested with Vitest. There is no backend, no account and no AI API. The checks are transparent text rules, so every finding can be explained and the results are predictable. ESLint, a TypeScript typecheck, the tests, an npm dependency audit and a production build run in GitHub Actions.
Challenges
- Keeping the whole deadline. Early versions dropped the time or timezone ("30 October 2026 at 17:00 IST" became "30 October 2026"). I fixed this by capturing 12-hour and 24-hour times and only accepting real timezone codes, and added regression tests for each format.
- Keeping multi-step instructions in order. "First… Then… Finally…" sentences become numbered steps in their original order, with the step words removed and the final deadline kept.
- Never losing the user's work. Edited fields survive re-analysis and are flagged for review, and a hand-edited draft is never replaced without asking.
- Not inventing facts. Keeping owner, recipient, deadline and dependency distinct, and showing placeholders for anything unconfirmed, took more care than the parsing itself.
What I learned
A tool that helps clarify instructions must not create new uncertainty by inventing details. Showing evidence, keeping unknowns visible and protecting user edits turned out to be core features, not extras. I also learned to audit the product by running it, not just reading the code: running real inputs through the app found bugs that the passing tests hadn't.
Limitations
HandoffLint uses pattern-based rules, not a language model, so it can miss context or raise a question your team has already answered. It works best on English messages written in common phrasing; some formats, such as numbered or bulleted step lists, aren't recognized as ordered steps yet. Findings are suggestions, not proof that a message is wrong, and people stay responsible for confirming owners, deadlines and deliverables. Keyboard use and responsive layout were checked, but screen-reader testing and a full colour-contrast pass are still to do, so I'm not claiming WCAG conformance.
What's next
Support numbered and bulleted step lists, recognize more deadline wording (such as "within three business days"), improve small-text contrast, and add browser-level tests of the full workflow.
AI assistance
The analysis engine is deterministic and sends no message to any AI service. AI coding assistants (ChatGPT and Claude Code) helped with code, tests, review and documentation, and the demo-video narration is an AI-generated voice (Windows speech synthesis). I reviewed, tested and can explain the code I'm submitting.
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for HandoffLint
Built With
- css
- eslint
- github-actions
- lucide
- react
- typescript
- vite
- vitest
Log in or sign up for Devpost to join the conversation.