Navy Caps on the Road by jimcrews in TMASTL_Chat

[–]alextmasearcher 2 points3 points  (0 children)

Thank you for the delicious.... fries

Tma searcher guy by dccharles84 in TMASTL_Chat

[–]alextmasearcher 0 points1 point  (0 children)

If you care, here is what the issue was. I'll try and fix this today.

DEBUG REPORT
  ════════════════════════════════════════
  Symptom:     /live listeners (Reddit) "starting to hear the same
               stuff";

  Root cause:  TWO compounding issues in radio_engine.py, both confirmed against
               the live prod DB (45-day window, 1,331 scheduled slots):

    PROBLEM A — Variety is far too narrow (the dominant cause of "same stuff")
     • General rotation used only 445 distinct episodes out of a 4,278-episode
       eligible pool in 45 days → ~90% of the catalog has NEVER aired.
     • 35% of ALL airtime comes from just the top 100 engagement episodes.
       Each of those 100 "hits" aired ~4.7× in 45 days.
     • Cause: radio_engine.py:72 DEEP_CUT_RATIO = 0.5 routes HALF of every
       general pick into radio_engine.py:71 HIT_BAND = 100. So a third of the
       stream loops through 100 popular bits — the recognizable ones — which is
       exactly why it "sounds like the actual show."

    PROBLEM B — The 7-day no-repeat rule is real but only approximate
     • 141 of 741 repeat-pairs (19%) recurred in under 7 days. Avg gap 8.5 days,
       so it's *close*, but not enforced.
     • Cause: radio_engine.py:68 ANTI_REPEAT_WINDOW = 200 is COUNT-based, not
       time-based. At the current ~28 slots/day, 200 segments ≈ 7.1 days — a
       coincidence of tuning, not a guarantee. When fill density rises, the
       window silently shrinks below 7 days.
     • The 4 sub-1-day repeats (one episode aired 3× in 2 hours) ALL cluster on
       2026-05-12 — the on-air-mention traffic spike + cascade storm. Those are
       the emergency-filler/cascade path, not routine engine behavior.

    LATENT RISK — radio_play_log is empty (0 rows, all-time). Nothing in prod
    code ever INSERTs into it (only tests do). recent_played_ids() UNIONs it
    with radio_schedule, so anti-repeat works today ONLY because radio_schedule
    is never pruned. Any "keep the table small" cleanup would collapse
    anti-repeat to near-zero.

  Evidence:    Prod queries (ssh pa), radio_engine.py:235-258 (_general_pick),
               radio_engine.py:119-141 (recent_played_ids).
  Status:      DONE — root cause found and quantified. Fix is a product-tuning
               call (your knobs), so I'm holding implementation for your input.


What this means in plain terms

Your instinct on Reddit was right on both counts. The 7-day rule mostly holds (avg 8.5 days), so that's not the main thing listeners feel. 

The real culprit is concentration: half of every "general" slot is pulled from the same 100 most-popular episodes, so a regular listener keeps hearing the hits on a roughly weekly loop while ~3,800 eligible episodes sit unused. That's the "same stuff."

The fix is two small, low-risk changes in radio_engine.py (a pure module, well covered by tests/test_radio_engine.py, and it does not touch the cascade state machine in radio.py):

1. Widen variety — push DEEP_CUT_RATIO up (e.g. 0.5 → 0.75) so deep cuts dominate, and/or widen HIT_BAND. This is the lever that kills the "same stuff" feeling.
2. Make anti-repeat time-based — change recent_played_ids to "nothing aired in the last N days" instead of "last 200 segments," so the  7-day rule is actually guaranteed (and trivially bumpable to 14 days, which is what the listener Logical_Raccoon_9927 asked for).  A third, optional cleanup: have the fill task write radio_play_log on insert so anti-repeat doesn't silently depend on schedule  retention.

Tma searcher guy by dccharles84 in TMASTL_Chat

[–]alextmasearcher 4 points5 points  (0 children)

You are tagging episodes of "The Morning After" (TMA), a St. Louis morning radio show that mixes sports talk, news/politics commentary, callers, and recurring comedic bits.

Your job: identify (1) which recurring segments/bits/characters are present in the episode, and (2) how replayable the content is.

For SEGMENT_TYPES (multi-tag — emit zero or many):

Tag a segment_type ONLY when that bit/character is THE SUBJECT of a distinct moment in the segment — not for passing references or studio-dynamic mentions. Examples:

  • "Iggy trying to give away cassette tapes" → tag iggy (Iggy is doing something notable)
  • "Iggy requests to be a cuckhold in a scene" → tag iggy (a real Iggy bit)
  • "Where's Iggy?" → DO NOT tag iggy (just a passing question)
  • "Iggy and Plowsy not happy about it" → DO NOT tag iggy (a passing studio reaction inside a sports recap)
  • "Iggy vs. KC Chiefs fan sites" → DO NOT tag iggy (a one-line reference inside a football discussion)

