What I built
I built the mock VA portal and the full-stack integration layer that ties the AI audit pipeline to a real user-facing demo.
The mock VA portal (Flask + vanilla JS) simulates the VA eBenefits dashboard. Veterans see their denied conditions and current rating, click "Submit Appeal," and the pre-filled PDF lands on the portal instantly with a generated confirmation number. It has a real submission endpoint, PDF storage, and a polling mechanism that updates the dashboard in real time. I also built the confirmation page that renders the submission details, an embedded PDF preview, and a VA Forms API badge.
On the backend, I wrote the Flask API server that drives the entire claim processing flow. It accepts PDF uploads, spins up a background pipeline thread (parse → audit → fill forms), and streams live progress to the frontend via Server-Sent Events. Once the audit completes, it serves the filled VA forms for download and handles the one-click appeal submission to the mock portal — including path traversal protection on the download endpoint.
On the frontend, I built the multi-page React app flow: the upload page with drag-and-drop, the live SSE tracker with an animated stepper that reflects real pipeline stages, the VA Calling Agent page (which calls your phone via Vapi, reads a consent disclosure, then connects to 1-800-827-1000 and saves the transcript), and wired everything together in App.jsx.
Challenges I ran into
Getting SSE to work reliably with Flask and React required careful handling of keep-alive comments to prevent the connection from timing out during the longer AI audit steps. The VA portal's real-time polling also needed to be resilient to the backend being briefly unavailable during demo resets.
What I'm proud of
The end-to-end demo flow feels complete — upload documents, watch the pipeline run live, see the audit results, download pre-filled forms, submit to the portal, and get a confirmation number. The mock portal makes it tangible for judges in a way that a raw API response never would. I also wrote a full test suite (34 tests across pytest and vitest) including Hypothesis property tests that verify the server handles adversarial inputs correctly.
Log in or sign up for Devpost to join the conversation.