App.ly
A Discord bot for posting and tracking job opportunities - every listing becomes a trackable post, with live stats and a leaderboard derived entirely from the channel's own message history.
Why it exists
In a career-focused Discord server, job and internship postings get shared constantly - and immediately buried in chat, with no way to tell who applied, who's posting the most, or how you stack up against everyone else doing the same job hunt. App.ly turns every posting into a trackable object instead of a message that scrolls away.
What /postjob actually posts
An example of the real output shape - same fields, same color, same auto-reaction, just placeholder values:
New Job posted by @you - Aug 17, 2026
Software Engineer Intern
Company: Acme Corp
Employment Type: Internship
Location: Remote
Link: acme.com/careers/1432
Job ID: 1432
Term: Fall 2026
✅ Please react with a check mark if you applied to this job as well.
That plain-text opening line - "New Job posted by @user" - isn't just decoration. Every other command re-parses it later with a regex to figure out who posted what, since nothing about a job post is stored anywhere except that message itself.
No database - just the channel's own history
/stats, /leaderboard, and /rivals all do the same thing under the hood: fetch the last 100 messages in the channel, keep only the bot's own job-post messages, then read each one's real ✅ reactions to count applicants - explicitly excluding the poster's own reaction so posting a job can't count as applying to it. From there it's all derived live: posts per week, a longest-streak count (checking for exact one-day gaps between sorted post dates), the most active poster and reactor, and time since the last post.
The leaderboard
Same medal format the real command outputs, filterable by alltime, lastweek, or today:
🥇Member A
14 total job posts · 22 reactions · 1.57 Avg Reactions/Post · 3.20 Avg Posts/Week
🥈Member B
9 total job posts · 11 reactions · 1.22 Avg Reactions/Post · 2.05 Avg Posts/Week
🥉Member C
6 total job posts · 8 reactions · 1.33 Avg Reactions/Post · 1.40 Avg Posts/Week
/rivals is the same leaderboard from a narrower angle - instead of the whole ranked list, it just shows whoever's directly above and below you, a smaller nudge to keep posting rather than a wall of names.
A solo build in Node.js and discord.js. The zero-database design is a deliberate tradeoff, not an oversight - no infrastructure to host or pay for, at the cost of only ever seeing as far back as the channel's last 100 messages. Prune the channel, and that history is just gone.