Inspiration

In Baltimore City, a landlord needs an active rental license to sue a tenant for rent. Yet in the Public Justice Center's study of 100+ contested cases, over 70% of complaints had missing or invalid license information. Most tenants never know they have this defense.

What it does

Tenantly turns a rent court summons into a defense in about 2 minutes:

  • Scan or upload the summons. OpenCV flattens the photo and Gemini reads the case details.
  • ArcGIS confirms the address is inside Baltimore City.
  • A guided check of the city's rental license records gives a clear result.
  • Next steps: request DHCD certification, a court-prep checklist, downloadable PDFs, and verified free legal-help contacts.
  • One-tap consent to share the case with legal aid (Public Justice Center, Maryland Legal Aid, MVLS).
  • ElevenLabs read-aloud on every page, for tenants who find reading hard.
  • An advocate console for legal aid: case search, filters, certification tracking, team invites and impact reports.

How we built it

Next.js 16 + React 19 + TypeScript + Tailwind, designed in Figma (65+ mobile and desktop frames). Supabase for Postgres, row-level security, auth and private storage. Gemini for summons extraction, ArcGIS for geocoding and the city boundary check, ElevenLabs for speech, OpenCV.js for document detection, React PDF for reports, and Playwright for end-to-end tests against the live services. Deployed on Vercel. Designed for both Mobile and Desktop

Challenges we ran into

We wanted Playwright to search DHCD's license portal automatically, but the portal blocks all automation: its robots.txt disallows it, the API returns "forbidden", and Cloudflare's "Verify you are human" check failed even when a person clicked it inside the automated browser. We chose not to bypass a CAPTCHA and built a guided check instead, behind an interface that can switch to automatic lookups once DHCD grants API access. We also found that Baltimore's public ArcGIS "Licenses" data is actually liquor licenses.

Accomplishments that we're proud of

  • A working product on real services, with every screen built for both mobile and desktop
  • Privacy by design: no tenant accounts, summons photos deleted right after reading, sharing only with consent, anonymous outcome reports, and unshared cases deleted automatically after the hearing
  • End-to-end tests passing against the live deployment

What we learned

How to design around real-world data limits, how much row-level security simplifies multi-organization apps, and that legal tools need plain language and accessibility as much as features.

What's next for Tenantly

Automatic license lookups through DHCD data access (request cloudflare or gov access), Spanish and other languages, SMS hearing reminders, and piloting with Baltimore legal aid organizations.

Built With

Share this project:

Updates

Submission history