Identified the workflow problem and defined what should count as an actionable request.
Brand systems and AI team workflows.Hands-on from first sketch to live product.
hello@dashaaa.comPortfolio, EST 2026©
( Case study · 03 )
Local-first Slack task triage
A local-first Slack triage tool that combines readable scoring rules with a personal ignore list that learns from my corrections.
ClientDaria's Desk
RoleIdea · Product · Development
TimeframeBuilt in evenings · presented 17 Jun 2026
TeamIndependent product, pair-built with a coding agent
Main stagelive demo at AI Tinkerers Berlin, June 2026
Featured demoselected from hundreds of demos worldwide
( Product in motion )
See the working product, not a prototype.
46-second walkthrough · 2× speed
( The situation )
The real requests kept disappearing inside Slack.
My work arrived through direct messages, where real asks disappeared among greetings, notifications, and conversation. I needed one reliable place to capture every request without sending private messages to another cloud service.
( My ownership )
One owner across the full cycle.
The case is valuable because the work stayed connected from the first design decision through implementation and iteration.
Designed the board, cards, connections, due dates, themes, and completion feedback.
Built the application with Python, Flask, SQLite, and the Slack Web API.
Developed a small scoring classifier and a feedback-driven ignore system instead of calling an LLM.
Kept processing local, stored the Slack token in Keychain, and presented the working product publicly.
( How the system worked )
Capture. Classify. Learn. Keep local.
The chapters follow the product from noisy Slack messages through deterministic classification, local organization, and public proof.
( 01 · Capture )
Pull work requests out of the inbox before they disappear.
A read-only Slack sync brings potential requests into one local workflow. The access token stays in macOS Keychain, and launchd can run the sync automatically each morning. The tool meets work where it already arrives instead of asking people to adopt another intake process.
- Read-only Slack Web API
- Token in Keychain
- Automatic morning sync

( 02 · Classify )
Score request signals with rules anyone can inspect.
A roughly two-hundred-line Python classifier scores each message. Request phrases, deadlines, work terms, questions, and pins add points; greetings and compliments subtract points or are discarded. A message becomes a task only when it clears the threshold and contains a real ask signal.
- Readable scoring rules
- ~200 lines of Python
- No LLM classification
“Can you tighten the deck cover by EOD?”
Question mark+2
Ask phrase · can you+3
Work noun · deck+2
Useful message length+1
( Selected live rules )
ASK_PATTERNScan you · please · quick review · by EOD
DESIGN_NOUNSdeck · slide · icon · homepage
GREETING_ONLYhello · thanks · okay · cool
COMPLIMENT_PATTERNSlooks great · love this · nailed it
( 03 · Learn )
Let corrections teach the tool my personal noise.
When I mark a card “Not a task,” the complete message is saved to an ignore list in SQLite. Future messages with substantial word overlap are skipped. The classifier rules remain fixed, while this personal layer grows one correction at a time.
- Human feedback
- SQLite ignore list
- Similar-message matching

( 04 · Organize )
Turn scattered messages into a board that feels alive.
Requests become draggable cards on an infinite canvas. Color, due dates, connections, light and dark modes, glowing new tasks, small jokes, and completion feedback make the board useful without turning it into another heavy project-management system.
- Infinite canvas
- Draggable cards
- Useful daily feedback

( Interaction details )
Small signals make the system feel alive.
( Attention )
A task signals that it is still new.
A soft glow marks what still needs attention without adding another notification.
( Completion )
Finishing the work earns a small salute.
When a group is complete, the board answers with a brief celebration before settling down.
( 05 · Protect )
Keep the architecture small, readable, and local.
Python and Flask run the local server, SQLite stores the tasks and ignore list, and one HTML file with Vanilla JavaScript powers the interface without a framework or build step. Slack requires a network sync, but classification makes zero model calls and message content is not sent to an external AI service.
- Flask + SQLite
- Vanilla JavaScript
- Zero model calls
Small files → local processing → readable system
( 06 · Share )
Take a private side project onto a public stage.
I demonstrated the working product at AI Tinkerers Berlin, including the Slack sync, classifier, database, and live board. It was later hand-selected from hundreds of eligible demos worldwide as a featured project.
- Main-stage demo
- Berlin · 17 Jun 2026
- Global featured selection

( What changed )
The best AI decision was knowing where not to use AI.
An agent helped me build the product, but transparent rules made the product itself faster, private, and easier to correct.