Quick replies for Cliq users to answer in one shot, mostly suggestive actions. This is a prototype to experiment with a rule-based approach.
No history yet.
Admin access · 4-digit PIN
dataset.json, which is what you want when QA-ing hundreds of phrasings by hand. The whole thing rests on three ideas.byeee → bye), drop stopwords, lightly stem the rest (ing/ies/ed/s/ly), with a carve-out so boxes/catches aren't mangled.```code``` block, a URL, a short bare affirmation (sure, done...) matched as the whole message, and — only if nothing else matched — a bare time like "4 pm?". @mentions are detected separately and can attach an "Open X's chat" action to any message.trigger plus keywords). A phrase matches only if every one of its significant tokens appears — order doesn't matter. The most-specific matching phrase (most tokens) wins; ties go to whichever rule is defined first.exclude idiom list, and against recap detection (its own words in past tense, or "had a meeting"/"went to"). A live signal (?, "you", "let's", "can we") overrides the recap rejection.tomorrow...) and time (3 PM, half past 3, noon...) are pulled out and combined into {when} for templated replies.positive/negative/ask — never two from one), then a mood-matched filler tops up any gap. A reply keeps its baked-in emoji only if the incoming message used one.Before adding any keyword phrase, run it through stopword removal and stemming in your head. "whats up" reduces to just ["what"] (up is a stopword) — as a keyword that matches any message with the word "what". Same trap: "works for you" → ["work"], "on leave" → ["leave"], "my bad" → ["bad"]. If a phrase collapses to one common word, find a safer multi-token phrasing, or add a targeted exclude regex for the bad pattern rather than dropping the coverage entirely.
fillerMood just picks which pool of fillers to draw from, so the padding matches the rule's tone. Optional; defaults to neutral.| neutral | Reacting to being informed. e.g. "Noted, thanks." / "Sounds good." |
| warm | Friendlier acknowledgement. e.g. "Thanks for letting me know!" |
| casual | Light banter, nothing reported. e.g. "Ha, fair enough." / "Good stuff!" |
| empathetic | Bad news / sympathy. e.g. "Here if you need anything." |
| celebratory | Good news / wins. e.g. "That's fantastic!" / "Wonderful news!" |
| closure | Wrapping up. e.g. "Take care!" / "Have a great one!" |
call, meeting, reminder, open-chat, share_slots, react. Only id, trigger and stances are required; everything else is optional. Slots {when}, {day} and {time} in a variant are filled from the extracted entities (or a safe default when the message had none).