Inspiration

It's midnight. You have three articles due for your English class tomorrow, a research paper you bookmarked two weeks ago, and 14 open tabs you swore you'd get to. Sound familiar? We've all been there. But here's what we kept thinking about: it's not just students. It's the single parent who wants to stay informed but barely has twenty minutes to themselves. It's the first-generation college student working two jobs who still wants to keep up with their field. It's the person with dyslexia or a visual impairment who deserves access to the same information as everyone else, just in a format that works for them. Information is everywhere. Real, digestible, usable access to it isn't equal. We built TL;DR because we believe staying informed shouldn't be a privilege reserved for people with unlimited time. Knowledge shouldn't have a time tax.

What it does

TL;DR is a Chrome extension paired with an AI-powered backend that automatically summarizes anything you save (blog posts, research papers, PDFs, news articles, all of it). Save any page with one click from the Chrome extension. Behind the scenes, TL;DR:

  • Fetches the full article content using an AI browsing agent
  • Generates a clean, concise summary using Gemini 2.0 Flash
  • Converts that summary into a full audio version using text-to-speech synthesis
  • Sends you an email notification the moment your summary is ready, so you can close the tab, go live your life, and come back when it's done
  • Delivers everything to a live dashboard (ready to read or listen to)

The dashboard shows your full digest, your stats, and a built-in audio player so you can listen to your summaries like a podcast, on your commute, at the gym, while you're making coffee.

How we built it

The stack is end-to-end custom: Chrome Extension (Manifest V3) A lightweight popup captures the active tab URL and sends it to the Flask backend via a POST request. host_permissions handles the localhost CORS handshake. Backend (Flask + Python) A REST API manages article ingestion, processing, and serving. Articles are stored in SQLite. Processing runs in a background thread, so the extension gets an instant response while the pipeline runs async. *** AI Browsing Agent (Browser Use + LangChain)*** This is the core. Instead of a brittle HTML scraper, we use Browser Use, an AI agent that controls a real Playwright-driven Chromium browser. It navigates to the URL, waits for JavaScript to render, handles Cloudflare verification pages, and extracts clean article content the way a human would. No scraper fragility. No broken selectors. For PDF URLs, we detect the .pdf extension and route through pdfplumber to extract text directly before summarization. Summarization (Gemini 2.5 Flash) Extracted content is passed to Gemini 2.5 Flash via the Google GenAI SDK. The prompt instructs it to return a flowing 3–5 sentence prose summary. Text-to-Speech (gTTS) The summary is synthesized into an MP3 using Google Text-to-Speech and saved to the server. The audio file is served back to the dashboard and streamed directly in the browser. Email Notifications (SMTP) Once the summary and audio are ready, TL;DR sends the user a personal email ping, so they never have to sit and wait. Save it, close the tab, live your life. The email finds you when it's done. Dashboard (HTML + CSS + JS) A clean, responsive dashboard with a purple-themed UI. Live stats, article cards with inline summaries, an audio player bar with play/pause and skip ±15s controls, and a greeting that updates based on time of day. Auto-refreshes every 10 seconds.

Challenges we ran into

  • The biggest wall we hit was bot detection. Major sites like Medium serve Cloudflare verification pages to automated browsers. Our initial task prompt told Browser Use to extract content immediately — which meant it grabbed the "Just a moment…" page instead of the article. The fix was prompt engineering: explicitly instructing the agent to wait for any verification to auto-resolve before extracting.
  • When a user saved a direct PDF link, Browser Use returned raw binary PDF content. Gemini dutifully summarized the binary structure instead of the stories inside. We added PDF detection and rerouted those URLs through pdfplumber for proper text extraction.
  • Browser Use is async. Flask is sync. Running asyncio.run() inside a Flask route caused event loop conflicts. The fix was creating a fresh event loop per request using asyncio.new_event_loop().

Accomplishments that we're proud of

  • Getting Browser Use to reliably navigate real, dynamic websites as part of an automated pipeline, not just a demo
  • Building a full end-to-end product in one hackathon: extension → agent → summarizer → TTS → email → dashboard
  • The audio pipeline is actually working. Clicking Listen and hearing your article read back to you, clearly, is genuinely satisfying
  • Building something with a real use case beyond the hackathon: for students, for busy parents, for people with accessibility needs, for anyone who's ever felt behind.

What we learned

*** Speed matters, but completeness wins demos*** A half-working idea is forgettable. A full pipeline, even if imperfect, is what stands out. Shipping end-to-end changed how people perceived the project. *** Edge cases are the real product*** Handling normal inputs is easy. The real challenge was dealing with unexpected formats, broken links, and inconsistent data sources. That’s what separates a demo from something usable. System design matters more than individual features The biggest improvements didn’t come from adding features, but from rethinking how data flows through the system. Letting processes run in the background while users move on made the product feel faster and more practical. Small UX decisions have an outsized impact

What's next for TL;DR

-Topic clustering: group your digest by subject so your morning reading feels curated, not random

  • Mobile app: share any link from your phone directly into TL;DR
  • Accessibility first: deeper screen reader support, adjustable playback speed, and language options so TL;DR works for everyone.
  • Personalization features: Audio Voice preferences, tone, voice modulation.

Built With

Share this project:

Updates