Back to portfolio
Selected Work

Featured Projects

Selected builds spanning agentic AI, workflow automation, and business intelligence dashboards.

FILE/02

Customer Feedback Automation Pipeline

Engineered an event-driven automation engine to categorize inbound user feedback via Gemini, dynamically route urgent items, sync records to Airtable, and handle API retries.

Python FastAPI Google Gemini Webhooks & APIs
Architecture
Customer feedback automation pipeline architecture Feedback submissions trigger AI classification via Gemini, routing between high-priority complaints and standard feedback before merging into an Airtable CRM sync with robust error retry logic. Feedback form submitted Web form / webhook trigger AI agent classification Sentiment & priority (Gemini) Switch: route by priority High-priority vs standard High-priority complaint Slack alert + Gmail reply Standard feedback Logged to Airtable Merge: sync to Airtable CRM Structured record synced Error handling & retry logic Automated retries on API failures

System Architecture

What the project actually does:
    It's a closed-loop feedback intake system: instead of a form submission just landing in a spreadsheet, it gets read, judged, routed, and acted on automatically - no human triaging incoming complaints.
Part 1: Ingestion & Intelligence Layer
  1. Feedback Form Submitted: A webhook fires the moment someone submits the form (could be Typeform, a custom HTML form, or Google Forms piping into n8n). This is the entry point of the whole automation - everything downstream depends on this payload.
  2. AI Agent Classification: The raw text of the feedback gets sent to an LLM (Google Gemini in your case) acting as a classification agent. Rather than hardcoding keyword rules ("if message contains 'refund', flag urgent"), the model reads the message for sentiment and severity and returns a structured judgment - essentially turning unstructured complaint text into a priority label the workflow can act on.
Part 2: Routing, Syncing & Resilience Layer
  1. Switch: Route by Priority: This is the decision point. n8n's Switch node reads that classification output and forks execution into two branches based on a condition (e.g. priority == "high"). This is what makes it agentic rather than a straight-line pipeline - the workflow's path literally changes based on what the AI decided.
  2. Branch A — High-priority complaint: For urgent cases, two things fire in the same branch: a Slack message pings the team channel in real time so a human knows immediately, and the Gmail API sends a personalized acknowledgment/resolution email back to the customer - so the person who complained isn't left hanging while the team responds.
  3. Branch B — Standard feedback: Lower-priority or positive feedback skips the alerting and just gets logged straight through, so the system isn't crying wolf on every 5-star review.
  4. Merge: sync to Airtable CRM: Both branches converge back into a single Merge node, which writes a structured, uniform record into Airtable regardless of which path it took. This is the "single source of truth" step — every piece of feedback, urgent or not, ends up as one clean row you can report on later.
  5. Error handling & retry logic: Wrapping the whole thing, this catches failures in any of the API calls (Slack down, Gmail rate-limited, Airtable timeout) and retries automatically instead of silently dropping a customer's feedback.
Get in touch

Contact

Have a role, a project, or a question? Fill out the form or reach out directly.