RenewalSync is an agency auto-renewal ops tool Haris Ullah Khan built for Metropolitan Insurance: agents enter a Progressive or National General policy number, Playwright pulls current and renewal Dec PDFs, compares them into an agency summary, then automatically posts an EZLynx activity with Document Library upload — live at renewalsystemmetro.com on the same Neon/Playwright/SSE/EC2 + Cloudflare Tunnel pattern as CarrierBridge.
Problem
For a Florida insurance agency already quoting HO3 through CarrierBridge, auto renewals were still a manual grind: log into Progressive or National General, hunt down current and renewal declarations, eyeball what changed, then re-key notes and upload PDFs into EZLynx.
That work is repetitive, easy to miss a coverage change on, and slow when MFA, shared agency logins, and CRM uploads are all in the way of “just get the Decs into the file.”
Solution
I built RenewalSync as the renewal-ops companion to CarrierBridge — same agency, different job. Live product: renewalsystemmetro.com.
One continuous pipeline
An agent picks Progressive or National General, enters a policy number, and the API runs a single orchestrated stream:
- Locate the policy in the carrier portal
- Pull current + renewal Dec PDFs
- Parse and compare into an agency-facing summary
- Automatically create an EZLynx activity (with task + label), open/create a renewal folder, and upload both Decs
Progress streams to the UI over SSE so the comparison can appear while EZLynx work continues.
Structured Dec comparison
A dedicated Dec page-diff engine extracts drivers, vehicles, coverage, payment plan, and premiums — including paid-in-full aware “if paid in full” renewal totals when the current plan is PIF — so agents see what changed instead of scrolling two PDFs side by side.
Trust boundary that matches agency reality
Portal credentials never leave the API .env. The frontend only sends Bearer JWTs and consumes SSE. Scrapers run on the automation host with concurrency caps and per-portal locks so a shared agency login is not thrashed.
Team history, not a black box
Runs persist in Neon. Agents, team leads, and super admins get role-scoped history with retry / EZLynx retry / rerun paths, plus Dec PDF links while files remain on disk.
Tech stack
Frontend: Next.js 15, React 19, TypeScript, Tailwind CSS 4, Neon Auth
Backend: FastAPI, SQLAlchemy 2, asyncpg, Alembic, Playwright, pypdf, httpx
Database / auth: Neon Postgres (renewal_runs, teams, memberships), Neon Auth JWT via JWKS
Automation: Progressive + National General Dec pull; EZLynx activity + Document Library write; Outlook/IMAP OTP where MFA requires it
Real-time: SSE via authenticated fetch streams
Infrastructure: Vercel (FE), AWS EC2 + Docker (API), Cloudflare Tunnel, optional OpenVPN, GitHub Actions deploy
Why this matters
Insurance ops automation is not “scrape a page.” It is portal MFA, shared credentials, PDF truth, CRM write-back, and deployment that carriers accept.
RenewalSync collapses carrier Dec hunt + compare + EZLynx filing into one agent-facing run — without pretending the model should decide the renewal.
Related work
- CarrierBridge multi-carrier quoting — the HO3 quoting sibling for the same agency
- From one address to parallel carrier quotes — CarrierBridge use-case walkthrough
- Make/Zapier + Retell help-desk automation
- Hire Full Stack AI · Automation services · Contact
Common questions
What is RenewalSync?
RenewalSync is an internal insurance agency tool that automates auto-policy renewal ops: enter a Progressive or National General policy number, pull current and renewal declarations, compare them, and automatically create an EZLynx activity with Dec PDFs attached.
Which carriers and systems does RenewalSync connect to?
It reads Progressive and National General portals for declaration PDFs, and writes to EZLynx (activity note, task, label, Document Library folder + PDF upload).
Does RenewalSync decide whether to renew a policy?
No. It prepares the comparison and CRM documentation so agents can follow up. Humans still own the renewal decision and client conversation.
How does the agent experience work?
After sign-in, the agent picks a carrier, enters a policy number, and watches a live SSE progress stream: locate policy → pull Decs → compare → post EZLynx. History supports retry and rerun with role-scoped visibility.
How is it deployed?
The Next.js frontend runs on Vercel. The FastAPI + Playwright automation API runs on AWS EC2 in Docker behind a Cloudflare Tunnel, with optional OpenVPN egress when portals require residential-style IPs — the same pattern as CarrierBridge.
What technologies power RenewalSync?
Next.js 15, React 19, and TypeScript on the frontend; FastAPI, SQLAlchemy 2, and asyncpg on the backend; Neon Postgres and Neon Auth; Playwright for Progressive, National General, and EZLynx; pypdf for Dec comparison; SSE for live progress; AWS EC2, Docker, Cloudflare Tunnel, Vercel, and GitHub Actions.
Who builds insurance renewal automation like RenewalSync?
Haris Ullah Khan (https://harisullahkhan.me) builds insurance portal automation — CarrierBridge quoting and RenewalSync renewal ops. Hire at https://harisullahkhan.me/hire-full-stack-ai-developer.