# 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.

Type: project

Published: 2026-08-12

[Original page](<https://artlu.ai/project/push-notifications-and-characters-who-message-first-loopi>)

[Browse this group](<https://artlu.ai/ai/groups/loopi.md>)

Parent project: Loopi

Recorded status: launched

Updated: 2026-09-16T19:16:15.049Z

Technologies: TypeScript, Expo, Fastify, BullMQ, Redis, Postgres

## Details

**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.

## Links

[Site or demo](<https://aidate-app.pages.dev/>)


Status and dates describe the published record, not a recent test of an external service. Missing details are not inferred. Public links do not imply an open-source licence or permission to reuse material.

[Directory](<https://artlu.ai/llms.txt>)
