Looking To Buy
Automated buy request matching system with notifications, expiry management, and per-channel configuration.
The Looking To Buy (LTB) system lets members post buy requests that are automatically matched against trade listings. When a seller posts an item that matches an active LTB entry, the buyer is notified — connecting supply with demand without manual searching.
LTB configuration is managed from the web dashboard under the LTB page. Admins can configure channels, limits, validity periods, and notification preferences from the browser.
How It Works
A buyer posts an LTB request
A member posts a message in a designated LTB channel describing what they want to buy. The bot parses the request and creates an LTB entry with keywords extracted from the message.
The entry is indexed and tracked
Zagreus stores the LTB entry with the buyer's ID, keywords, channel, timestamp, and expiry date. The entry is active immediately and begins matching against new trade posts.
A seller posts a matching trade
When a trade is posted in any monitored trade channel, Zagreus compares the trade content against all active LTB entries. If keywords match, a notification is triggered.
The buyer is notified
The buyer receives a notification (DM, channel ping, or digest — depending on their preference) with a link to the matching trade post. They can then contact the seller directly.
The entry expires or is cancelled
LTB entries have a configurable validity period. Before expiry, the buyer receives warnings. They can renew the entry to extend its life or cancel it manually if they have found what they need.
Channel Configuration
Each LTB channel can be independently configured with the following settings:
| Setting | Description | Default |
|---|---|---|
| Max active per user | Maximum number of active LTB entries a single user can have in this channel | 5 |
| Default validity | How long an LTB entry remains active before it expires | 30 days |
| Min account age | Minimum Discord account age required to post an LTB entry | None |
| Min server age | Minimum server membership duration required to post an LTB entry | None |
Setting reasonable limits on active entries per user prevents spam and ensures the matching system remains performant. For large servers, consider a lower limit (3-5 entries).
Notifications
Zagreus supports multiple notification types to ensure buyers never miss a match.
Instant Notifications
When a matching trade is posted, the buyer is notified immediately:
- A message is sent in the LTB channel (or a configured notification channel) mentioning the buyer
- The notification includes a direct link to the matching trade post
- The matching keywords are highlighted so the buyer can quickly assess relevance
Digest Notifications
For users who prefer fewer interruptions:
- Matching trades are batched and sent as a periodic digest
- Digest frequency is configurable (hourly, daily)
- The digest includes all matches since the last digest, grouped by LTB entry
DM Opt-In
Buyers can opt in to receive match notifications via DM:
- DM notifications are sent in addition to (not instead of) channel notifications
- Users can toggle DM notifications on or off at any time
- If the bot cannot DM the user (DMs disabled), the notification falls back to channel-only
Priority Alerts
For high-demand items, buyers can mark an LTB entry as priority:
- Priority entries trigger notifications even if the buyer is offline
- Priority matches are highlighted in digests
- Limited to 1 priority entry per user to prevent abuse
Entry Management
User Cancellation
Buyers can cancel their own LTB entries at any time:
- Reply to the original LTB message with a cancellation command
- The entry is marked as cancelled and stops matching
- Cancelled entries are retained in the database for audit purposes but are no longer active
Renewal
Before an entry expires, buyers can renew it to extend the validity period:
- Renewal resets the expiry date to a new full validity period from the current date
- The entry retains its original keywords and matching history
- Buyers receive a confirmation when renewal is successful
Auto-Expiry Warnings
Zagreus proactively warns buyers before their LTB entries expire:
| Warning | Timing | Description |
|---|---|---|
| First warning | 3 days before expiry | A DM or channel notification reminding the buyer that their entry will expire soon. Includes instructions for renewal. |
| Final warning | 1 day before expiry | A more urgent notification that the entry expires tomorrow. Prominently features the renewal option. |
After expiry:
- The entry is marked as expired and stops matching
- The buyer is notified that the entry has expired
- Expired entries can be viewed in history but cannot be renewed — the buyer must create a new entry
Expired entries are permanently deactivated. If a buyer misses the renewal window, they need to post a new LTB request. Encourage members to act on expiry warnings promptly.
Matching Details
Keyword Extraction
When an LTB entry is created, Zagreus extracts keywords from the message:
- Common stop words (the, a, an, is, for, etc.) are removed
- Game-specific terminology is recognized and preserved
- Price ranges and conditions (e.g., "under $50", "mint condition") are parsed as filters
- The buyer can manually specify keywords if the automatic extraction is insufficient
Match Scoring
Not all matches are equal. Zagreus scores matches based on:
- Keyword overlap: How many of the LTB keywords appear in the trade post
- Specificity: More specific matches (exact item names) score higher than broad matches
- Recency: Newer trade posts are slightly preferred over older ones
Only matches above a configurable score threshold trigger notifications, reducing false positives.
Deduplication
To avoid notification fatigue:
- The same trade post is never matched to the same LTB entry twice
- If a seller edits their trade, it is re-evaluated but only triggers a new notification if the match score increased significantly