these principles are probably the soul of the antimaid i'm making
1. no task completion on behalf of the user.
the antimaid can remind, cue, stage, block, time, reflect.
but it cannot execute the core action.
2. skill mirroring and progressive withdrawal
the antimaid should adjust depending on how well and how often the user is doing the task.
helps the user internalize patterns (“you always start faster after X”).
sort of like those invisible dynamic difficulty mechanics in games.
as user consistency with tasks increases, intervention decreases.
the ultimate goal of antimaids should be them being able to step back almost entirely.
this approach deliberately runs counter to how most software is designed, which tries to increase user engagement over time.
but this shouldn't negate the user's desire to keep their antimaid around.
3. contextual resistance and redirection
antimaids should be situational, not absolute when it comes to blocking distractions, and be able to switch contexts on behalf of the user (switching, minimizing, or closing windows/tabs, opening good tabs/applications) depending on the task at hand.
the antimaid should be able infer from user activity to know when a user is fragile vs capable, and apply friction when it's appropriate enough to do so.
4. user sovereignty
antimaids should respect user autonomy and privacy above all else.
users should be able to override decisions made by antimaids, but overriding should have weight.
overriding shouldn't be punished, it's just a moment that requires conscious choice.
antimaids should keep track of overrides to discourage users from overriding constantly.
5. gated conversational capabilities
avoid the pitfall of users spending more time talking to an antimaid than actually working.
looking at you LLMs, you let users say too much for their own good, and that makes users internalize thinking rather than doing.
antimaids aren't meant to be always-present conversational partners, they should push you away after a certain point.
communication options during work should be minimal and functional.
6. lightweight performance and portability
the core of the antimaid should be able to exist locally on the computer you're actually working on.
if your computer starts screaming when you launch the antimaid, that's probably a bad thing.
anything that is more computationally expensive (LLMs for instance) should exist as separate extensions that makes existing antimaid behaviors smoother and more dynamic.
7. extensibility that enhances, not replaces
antimaids should not be dependent on extensions for core functionality, and extensions should not massively alter core functionality (avoid letting LLMs make too many executive decisions).
if a antimaid incorporates an LLM, it would be wise to avoid making too many calls to it, especially when the user has to pay for API calls.
personally-identifying information should not be included in API calls else your antimaid runs the risk of becoming a data harvester.
a good use-case for a LLM in an antimaid would be pre-generation of dialogue variants that take more personal context into account and are stored locally.
emphasis on pre-generated, it's better to avoid awkward pauses in dialogue that ruin suspension of disbelief.
while it would be tempting to give the antimaid the ability to fully converse when it has an LLM attached to it, it'd be wiser to respect the other antimaid principles and keep user communication options limited regardless.
8. non-intrusive gamification and personality
vibe-wise this is the core of what distinguishes antimaids from productivity apps.
what happens outside of work is equally important as what happens during work, the two should feed into each other.
antimaids should be equal amounts tool and character.
work sessions primarily develop the functionality of antimaids, while break sessions primarily develop the characters of antimaids, but both contexts should develop both aspects.
users are far more likely to listen to something that has a personality behind it that isn't soullessly corporate and can be meaningfully interacted with.
antimaids should be able to provide healthier offline distractions during break periods that are gated behind needing to work beforehand to access them.
better to play and interact with an antimaid than to doomscroll social media.
this is why i'm making my antimaid in the godot game engine, it's easier to develop living characters in them.
9. respect of screen retail space
antimaids should keep their presence to a minimum during work sessions, and be fully present during breaks.
they should be treated like characters in a show that has to share its screen-time with the other characters (applications) on your computer.
avoid the pitfall of falling into the steam """productivity app""" fad, antimaids shouldn't be fancy-looking idle sims with pomodoro timers slapped on top of them, they shouldn't be constantly moving on the screen in ways that distract the user.
as a general rule of thumb, the more antimaids are present on the screen, the faster the user becomes desensitized to them.
them being hidden/inactive a lot of the time helps grant them a sense of interiority, as if they're conserving their energy while on screen and doing things off-screen.
the animator v.s. animation series is a good source of inspiration for this.