Inspiration

A presentation can look perfectly fine while you are editing it on a laptop, but the experience can be very different for someone sitting at the back of a classroom.

That problem is easy to miss because presentation software understands the slide, while room and AV tools understand the physical space.

Students and teachers experience both at the same time.

I built FarSeat to connect those two sides.

Instead of asking only:

“What font size did I use?”

FarSeat asks a more practical classroom question:

What does this text demand from a student sitting in this seat, on this display, in this room?


What it does

FarSeat helps students and teachers review presentation text from different modeled classroom seats before presenting.

The workflow is simple:

  1. Upload a machine-generated PDF.
  2. Enter the usable display dimensions.
  3. Add modeled audience seats.
  4. Run the analysis.
  5. Select a seat, slide, and text element.
  6. Inspect the exact region on the original presentation.

FarSeat combines:

  • presentation geometry,
  • displayed-image geometry,
  • modeled seat distance,
  • structural text measurements,
  • and a selected visual-demand reference profile.

It then produces explicit result states such as:

  • PASS_TARGET
  • BELOW_TARGET
  • NOT_ANALYZED
  • OUTSIDE_REFERENCE_RANGE
  • INVALID_GEOMETRY

The core idea is simple:

The same slide can create different visual demands from different seats.


Why this matters in schools

Presentations are everywhere in school:

  • student projects,
  • teacher lessons,
  • group presentations,
  • science fairs,
  • club meetings,
  • classroom activities,
  • assemblies,
  • and school events.

Most presenters design slides while sitting close to a laptop.

Their audience does not.

A slide that looks comfortable while editing can become much more demanding when:

  • it is projected onto a different-sized display,
  • the active image is reduced by letterboxing,
  • important text is physically small,
  • or a student is seated much farther away.

FarSeat gives presenters a way to review those conditions before they present.

It does not replace the judgement of a student or teacher.

It gives them better evidence for deciding which parts of a presentation deserve another look.


How FarSeat works

Presentation PDF
       +
Display dimensions
       +
Classroom seats
       +
Reference target
       │
       ▼
┌─────────────────────────┐
│         FarSeat         │
│                         │
│  Parse slide geometry   │
│           ↓             │
│ Model displayed image   │
│           ↓             │
│   Model seat distance   │
│           ↓             │
│ Compare text geometry   │
└────────────┬────────────┘
             │
             ▼
     Seat-specific result
             │
             ▼
      Seat → Slide → Text
             │
             ▼
 Exact highlight on the PDF

The goal is not to produce a mysterious score.

Every important result remains traceable from:

modeled seat → slide → specific text element


How I built it

FarSeat uses a React + TypeScript frontend and a Python FastAPI backend.

Presentation analysis

The backend structurally parses supported text from machine-generated PDFs using pdfplumber and pdfminer.six.

It builds a canonical model containing information such as:

  • page geometry,
  • text geometry,
  • page rotation,
  • supported rendering information,
  • and structural text measurements.

FarSeat deliberately does not use OCR in V1.


Browser rendering

The frontend uses PDF.js to render the original presentation.

FarSeat can then overlay the selected text region directly on the original slide so the user can see exactly what produced a result.

The browser also provides renderer geometry that can be compared with backend geometry.

If the geometry cannot be trusted, FarSeat does not pretend that it can safely analyze the element.


Display modeling

A display's physical size is not always the same as the active image size.

If the presentation and display use different aspect ratios, letterboxing can reduce the physical area occupied by the slide.

FarSeat therefore models the active displayed image separately for each slide.


Seat modeling

Users can model different audience positions relative to the display.

FarSeat supports up to 200 modeled seats.

The same presentation element can therefore produce different comparison results at different modeled viewing positions.


Reference comparison

FarSeat uses the encoded:

PUBLIC_AVIXA_BDM_REFERENCE_V1

reference profile.

It represents a public Basic Decision Making viewing-ratio / element-height reference table.

FarSeat uses it only as a reference target.

It does not claim AVIXA certification or complete implementation of the current ANSI/AVIXA standard.


The design principle I cared about most

Unknown never becomes pass.

PDFs can contain complicated structures.

Text can be:

  • clipped,
  • transparent,
  • rotated,
  • layered,
  • image-based,
  • or represented in ways that are outside FarSeat's validated analysis path.

Instead of guessing, FarSeat keeps uncertainty explicit.

Unsupported or uncertain cases can become:

NOT_ANALYZED

rather than receiving a fabricated green result.

That was one of the most important decisions in the project.


What makes FarSeat different

FarSeat is not another presentation editor.

Presentation tools already understand things like:

  • fonts,
  • layouts,
  • slides,
  • and document structure.

