Project Hero

🗓️ Availity — A Chat-Based Scheduling Assistant

The Problem: The Messy Reality of Scheduling

Even in 2025, coordinating availability and shifts—especially in small teams—often relies on chaotic group chats, messy spreadsheets, or slow back-and-forth messages. Most scheduling tools feel too bulky for lightweight, ad hoc coordination.

There’s space for something more intuitive: a conversational AI assistant that handles availability, cancellations, and shift confirmations—all through the simplicity of chat.

The Solution: Scheduling via Natural Language

Availity is an AI-powered chat assistant that helps users manage availability and confirm shifts using natural language. It's built to run on messaging platforms—currently live on Telegram, and fully compatible with WhatsApp.

The goal: let users type things like “free after lunch on Friday” or “cancel Monday” and have the system handle everything—parsing, storage, matching, and notification—behind the scenes.

My Role: Solo Developer

I designed and built the entire system—from the natural language parser and database schema to bot logic and real-time interaction. The goal was to build a lightweight, intuitive scheduling tool that combines:

  • Natural language UX
  • Clean, modular architecture
  • Cross-platform support

Key Features

🧠 Natural Language Availability Parsing

Users can casually message the bot with things like:

  • “free Friday all day”
  • “I’m available after 2pm Tuesday”

These inputs are parsed into structured time slots using Perplexity AI and stored in Supabase with precise timestamps.

📋 Abstracted Availability Management

Users can ask to review and edit their availability with messages like:

  • “what have I added?”
  • “cancel my availability on Thursday”
  • “I am not available to work on Tuesday”

Entries are shown with simple numbered labels (1, 2, etc.), and cancellation works through either number selection or fuzzy NLP matching.

✅ Shift Assignment & Confirmation

The system can assign shifts based on user availability. A typical message looks like:

📢 You’ve been assigned a shift!
🕒 Shift: Friday 14:00–18:00 (UTC)
✅ Reply with "confirm" to lock it in.
  

When users reply, the shift is marked as confirmed in the database, tracked via message ID.

🧩 Unified Confirmation Handling

A single "confirm" message handles both:

  • Saving newly added availability
  • Confirming assigned shifts (via message reply)

If a user sends "confirm" with no pending context, the assistant gently explains that there's nothing to confirm. This avoids confusion and keeps the flow smooth.

Tech Architecture

ComponentTech Stack
Bot Frameworkpython-telegram-bot
Messaging PlatformTelegram (WhatsApp compatible)
Backend DBSupabase (PostgreSQL)
NLP EnginePerplexity AI with custom prompts
RuntimePython with async handlers

NLP in Action

Perplexity is used for two core functions:

  • Intent detection — understands if the user is trying to add, manage, or cancel availability
  • Slot matching — intelligently selects the correct entry when the user says something like “cancel Monday”

If the model returns verbose or ambiguous output, fallback keyword detection ensures reliability.

Testing & Debugging

I implemented detailed internal logging for:

  • User intent and state
  • Availability parsing output
  • Perplexity prompt debugging

This helped catch and resolve issues like:

  • Incorrect UUID exposure
  • Failed cancel attempts due to vague input
  • Ambiguous use of "confirm"

Current Status

  • ✅ Natural language availability parsing
  • ✅ Abstracted list & cancel interface
  • ✅ Shift assignment with confirmation
  • ✅ Unified confirm/cancel handling
  • ✅ Fully functional on Telegram
  • ✅ Designed for plug-and-play WhatsApp support