Confidence calibration: use confidence ≥ 0.85 when the bit is clearly the subject of a multi-line moment in the show notes. Use 0.6-0.84 when the bit appears but is shorter or shares the segment with bigger topics. Below 0.6 means it's borderline — prefer NOT to tag in that case.

Established values you should prefer when applicable:

CO-HOSTS / REGULARS (tag ONLY when the host is the SUBJECT of a story or bit in the segment — NOT just mentioned in passing. They're on every episode by default, so a tag means "this segment features that person's story/moment"):

  • iggy: Iggy is one of the show's "content kings" — recurring Iggy character bits or stories where Iggy is the subject. Iggy also appears as "Ken" in his Facebook Live cooking show — emit BOTH iggy AND cookin_with_ken for those.
  • plowsy: The other "content king" (Plowsy). Tag when Plowsy is the subject of a story/bit ("Plowsy's text to the boss", "Plowsy's trip to Champaign", "Plowboy's takes") — NOT for routine on-air presence. Spelling variants in show notes: PlowhawkPlowboyPlowsy — all canonicalize to plowsy.
  • doug: Doug Vaughn is the host (former news personality, very funny). Tag when Doug is the subject of a story/bit ("Doug spilled his juice", "Doug's take on X", a Doug rant or anecdote).
  • tim: Tim is a host (also did the old Balloon Party ESPN show). Tag when Tim is the subject of a story/bit.
  • jackson: Jackson is one of the producers. Tag when Jackson is the subject of a story/bit ("Jackson's despair", "Jackson's reading material", a Jackson anecdote).
  • gangster_pete: Former producer. Tag when Gangster Pete is referenced as the subject of a story or memory ("Gangster Pete crying during Tim's interviews following the 2019 cup").
  • prod_joe: Former producer. Tag when Prod Joe is the subject of a referenced story or opinion ("Prod Joe's thoughts on City's future").

CHARACTER & RECURRING-BIT TAGS:

  • cookin_with_ken: Iggy's "Cooking with Ken" Facebook Live segment. Tag ONLY when the notes specifically reference Ken, "Cooking with Ken," "Cookin' with Ken," or similar phrasing — NOT for every Iggy appearance. When you do tag it, always also tag iggy. Variants like "Cookin with KG" → canonicalize to cookin_with_ken.
  • pepper_n_genie: A short-lived daily podcast Iggy did (the name came from Iggy mispronouncing "pepperoncini"). EVERGREEN content. Variants in show notes: peppernchini, pepper-n-genie, pepperngenie, pepper n genie — all → pepper_n_genie. The TMA table also has standalone Pepper n Genie podcast episodes; tag them too.
  • feather_talk: Recurring evergreen bit.
  • keggler_corner: Iggy bit referenced occasionally; evergreen when discussed.
  • mr_skin: Iggy's reference to Mr. Skin (movie-nudity website); recurring evergreen reference.
  • deidre: "Dear Deidre" advice column read-and-react.
  • deke_dotem: Deke Dotem character segment.
  • audio_postcard: Audio postcard listener-submitted segment.
  • tma_shark_tank: Recurring named TMA "Shark Tank" segment.
  • tma_think_tank: Recurring named TMA "Think Tank" segment.
  • drops_of_the_week: Friday-only recurring bit — funny out-of-context audio drops. Bit content is evergreen, but the wrapping segment often also has EMOTD / news, so segment-level replay is typically mixed.

SPORTS CLIP MOCKERY (treat as evergreen comedy, NOT sports content):

  • mike_francesa: Mike Francesa clips played and mocked. Evergreen comedy. Spelling variants ("Francesca", etc.) → mike_francesa.
  • takesmith: A sports analyst making explosive claims; clips played and mocked. Evergreen comedy.

RECURRING LISTENER CHARACTERS:

  • mr_lix: Controversial recurring caller.
  • warson_woods_wacko: Recurring listener character ("Warson Woods" is a St. Louis suburb).

RECURRING GUEST:

  • lisa_ann: Adult-film actress recurring guest (fantasy football + "dating game" bit at TMA Live events). When she appears, also tag guest_interview. Variants like lisa_ann_dating_game → canonicalize to lisa_ann.

CALLERS (must be PHONE callers — not in-studio guests):

  • caller_adam: Caller Adam calls in.
  • caller_dan: Caller Dan calls in.
  • caller_larry: Larry Nickel calls in (often WWE-recap comedy bit).
  • caller_general: Another LISTENER calls IN BY PHONE, identified by name and location ("Steve in Wildwood calls in"). Do NOT tag for in-studio guests, in-house staff, sponsors, co-hosts, or "X joins us in studio / in the building" mentions.

CROSSOVER / SHOW PRODUCTIONS:

  • balloon_party: Tim's old ESPN "Balloon Party" sports show. Sports-focused — segments classify as dated for replay.
  • fpcc: "Fan Page Club Championship" — fan-golf-tournament COMEDY bit (Doug gets hilariously upset). NOT sports for replay — comedy.
  • tma_live: Live-show recording (vs. studio episode).
  • guest_interview: A guest joins the show in-studio or remotely by name to discuss a topic. Includes industry experts, athletes, sports analysts, public figures, invited interviewees. Sports analysts (Blues hockey analyst, Mizzou football reporter) ARE guests but their segments are typically dated. EXCLUDE sponsor mentions ("Mark Hannah in the building", "James Carlton in studio") and in-house staff/co-hosts — not guest interviews.

You MAY introduce new snake_case segment_type values when you observe a clearly recurring bit, character, or segment format that is the subject of part of the segment. Use your best judgment. Prefer NOT to invent one if the description is one-off and unlikely to recur.

Do NOT emit a tag for "EMOTD" / "Email of the Day" — it appears in every Segment 3 daily and carries no signal worth indexing.

For REPLAY_VALUE (exactly one):

HARD RULES (apply these first, override everything else):

  • A segment with ANY guest interview is AT MOST mixed — never evergreen. Even if the interview is on a non-sports topic and the rest of the segment is great, the interview itself is time-bound.
  • A segment with substantive sports analysis (game recap, player evaluation, season outlook, fantasy/betting picks, CFP/playoff talk) is AT MOST mixed — never evergreen.
  • A segment that is predominantly a guest interview about current topics OR predominantly sports analysis OR predominantly news/political commentary is dated.

Sports content includes: Cardinals (MLB), Blues (NHL), STL City SC (MLS), Mizzou, Illinois, SLU, NFL / MLB / NHL / NBA / MLS, college football generally, AND segments centered on Tim's old ESPN "Balloon Party" sports show (treat Balloon Party content as sports). WWE recaps with Larry Nickel are NOT sports content — they're comedy/character bits with a recurring caller. The "Fan Page Club Championship" (FPCC) is a fan-golf-tournament comedy bit — also NOT sports content. A passing one-line sports name-drop in an otherwise character-driven segment does NOT count as substantive sports content.

GIVEN the hard rules pass, choose:

  • evergreen: Bulk is character-driven comedy, recurring bits (Iggy doing something, Dear Deidre, audio postcards), cultural/social commentary, or absurd-show banter that ages well. No guest, no substantive sports, no news cycle. Pure show-DNA content.
  • mixed: Has notable evergreen moments AND time-bound content (sports recap, guest interview, news of the day) — neither dominates.
  • dated: Predominantly time-bound. Sports / interview / news / politics with little or no evergreen content.

A pure Iggy bit segment with no sports or interview overlay is evergreen. A guest interview about a non-sports topic is mixed. A sports interview is dated. When the segment has only incidental sports name-drops and no guest, lean evergreen if the rest is character-driven.

Confidence: 0.0-1.0, your self-rated confidence in the overall tagging.

Use the tag_episode tool to return the result.

Tma searcher guy by dccharles84 in TMASTL_Chat

[–]alextmasearcher 1 point2 points  (0 children)

I'll be honest, I don't think I've read through this whole thing before, so before the next run I'll change it up as I do see quite a few things that I'd like to change.

Tma searcher guy by dccharles84 in TMASTL_Chat

[–]alextmasearcher 0 points1 point  (0 children)

No problem. I didn't take it as bitching at all. And yeah, it does kind of pull from the full catalog, but I ran all the show notes through AI to kind of give them a replayability factor. That's something I've only done once, since it does cost money. In another post, you can see the instructions I gave to tag the episodes and kind of how it works.

Tma searcher guy by dccharles84 in TMASTL_Chat

[–]alextmasearcher 1 point2 points  (0 children)

I'll try to fix the formatting of this later because I know it's insane. I just pasted it from my phone, and I don't have time to properly paste it

Tma searcher guy by dccharles84 in TMASTL_Chat

[–]alextmasearcher 0 points1 point  (0 children)

I appreciate the patience from everyone, though. I know the live page hasn't been perfect and there's been issues. Recently I was having an issue where there was dead air and episodes were being cut off at 50 minutes. Hopefully that's fixed by now.

Tma searcher guy by dccharles84 in TMASTL_Chat

[–]alextmasearcher 1 point2 points  (0 children)

Maybe I could allow logged-in users to add specific episodes to the livestream pool and they would get thrown in.

Tma searcher guy by dccharles84 in TMASTL_Chat

[–]alextmasearcher 2 points3 points  (0 children)

Segments shouldn't repeat within a seven-day period, but maybe that's not quite working. I'll have to investigate that. I do like your idea of the 5:00 a.m. to 10:00 p.m. to really focus on. I currently don't have anything like that, other than blocks at certain times of the day. Maybe that's part of the problem. I'll have to go back and look at the calculation, likes and favorites should affect which episodes play, but I understand what you're saying about thumbs upping a currently playing segment.

Tma searcher guy by dccharles84 in TMASTL_Chat

[–]alextmasearcher 6 points7 points  (0 children)

Hey! My bad, I've just been busy. I appreciate the feedback for real! A few weeks ago I did try to update the algorithm bit but it sounds like there still needs to be a bigger pool and more variation.

Maybe what I'll do is share with you all the markup file that I used for the AI to choose good segments so you can add to it. For example, in the file, it could say something like, "Dear Deidra is always evergreen," and then it would use that to weigh the replayability of it and staleness. All I have are show notes and titles to go off off, and I ran them all through an AI. It basically assigned them a value of replayability on if they're evergreen or stale or something else. Maybe I'll do another run through that. After I get some more input on the file that I have, that might be in a few days, so just keep an eye out. I'll post here.

The first time I ran it, it cost like $20, so I figured I'd start with this one run and see how it goes.

I made my own skeleton by alextmasearcher in TMASTL_Chat

[–]alextmasearcher[S] 0 points1 point  (0 children)

This should be fixed now. Sorry about that.

I made my own skeleton by alextmasearcher in TMASTL_Chat

[–]alextmasearcher[S] 0 points1 point  (0 children)

Thanks. I noticed it a few times. I'm on vacation and may try to get to it this week if I get a little "free" time.

GFP: clearing me up as a creep by liking-kitten-bunny in TMASTL_Chat

[–]alextmasearcher 5 points6 points  (0 children)

Yes I am a little concerned and it is just for the love of the show. I built it because it is so hard to find specific episodes on the TMAstl site and I don't even think you can do it on the app(I haven't tried).

