All projects
Personal Project

Tennis Tracker

I play tennis two to three times a week and had no real way to tell if I was actually improving or just having good and bad days. So I built a system to track it properly.

Tennis Tracker

Logging a session

  • Typing /log on Telegram starts a short conversation
  • Asks about session type, location, skill ratings (serve, forehand, backhand, volley, footwork, focus, return), energy before and after, mood, discomfort, match result, and free text notes
  • About 15 data points per session, all saved to BigQuery

AI coaching, three ways

  • After every session, Gemini sends back a short coaching summary based on what was logged
  • Every Sunday, a weekly recap covering skill trends, energy patterns, and a plan for the week ahead
  • The /insights command pulls a 90 day report on demand, with skill trends, win and loss analysis, and recurring patterns

Asking questions directly

  • Free form questions like “what should I focus on this week” or “why have I been losing more matches lately”
  • Answers using full session history
  • Remembers earlier parts of the conversation, so follow up questions do not need repeated context

Scheduling in plain English

  • A message like “schedule match at Titiwangsa tomorrow 7pm against Fara” gets parsed automatically and added to Google Calendar
  • The night before, a pre session brief gets sent with focus areas, a quick game plan, notes from the last few sessions, and the weather forecast

The dashboard

  • A Telegram Mini App with four tabs
  • Overview: session counts, win and loss record, skill radar chart
  • Progress: skill trends over time with AI generated notes on what is improving and what needs work
  • Matches: win rate by opponent level, head to head records
  • Activity: 30 day heatmap of session frequency

Tech stack

Telegramn8nBigQueryGeminiDockerGoogle CalendarPostgreSQL

Get in touch

Open to any feedback or any interesting discussions.