Skip to content
View saifullah4khan's full-sized avatar

Block or report saifullah4khan

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
saifullah4khan/README.md

Saifullah Khan

Python/Flask developer building AI-powered backend systems that automate real-world business workflows. I like the messy parts: webhooks that retry, models that rate-limit, and the edge cases that only show up in production.

Currently building and running HandleHQ, a deployed multi-tenant SaaS that replaces manual customer support handling for small and mid-sized businesses using LLMs and REST APIs.

🎯 Exploring Solutions Engineering, Implementation, and Associate PM roles where hands-on technical skills meet customer-facing problem solving. US citizen, open to remote.


HandleHQ - the product behind most of this

HandleHQ is a deployed, multi-tenant SaaS that answers a business's inbound customer messages with an AI agent, collects the details needed for a support ticket or sales lead, files the ticket, and hands the owner a portal to run the whole operation. There's a live demo, no login required.

What's actually in it:

  • AI intake pipeline - OpenAI gpt-4o for strict-schema field extraction and gpt-4o-mini for conversational replies, off-topic classification, and ticket summaries, driven by per-business intake templates across 18 verticals.
  • Multi-channel intake - email live via SendGrid Inbound Parse, a direct message API, and a WhatsApp channel (Meta Cloud API, built and pending Meta verification).
  • Full ticket system - status, priority, tags, assignee, outcome, urgent flag, internal notes, and AI-generated summaries, with automatic escalation of overdue tickets up the priority tiers.
  • Analytics - a portal metrics dashboard (ticket volume, average first-response time, ROI) plus an admin funnel view across all tenants.
  • Multi-tenant data layer - PostgreSQL via SQLAlchemy with Alembic migrations, Redis for cross-worker rate limiting and portal login lockout, and nightly database backups with a tested restore path.
  • Self-serve onboarding and billing - a public application form, admin review, Stripe Checkout (setup fee plus subscription with a free trial) behind a swappable payment-provider abstraction, and automatic tenant provisioning on payment.
  • Three surfaces - a marketing site, a React/Vite/Tailwind customer portal, and a super-admin dashboard, each on its own subdomain.
  • Production infrastructure - gunicorn behind nginx with Let's Encrypt TLS on a VPS, GitHub Actions CI running a hermetic pytest suite, Dependabot, fail-closed HMAC-verified webhooks, CSP/HSTS, request-ID tracing, and opt-in structured JSON logging.

The problem it solves: most small businesses handle customer inquiries manually with no structure or tracking. HandleHQ slots into that workflow and automates the intake, triage, and follow-up layers end to end.


Stack

Languages Python, C++
Backend Flask, REST APIs & webhooks
Database PostgreSQL, SQLAlchemy, Alembic, Redis
AI OpenAI (gpt-4o / gpt-4o-mini), prompt engineering
Integrations SendGrid, Meta WhatsApp Cloud API, Stripe
Infra & tooling gunicorn, nginx, systemd, VPS, Git, Postman, GitHub Actions CI/CD, Dependabot

A Few Things I Care About

  • Reliability over cleverness - bounded retries, idempotency, graceful fallbacks: the stuff that keeps a webhook from taking down a worker.
  • Integrations that hold up - most of my work is wiring third-party APIs together and handling what happens when one of them misbehaves.
  • Explaining the system, not just shipping it - clear READMEs, architecture docs, and runbooks so the next person (or the customer) isn't lost.

Featured Work

Small, focused, MIT-licensed repos, most extracted and generalized from HandleHQ's production code. All tested.

  • openai-retry - production-grade retry/backoff for the OpenAI SDK; treats insufficient_quota as terminal via a typed error, with jittered exponential backoff.
  • idempotency-keys - framework-agnostic helper that runs an operation at most once per key; handles the in-flight conflict, never caches failures, memory or Redis backends.
  • webhook-inspector - tiny Flask service to receive, verify (constant-time HMAC), inspect, and replay webhooks while you debug an integration.
  • flask-error-envelope - consistent, typed JSON error responses for Flask APIs from a single call; never leaks stack traces, and sets an RFC-7231 Retry-After on 429s.
  • sendgrid-inbound-parse-starter
    • minimal, documented Flask starter for receiving inbound email via SendGrid Inbound Parse.
  • postman-to-markdown - a CLI that turns a Postman collection into clean, committable Markdown API docs.
  • api-integration-demo - a small end-to-end demo relaying a form or JSON intake to Slack or Discord, with canonical field mapping, pluggable platform adapters, and bounded retry with backoff.
  • rest-paginate - one iterator over any paginated REST API (page-number, offset, cursor, or RFC 5988 Link header); dependency-free with an injectable transport, a flexible items selector, and a hard infinite-loop guard.
  • token-bucket - a dependency-free token-bucket rate limiter that paces outbound calls to stay under an API's limit; injectable clock and sleep for deterministic tests, thread-safe, with blocking and non-blocking acquire.
  • openapi-diff - catches breaking API changes before they ship: compares two OpenAPI specs, resolves $refs and allOf, and exits non-zero in CI when a change would break existing clients.
  • strict-env - fail-fast typed environment-variable config for Python: declare a schema, load it once, and every missing or malformed variable is reported at startup instead of one at a time; strict coercion, secret masking, and an injectable environ for testable config.
  • circuit-breaker - a dependency-free, thread-safe circuit breaker that trips open after repeated failures, fails fast during an outage, then probes for recovery; injectable clock for deterministic tests and a generic state-change hook.

Background

Before writing code full-time I spent 4 years managing operations at a medical clinic in New York. Promoted to manager within the first year, digitized the entire workflow, and introduced AI tools that cut administrative overhead significantly. That experience shapes how I work: the problem first, the technology second.


Get In Touch

Pinned Loading

  1. strict-env strict-env Public

    Fail-fast, typed environment-variable configuration for Python: declare a schema, load it once, and get every misconfiguration reported at startup.

    Python 4

  2. TestingHQ TestingHQ Public

    Self-testing tools for intake pipelines. Blast fires realistic-to-garbled inbound-email payloads at an endpoint you control so you can find where the parser breaks.

    Python