Holla at ya boy!
hello@worldoftim.com
Back

Vibe Coding a Digital Tim: Part 4 – Rethinking Digital Tim

Digital Tim has been live for a while now, and like most things you build and actually use, the cracks start to show pretty quickly. On the surface, things worked. People could ask questions, Tim would answer them, and everything technically functioned. But once I started looking a bit closer – especially at how the system handled time, memory, and growth – it was clear the foundations needed a rethink.
So this is a walk-through of how I got to Digital Tim 2.0, what was broken, and how the whole thing is now significantly smarter (and easier to live with).

The Original Setup (And Why It Wasn’t Enough)

Every interaction with Digital Tim was being saved to a database table on my NAS. That meant I could open MySQL Workbench and inspect what people were asking.

Technically fine. Practically… not great!

It required hopping between tools, manually poking around tables, and doing mental gymnastics to figure out usage patterns. No overview. No trends. No visibility. Worse still, time-based questions completely fell apart.

Ask something like:

“How long have you been a UX designer?”

And you’d get:
“I started UX in 2018 after switching from development.”

 

True… but not the “right” answer.

Or:

“When was your last DJ set?”
And Tim turns into a deer with no eyes! (No idea)

The Real Problem: Vector Stores Aren’t Time-Aware

This wasn’t an LLM issue. It wasn’t even a prompt issue. It was Qdrant. Vector stores are brilliant at semantic search.

“What”, “why”, “how”, “tell me about” – all perfect.

But anything involving:

  • when
  • how long
  • most recent
  • first time

…it hasn’t got a clue!

A vector store doesn’t understand dates. It just understands similarity. So asking “When was your last DJ set?” is meaningless unless there’s a structured place where time actually exists.

The Other Pain: Updating Tim Was a Chore

Adding knowledge to Digital Tim involved:
  • Creating JSON files by hand
  • Writing tags manually
  • Generating summaries myself
  • Running Node scripts to upsert everything
It worked, but it was clunky, a little error-prone and definitely not something I wanted to keep doing long-term! Blog posts were especially annoying. Every new post meant a whole separate ingestion step, figuring out summaries, tags – the whole thing became cumbersome and tedious!

Step Back and Rethink things

One of the upside of doing a project like this are the learnings you have along the way. Give it enough time with anything that’s kind of new and you’ll have those “Ahhh…I should have done it like this in the first place!” epiphanies! With that being the case…it was time to come up with a new plan.
The new plan had three clear goals:
  1. A proper admin panel
  2. Automatic ingestion of content
  3. Real temporal awareness

The Admin Panel (Finally)

Everything now lives behind an internal admin interface. From one place I can:
  • See how many conversations happened in the last 7 days or 7 weeks
  • Inspect what Digital Tim actually knows
  • Add, edit, or remove memory
  • Test responses
  • Take Tim offline
  • Switch LLM models
  • Review answer success rates
  • Review answer response times
No scripts. No guesswork. I’ve now got a ton more visibility and way more control. This bit alone was worth the rebuild!

Automated Knowledge (No More Manual Ingestion)

I already had the data – I just wasn’t using it properly. My:

  • Blog
  • YouTube channel
  • SoundCloud

…all expose RSS feeds.

So now:

  • n8n checks each feed hourly
  • New content is detected automatically
  • Changes are diffed intelligently
  • Summaries and tags are generated by an LLM
  • Everything is written to MySQL and Qdrant

If I publish a blog post, I don’t need to do anything else! Within an hour, Digital Tim knows about it. Boom!! How it should be…

Temporal Awareness (The Big One)

Here’s the key shift.

Qdrant is still used for semantic meaning – the what.
MySQL now handles facts, structure, and time – the when.

All Q&A items exist in both places:

  • Qdrant for recall
  • MySQL for structure

SoundCloud, YouTube, blog posts – same deal.

The updated prompt now:

  • Knows today’s date
  • Knows which data lives where
  • Can query MySQL for timestamps and durations
  • Can do date maths when needed

So now:

“How long have you been a UX designer?”

I properly shifted into UX design in 2018, so I’ve been doing it for about seven years now.

“When was your last DJ set?”

My last DJ set was the ‘Cars Hackathon ’24’ mix, which dropped on 26th July 2024. It was a cheeky house set for the closing party at Booking.com.

Tim finally understands time.

What’s Next?

Reviews! I watch a lot of films and TV. That data is going in next:

  • Favourite shows
  • Favourite films
  • Franchise opinions
  • Ratings and mini-reviews

The structure is already there – it just needs filling.

Digital Tim 2.0

Digital Tim is now:

  • Smarter
  • Time-aware
  • Easier to update
  • Largely self-maintaining
  • Actually observable

Less manual effort. More accuracy. Better answers. Boom!

My boy is growing up.

Tim McKnight
Tim McKnight
http://worldoftim.com

Leave a Reply

Your email address will not be published. Required fields are marked *