Inspiration

A filming location can look perfect online and completely wrong through a camera.

Listing photographs are usually taken with one wide-angle lens, at one carefully selected time of day, to make the space look as attractive as possible. They do not tell a director whether the room is large enough for a dolly movement, whether sunset will reach a particular window, or how the space will feel through the lens intended for the scene.

Answering those questions normally requires a physical location scout. For independent filmmakers, that can mean spending hours travelling between venues before discovering that most of them cannot produce the scene they imagined.

I built StageSight to help filmmakers eliminate unsuitable locations before anyone gets in a car.

It does not replace the final physical scout. It helps directors, screenwriters, and cinematographers decide which places are genuinely worth visiting.

What it does

StageSight connects a screenplay to real filming locations in South Korea and helps filmmakers preview how those spaces could appear on camera.

The deployed catalogue contains overs 12,923 real location records:

Users can:

  1. Search locations by region, category, price, parking, window direction, and production requirements.
  2. Paste or upload a screenplay and receive location recommendations for each scene.
  3. Ask follow-up questions such as “more natural light,” “under KRW 100,000 per hour,” or “somewhere with a traditional courtyard.”
  4. Adjust the filming date, time, focal length, and camera angle.
  5. Generate an illustrative camera preview while preserving the identity of the original location.
  6. Research filming permits, noise restrictions, parking, and loading conditions with supporting source links.
  7. Save locations, conversations, and generated frames in the browser.
  8. Continue to the original rental platform when ready to contact or book the venue.

The Korean and English versions use the same product interface. Korean venue information is translated for international users, while the original source records and links remain preserved for traceability.

How we built it

The frontend is built with Next.js, React, and TypeScript. The backend uses FastAPI, Python, and SQLite, with both services deployed on Google Cloud Run.

Gemini

Google Gemini is used for:

  • Breaking a screenplay into scenes
  • Extracting spatial, lighting, mood, and camera requirements
  • Matching scenes to real catalogue locations
  • Supporting multi-turn location-scouting conversations
  • Generating camera and lighting previews from real listing photographs
  • Translating Korean venue information for the English interface

The model is never allowed to introduce an invented venue. Every recommended location ID is validated against the real catalogue before it reaches the user.

Parallel Search

The Parallel Search API supports the practical research that follows creative location selection.

It retrieves relevant information about:

  • Filming permits
  • Municipal restrictions
  • Noise requirements
  • Parking and loading
  • Location-specific production constraints

Gemini then summarises only what the retrieved sources support. If the evidence does not establish a rule or restriction, StageSight marks it as unconfirmed rather than filling the gap with a plausible answer.

Location catalogue

Each source platform has its own provider adapter. The adapters convert different listing formats into one common location structure containing:

  • Price and availability
  • Region and coordinates
  • Space dimensions
  • Natural-light information
  • Parking and production specifications
  • Original source URL
  • Listing type and content-rights status

A revision-based synchronisation system sends clients only the listings that were added, changed, or delisted. This avoids repeatedly transferring the full 12,923-record catalogue.

I also distinguish bookable listings from public filming references. A location that appeared in a public filming register may be useful for research, but StageSight never presents it as currently rentable unless that availability is verified.

Challenges we ran into

Preserving a real location during generation

The hardest technical challenge was not generating an attractive image. It was changing the requested light, lens, or camera position without changing the architecture of someone’s real property.

Some generations altered walls, windows, furniture, or room proportions. Others preserved the room but ignored the requested camera movement. We found that instructions such as “preserve the same architectural proportions” could unintentionally encourage the model to preserve the original composition as well.

To evaluate this more reliably, I built a repeatable image-testing workflow using:

  • A fixed sample of real locations
  • A rubric-based visual judge
  • Perceptual similarity and lighting measurements
  • Structural feature matching
  • A homography check that helps detect when an output is only a crop or pan

Across roughly 900 scored generations, I tested different prompts, workflows, and image models. Several changes that looked better subjectively produced no measurable improvement and were reverted.

For that reason, StageSight describes its generated frames as illustrative previews, not measured architectural simulations.

Keeping recommendations grounded

A conversational model can easily describe an appealing venue that does not exist. For a location-scouting product, that would make the recommendation useless.

I therefore separate reasoning from verification. Gemini may analyse the screenplay and select candidates, but the backend accepts only IDs that exist in the catalogue. Unknown IDs are discarded.

The same principle applies to regulatory research. Unsupported permit or curfew information remains visibly unconfirmed.

Working with real platform data responsibly

Being able to access a listing does not automatically provide permission to republish or modify its content.

StageSight records the source and rights status of every location. Some public-data photographs may be displayed with attribution but cannot legally be modified. The image-generation API rejects those photographs instead of relying only on the interface to hide the button.

Additional provider adapters remain disabled when platform terms or content permissions are unclear.

Keeping the catalogue current

Listings disappear, prices change, and crawlers sometimes fail temporarily. A failed request must not be treated as evidence that thousands of spaces have been removed.

Delisting therefore requires repeated misses and is isolated by provider. A temporary failure from one source cannot remove listings belonging to another source.

Accomplishments that we're proud of

I am proud that StageSight became a working end-to-end product rather than just an AI demonstration.

The deployed application brings together over 12000 locations. A filmmaker can discover a space, match it to a screenplay, discuss alternatives with Gemini, preview different camera and lighting choices, research filming constraints through Parallel Search, and continue to the original listing—all within one workflow.

I are especially proud of the safeguards behind that experience:

  • Gemini can recommend only locations that exist in the catalogue.
  • Bookable listings are clearly separated from reference-only locations.
  • Missing prices, permits, and restrictions remain visibly unconfirmed.
  • Every location retains its original source and URL.
  • Images whose licences prohibit modification are rejected by the generation API.
  • Korean venue information is translated for international users without overwriting the original source data.
  • Delisted venues and temporary provider failures are handled separately.

I also built a repeatable image-evaluation system and used roughly 900 scored generations to compare prompts and models. This allowed us to reject changes that looked promising but did not produce measurable improvements.

What we learned

The biggest lesson was that an impressive AI output is not automatically a useful or trustworthy product result.

I initially evaluated generated frames by asking whether they looked cinematic. That was not enough. A beautiful image could still invent a window, move a wall, or ignore the requested camera angle.

Building a measurement workflow changed how we made decisions. We learned to compare completed test rounds, measure normal evaluation variance, and combine visual judgement with deterministic checks. I also learned that a more expensive model is not necessarily better: in our controlled comparison, the cheapest and fastest image model performed slightly better than the most expensive option.

Most importantly, we learned that uncertainty should remain visible. A missing price is not zero. A filming reference is not necessarily bookable. A retrieved source that does not mention a curfew is not evidence that there is no curfew.

For a tool that may influence real production decisions, saying “not confirmed” is more valuable than producing a confident but unsupported answer.

What's next for StageSight

My next priorities are:

  • Add more rental platforms after receiving permission to use their content
  • Generate short camera movements in addition to still frames
  • Move the catalogue to persistent cloud storage for continuous updates
  • Add accounts and cross-device project collaboration
  • Move production credentials into Google Secret Manager
  • Test StageSight with working filmmakers and measure how much scouting time it can realistically save

StageSight begins with a simple goal: help filmmakers understand whether a real place can support their imagined scene before committing the time and cost required to visit it.

Built With

Share this project:

Updates

Submission history