> hello, world.

Osman Zain

I'm an AI engineer who builds voice and chat automation for small businesses.

I design the whole thing, from the prompt to the phone call, and test it with evals and guardrails so it holds up on real customers, not just in demos. Recent work: a voice receptionist for auto repair shops, a lead-qualification pipeline whose prompt I took from 67% to 81% on an eval I wrote, and an email outreach tracker that reads and classifies its own replies.

Open to AI / automation engineering roles

#Projects

Three things I've built, with the results and the caveats.

GarageBot

private repo
problem
Independent auto repair shops lose bookings every week because nobody can pick up when they're under a car or the shop is closed. By my estimate that's 3 to 5 bookings a week; at $150 each, roughly $23,000 to $39,000 a year. It's an estimate from my own arithmetic, not measured data.
what I built
an AI receptionist for Australian auto repair shops. It answers phone calls around the clock, trained on each shop's own hours, services and prices, then hands the shop a job card with the caller's details. Fewer missed calls, fewer lost bookings, no extra staff.
  • Multi-tenant RAG on FastAPI: a separate ChromaDB collection per shop so one shop's data never enters another's answers.
  • OpenAI-compatible streaming endpoint used as a Telnyx AI Assistant's custom LLM. Tuned prompts to keep spoken replies to about 15 words.
  • Debugged real call failures from raw requests: caller identity fields, retried webhooks, and a flaky tunnel behind slow replies.
  • Python
  • FastAPI
  • ChromaDB
  • LangChain
  • Claude API
  • Telnyx Voice AI
▶ recorded callweb test call
00:00 / 00:00

    LeadPilot

    public repo
    problem
    Leads from Facebook ads, website forms and texts go cold when nobody replies in the first few minutes. Staff can't answer instantly, ask the same qualifying questions every time, tell a serious buyer from a tire-kicker, or spot a storm-damage emergency in a busy inbox.
    what I built
    an AI lead qualification and booking pipeline, tested on residential roofing. Claude replies straight away and asks the qualifying questions. An n8n workflow then sorts each lead (hot, warm, cold, disqualified or handoff), books an inspection, saves it to a CRM and alerts a person for anything urgent.
    use cases
    • Paid-ad leads. Anything that can post a message to its webhook, such as a Facebook lead-form automation, a web form or an inbound text, gets a first reply and a classification before a human looks.
    • After hours and storm surges. Hail season floods the inbox; nothing waits until morning.
    • Questions it handles: "How much?" (it won't quote a price, and offers a free inspection); "Are you a bot?" (it says it's automated); an active roof leak (safety advice, then a person); renters and out-of-area callers (politely disqualified); commercial properties and angry customers (handed to a person).
    • Built the eval harness first: 12 cases, a simulated customer, rule-based and LLM-judged checks. It found its own judge was unreliable, and I fixed that before trusting any result.
    • Prompt v1 → v2 on the same eval: 67% → 81% (Haiku 4.5, 36 runs) and 83% → 100% (Opus 5, 12 runs).
    • Enforced "never quote a price" in code after Haiku wrote "$8k to $25k+" under pressure. 97 offline tests.
    • Python
    • n8n
    • Claude API
    • SQLite
    • JavaScript
    • Evals

    Small self-written case set: directional, not a benchmark. Runs locally; no live texts are sent, and the Facebook Lead Ads connection is not built (the entry point is a webhook).

    ReplyRadar

    local project
    problem
    Cold email outreach falls apart after the send: nobody knows who opened it, who clicked, or who replied. Replies sit unread, follow-ups get forgotten, and someone has to work out what each reply actually wants.
    what I built
    an email outreach tracker. It sends the emails, tracks opens and clicks, reads the inbox for replies, and automatically follows up with people who haven't engaged (after 3 days, at most twice). Claude then reads each reply and labels it with the sender's intent, a one-line summary and a suggested next action.
    • Reply analysis is schema-validated and advisory only: a failed call never blocks reply detection, and it was tested against a reply that tried to hijack the classifier.
    • Australian Spam Act rules are enforced in code: unsubscribed contacts can never be sent to, and the unsubscribe link needs a confirming click so mail scanners can't opt people out.
    • Diagnosed why opens never registered in Gmail: the free tunnel served an HTML warning page to Gmail's image proxy instead of the tracking pixel.
    • Python
    • Flask
    • SQLite
    • Claude Haiku 4.5
    • IMAP / SMTP
    • 66 offline tests

    Code not published yet. Runs locally against a real mailbox.

    #Skills

    llm / ai

    • Anthropic Claude API
    • Prompt iteration against evals
    • LLM-as-judge design
    • Guardrails & output validation
    • Structured output / tool use
    • RAG
    • ChromaDB
    • LangChain
    • Sentence-Transformers

    automation & backend

    • Python
    • n8n
    • FastAPI
    • Flask
    • SQLite / SQL
    • Webhooks & idempotency
    • IMAP / SMTP
    • JavaScript

    voice & telephony

    • Telnyx Call Control
    • Telnyx Voice AI
    • WebRTC

    data & ml

    • Pandas
    • NumPy
    • Scikit-learn
    • XGBoost
    • Model evaluation

    quality & tools

    • Eval harness design
    • Offline tests with fakes
    • Prompt-injection testing
    • Git / GitHub
    • Tailwind CSS
    • Fly.io

    #About

    I build working AI systems rather than notebooks. The work that matters to me is the unglamorous part: an eval that tells you whether a prompt change helped, a guard in code for the rule a model keeps breaking, and tracing a failure back to its real cause instead of guessing.

    I'm looking for AI and automation engineering roles where I can keep doing this work on real business problems: fewer missed calls, faster replies, and details captured where the team will see them.

    #Contact

    Hiring for an AI or automation role, or want to talk about a project? Email is fastest.