FarSeat adds something different:

the presentation
        +
the physical display
        +
the modeled viewer position

It connects the digital presentation to the physical classroom.

That allows it to ask:

What physical visual demand does this particular text create from this modeled seat?

rather than simply:

“What font size is this?”


Challenges I faced

Connecting digital slides to a physical classroom

The biggest challenge was translating information inside a PDF into something meaningful in a real room.

A font size alone is not enough.

I had to connect:

PDF geometry → displayed-image geometry → room geometry → seat position → reference comparison

while keeping the final result understandable.


Handling letterboxing

A slide may not occupy the entire display.

Different aspect ratios can change the actual physical size of everything shown.

FarSeat therefore calculates the active image dimensions separately instead of assuming that the full display is always being used.


Handling PDF complexity

PDFs look simple to users but are surprisingly complicated internally.

Text can have:

  • unusual rendering modes,
  • transparency,
  • clipping,
  • rotations,
  • unsupported shaping,
  • or no actual text layer at all.

I learned that it is safer to explicitly reject unsupported cases than to produce results that merely look plausible.


Keeping results explainable

I did not want FarSeat to output only:

“Slide 4 failed.”

A user should be able to understand why.

That led to the seat → slide → text-element workflow and the exact overlay on the original PDF.


Processing uploaded files safely

Uploaded PDFs are untrusted input.

FarSeat therefore uses bounded processing, including limits on:

  • file size,
  • page count,
  • extracted content,
  • parser execution,
  • and concurrent uploads.

Parsing also runs separately from the main API process.


What I learned

The biggest lesson was that a seemingly simple classroom problem can involve:

  • geometry,
  • document parsing,
  • frontend visualization,
  • backend validation,
  • security,
  • performance,
  • and UX.

I also learned that:

  • technically correct results are not useful if users cannot understand them;
  • physical context can change how digital content is experienced;
  • uncertainty should be represented explicitly instead of hidden;
  • good testing needs to verify both successful results and correct refusals;
  • and clear product limits can make a system more trustworthy, not less impressive.

Most importantly, I learned to build around a real user problem instead of adding features simply because they were technically possible.


Demo fixture

FarSeat includes a project-owned six-slide demo presentation covering:

  • ordinary text,
  • deliberately small text,
  • mixed text sizes,
  • an ultra-wide slide,
  • and an image-only slide.

A useful demo flow is:

  1. upload the presentation;
  2. configure the display;
  3. add a nearer and farther seat;
  4. run the analysis;
  5. compare the results;
  6. select a flagged element;
  7. see it highlighted on the original slide;
  8. inspect unsupported content and see that it becomes NOT_ANALYZED rather than an invented successful result.

Privacy and safety

FarSeat V1 does not require user accounts or a database.

Presentation and analysis state is temporary.

Sessions expire automatically, and restarting the backend clears the in-memory store.

Access to uploaded presentation state uses short-lived capability tokens rather than making object IDs sufficient for access.

The project also places limits around file processing so a malformed or unusually complex upload cannot run indefinitely.


Current limitations

FarSeat is intentionally narrow about what it claims.

It does not claim:

  • that a specific student can or cannot read a slide;
  • individual readability;
  • medical or vision assessment;
  • WCAG compliance;
  • accessibility certification;
  • AVIXA certification;
  • OCR support;
  • or complete analysis of arbitrary PDF content.

It also does not currently model factors such as:

  • ambient lighting,
  • display brightness,
  • projector contrast,
  • individual eyesight,
  • or every possible writing system and PDF structure.

Unsupported cases remain visible instead of being silently treated as successful analysis.


AI-use disclosure

AI-assisted tools, including ChatGPT, were used during development for tasks such as:

  • brainstorming,
  • architecture review,
  • debugging,
  • code review,
  • edge-case analysis,
  • testing strategy,
  • and documentation assistance.

AI does not determine FarSeat's runtime comparison results.

The running application uses deterministic processing of:

  • PDF structure,
  • text geometry,
  • display geometry,
  • modeled seat geometry,
  • and the selected reference profile.

I reviewed the implementation, architecture, testing, and final behavior and can explain how the system works.


What's next

Future versions could explore:

  • easier classroom-layout creation,
  • presentation-authoring integrations,
  • carefully validated support for more writing systems,
  • broader PDF-content support,
  • additional room-modeling options,
  • and further independent evaluation of the comparison approach.

But I would keep the same principle:

Do not turn uncertainty into confidence.


The idea in one sentence

Presentation tools understand the slide. AV tools understand the room. FarSeat connects the two so students and teachers can review what their slides demand from different classroom seats before presenting.

Built With

Share this project:

Updates

Submission history