artlu.ai
100 days. 100 features. Still building.
Just AI and an internet connection.
day 226 · 119 shipped
← all projects
day 148 · aug 12, 2026 · launched

push notifications and characters who message first — Loopi

Characters open conversations on their own instead of only answering — with push notifications, a separate time of day per conversation, and a limit so the whole roster can't text you at once.

What is it?
The change that made the app reach out rather than sit and wait.

What it does
- A background worker decides when a character should message first, and a push notification delivers it
- Each conversation gets its own time of day, so characters don't all arrive in the same minute
- At most one character opens a conversation in any two-hour window
- Daily chat limits are tracked so the feature can't run away with the bill
- A reminder that you haven't replied reaches a character where she actually reads it, instead of leaking into the chat as her own note to herself

How it works
First messages are written for a conversation that hasn't happened yet, which is a different job from replying — an early version wrote openers as if the person had already messaged and the character had already answered. The opener path now knows it is first. Push opens are counted once each, and a cold-start tap navigates to the right conversation.

Built with
TypeScript, Expo push, Fastify with BullMQ workers, Redis for the daily caps, Postgres.

stack

TypeScriptExpoFastifyBullMQRedisPostgres

screenshots