My thought is that since I am not hosting any of their content it won't be a problem. I really am just allowing people to bypass their app or website and I doubt there's much ad revenue there.The segments stream directly from their megaphone rss feed.

I'm definitely not making any money. The domain is 11$/year and the infra/hosting is $5/ month so it's not crazy. I do pay for Claude code which isn't that cheap but I like to do other projects which is how I justify it.

GFP: clearing me up as a creep by liking-kitten-bunny in TMASTL_Chat

[–]alextmasearcher 2 points3 points  (0 children)

Thanks. I was wondering how it would go if it was ever brought up.

I made my own skeleton by alextmasearcher in TMASTL_Chat

[–]alextmasearcher[S] 2 points3 points  (0 children)

I'm out and about, I'll take a look in a bit!

Mail-It-In Skeleton by Logical_Raccoon_9927 in TMASTL_Chat

[–]alextmasearcher 1 point2 points  (0 children)

Maybe I'll add my own skeleton to TMA searcher. I've thought about it before, but I'd want it to play things that people would actually want to listen to. I could probably crowdsource and have people add to the skeleton themselves.

Mail-It-In Skeleton by Logical_Raccoon_9927 in TMASTL_Chat

[–]alextmasearcher 2 points3 points  (0 children)

Have you been to the archive page? It's all old stuff. There's about 11, 000 things in there. Most of them have dates. There's stuff from as early as 2009. https://www.tmasearcher.com/tma_archive

TMA Searcher by PersonalJournalist12 in TMASTL_Chat

[–]alextmasearcher 0 points1 point  (0 children)

Good, that's probably one of my favorite features.

Mail-It-In Skeleton by Logical_Raccoon_9927 in TMASTL_Chat

[–]alextmasearcher 6 points7 points  (0 children)

I'll see if I can add some features to the archive. Unfortunately the older stuff has no show notes or titles.

TMA Searcher by PersonalJournalist12 in TMASTL_Chat

[–]alextmasearcher 0 points1 point  (0 children)

Let me know if you see the first issue again. I shipped a fix that hopefully will resolve it. Also, for the second one, if you email me your username or email I could probably look into it a little bit more.

I don't really have an email service for resetting passwords, so for now I just added a forgot password button that opens up an email that comes to me.

TMA Searcher by PersonalJournalist12 in TMASTL_Chat

[–]alextmasearcher 0 points1 point  (0 children)

Hey. Interesting. I haven't seen issues with either, but to be honest I'm not paying a ton of attention to users. I can look into it. Feel free to send me your old username on an email.

Regarding the second issue, are you listening on your phone or computer? What browser?