CRUMB a card from devarno-cloud

Gamification: Pawprintz, Treatz & Niblz

smo1 beginner 5 min read

ELI5

SMO1 turns link management into a game by giving every link three scores and a mood label. Pawprintz measures how popular and recent the link is (like a thermometer). Treatz measures how much shorter the link is than the original URL (like a compression trophy). Niblz is the raw number of characters saved (like counting coins). The mood label tells you if your link is energetic, sleepy, or somewhere in between.

Technical Deep Dive

Scoring Metrics

Pawprintz (Activity Engagement, 0–100)

Pawprintz decays over time like radioactive material — links that were popular last month but silent this week lose heat.

recency = e^(-0.03 × daysSinceLastClick) // half-life ≈ 23 days
base = min(60, 10 × ln(1 + totalClicks)) // log-scaled historical volume
bonus = min(40, 8 × ln(1 + clicks7d)) // recent activity boost
pawprintz = clamp(0, 100, round(base × recency + bonus))
ComponentMax contributionDriver
base60 pointsTotal lifetime clicks (logarithmic)
bonus40 pointsClicks in the last 7 days (logarithmic)
recencyMultiplierDays since last click (exponential decay)

Example: A link with 100 total clicks and 20 clicks this week, last clicked 3 days ago:

  • recency = e^(-0.03 × 3) ≈ 0.914
  • base = min(60, 10 × ln(101)) ≈ 46.0
  • bonus = min(40, 8 × ln(21)) ≈ 24.3
  • pawprintz = round(46.0 × 0.914 + 24.3) = round(66.3) = 66

Treatz (Compression Efficiency, 0–100)

treatz = round( (originalLength - shortLength) / originalLength × 100 )

A 120-character URL shortened to smo1.io/abc123 (16 chars):

  • treatz = round((120 - 16) / 120 × 100) = 87

Niblz (Raw Compression, unbounded)

niblz = originalLength - shortLength

Same example: niblz = 120 - 16 = 104 characters saved.

Status is computed from clicks_7d and last_clicked_at:

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#e8f4f8', 'primaryTextColor': '#2d3748', 'primaryBorderColor': '#90cdf4', 'lineColor': '#718096', 'secondaryColor': '#f0fff4', 'tertiaryColor': '#fefcbf'}}}%%
flowchart TD
A[Compute status] --> B{"total_clicks == 0 ?"}
B -->|Yes| C["🆕 new"]
B -->|No| D{"clicks_7d > 100<br/>or<br/>(clicks_7d > 20<br/>and last_click &lt; 24h) ?"}
D -->|Yes| E["⚡ zoomies"]
D -->|No| F{"clicks_7d > 20<br/>or<br/>(clicks_7d > 5<br/>and last_click &lt; 48h) ?"}
F -->|Yes| G["🎾 playful"]
F -->|No| H{"clicks_7d > 5<br/>or<br/>last_click &lt; 72h ?"}
H -->|Yes| I["🔍 curious"]
H -->|No| J{"last_click &lt; 168h ?"}
J -->|Yes| K["😴 sleepy"]
J -->|No| L["🍞 loaf"]
StatusConditionEmojiProfessional equivalent
new0 total clicks🆕New
zoomies>100 clicks/week OR (>20/week + <24h)Viral
playful>20 clicks/week OR (>5/week + <48h)🎾Active
curious>5 clicks/week OR <72h since click🔍Warm
sleepy<168h (7 days) since click😴Dormant
loafEverything else🍞Inactive

Metric Comparison

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#e8f4f8', 'primaryTextColor': '#2d3748', 'primaryBorderColor': '#90cdf4', 'lineColor': '#718096', 'secondaryColor': '#f0fff4', 'tertiaryColor': '#fefcbf'}}}%%
quadrantChart
title Pawprintz vs Treatz — Link Health Matrix
x-axis Low Treatz --> High Treatz
y-axis Low Pawprintz --> High Pawprintz
quadrant-1 Popular & Efficient
quadrant-2 Popular but Long URL
quadrant-3 Unpopular & Long URL
quadrant-4 Unpopular but Efficient
"Viral short link": [0.9, 0.95]
"Viral long link": [0.9, 0.3]
"Dead short link": [0.1, 0.9]
"Dead long link": [0.1, 0.2]

Key Terms

  • Pawprintz → 0–100 activity score combining historical volume, recent clicks, and recency decay
  • Treatz → 0–100 compression efficiency: how much shorter the link is than the original URL
  • Niblz → Raw character count saved by the short link (unbounded integer)
  • Recency decay → Exponential half-life factor (e^(-0.03×days)) that reduces pawprintz as a link goes stale
  • zoomies → Highest activity status; named after the burst of energy cats exhibit
  • loaf → Lowest non-zero activity status; named after a cat lying in a bread-loaf position

Q&A

Q: Why logarithmic scaling for pawprintz base and bonus? A: Logarithms prevent runaway scores. Without them, a link with 10,000 clicks would be unreachably high compared to a link with 100 clicks. Log scaling keeps the game fair for new links.

Q: Can pawprintz increase without new clicks? A: No. Because of recency decay, pawprintz strictly decreases when there are zero clicks. The only way to raise it is to generate new traffic.

Q: What is the maximum possible treatz score? A: The theoretical maximum approaches 100 as the original URL length approaches infinity and the short URL stays fixed at ~16 characters. In practice, treatz above 90 is excellent.

Q: Why are statuses named after cat behaviours? A: SMO1 has a cat-themed personality layer (see smo1-019). Statuses translate to professional terms in “professional mode,” but the canonical names are cat-themed to match the brand.

Examples

Think of pawprintz like a campfire:

  • Base score is the size of the wood pile you started with
  • Bonus is the fresh kindling you added this week
  • Recency decay is the wind and rain that slowly cools the embers
  • A big fire with no new wood eventually goes out (high base, zero bonus, low recency)
  • A small fire with constant new wood stays warm (low base, steady bonus, high recency)

Treatz and Niblz are like packing a suitcase:

  • Treatz is the percentage of space you saved by rolling clothes instead of folding
  • Niblz is the actual number of extra souvenirs you can fit because of the space saved

neighbors on the map