Helping Condo Owners Argue with 200-Page PDFs
A special assessment notice lands and a condo owner has 30 days to decide whether to fight it. The PDF is 200 pages of accounting and legalese. CondoShield reads it, surfaces the levers, and drafts the dispute letter, in English or French.
Most special assessment disputes are lost because the owner gives up halfway through reading the document. CondoShield's job isn't to be smarter than a lawyer, it's to keep an owner in the fight long enough to either accept the assessment with eyes open, or write a real dispute letter.

Why I built it
I am a condo owner. I have been hit with questionable special assessments that translated into substantial extra monthly payments, and the paperwork around them was deliberately hard to read. There was no obvious way to understand the charges, check my rights, or find owners going through the same thing. CondoShield is the tool I wanted on the day the first letter arrived.
What it does
CondoShield is a web app that turns a scanned assessment PDF into something an owner can actually act on. It parses the document, breaks down the charges, answers legal questions against the right region's laws, drafts dispute letters from templates, and tracks every deadline so nothing quietly lapses.
- Analyze assessment PDFs and visualize the charge breakdown with recharts.
- Ask legal questions against a region you select (Quebec, Ontario, others).
- Generate dispute letters from region-specific templates.
- Track every assessment, dispute, and deadline from one dashboard.
- See AI-generated cost-saving suggestions tied to the parsed charges.
- Switch the entire interface between English and Canadian French.

Multi-model document analysis
Large assessment PDFs get routed through pdf-parse first, then Tesseract.js for scanned pages, then fanned out across GPT-4o, GPT-4.1, and Llama on Azure AI Inference. Each model is asked a different question (costs, timeline, legal basis, comparables) and the answers get reconciled into a single confidence-tagged summary. If two models disagree on a number, the UI shows both rather than picking a winner.
Region-aware legal guidance
The dispute letter generator pulls from region-specific templates and citations. A Quebec owner gets clauses anchored in the Code civil; an Ontario owner gets language tied to the Condominium Act. The point isn't to draft a winning legal argument, it's to draft something that a paralegal can sharpen in an hour instead of starting from scratch.

How I built it
Frontend is React with Tailwind on a Next.js + TypeScript base, mobile-first because most owners read these letters on their phone. Supabase handles auth, the database, and real-time updates so deadlines and dispute status sync without polling. Charts are recharts, PDF export goes through jspdf and html2pdf.js with html2canvas for the rendered preview, and OCR is Tesseract.js. The AI layer talks to GPT-4o, GPT-4.1, and Llama through @azure-rest/ai-inference and @azure/core-auth.
What was hard
Three problems took most of the build time. First, fitting long PDFs into the model context window: I split documents into overlapping sections by heading and pass only the relevant chunks per question instead of dumping the whole file. Second, structured outputs: I lean on schema-shaped prompts and reject responses that don't parse, then retry against a different model in the pool. Third, Supabase row-level security: every table that touches an owner's file is locked to that owner's auth UID so a leaked share link can't reveal someone else's assessment.

What I learned
Splitting documents intelligently matters more than picking the cleverest model. A mid-sized model with the right 3,000 tokens of context beats a frontier model with the wrong 100,000. I also learned that in legal-tech the UI has to look conservative or owners assume the output is a chatbot trick, so I cut every animation that didn't serve clarity.
What's next
- Expand region coverage past Quebec and Ontario to the rest of Canada and a few US states.
- Add deadline reminders and an escalation workflow for ignored disputes.
- Plug in official municipal and registry data to cross-check assessment charges.
- Native mobile apps with offline document review.
- Partner with paralegals and condo lawyers to review the AI guidance before it ships to owners.

Why I Turned a Steam Deck into a 3D Printer Console
Winner of the OpenAI Open Model Hackathon, out of 8,652 participants: gpt-oss models running offline on a Steam Deck, voice control through Vosk, STL viewing in OpenGL, and OctoPi for the actual printing. From 'print me a hook for my desk' to a hook on the build plate.

FHIR + CDS Hooks + Gemini: a Risk Score a Clinician Will Actually Read
Risk scores die when they're black boxes. MeldRx integration via FHIR/CDS Hooks pulls patient data; Gemini Flash returns structured JSON with explanations, confidence, and recommended actions; the UI hands clinicians a downloadable PDF report.
