TravelDesk Production Brief

An enhanced Google Sheets web tool built to improve collaboration between account managers, ad operations, and production teams.

A mockup of the TravelDesk production brief on a tablet device

Technologies

  • HTML
  • CSS
  • Google Apps Script
  • JavaScript
  • AWS S3
  • Figma

Overview

The TravelDesk Production Brief is an internal web tool built on top of Google Sheets to streamline collaboration between account managers, ad operations, and production teams; reducing ambiguity and improving production efficiency.

Background

TravelDesk is a travel advertising agency that empowers brands to connect with target audiences through engaging, high-performing ad campaigns and digital experiences.

Campaigns are usually handled by account managers, media teams, designers, developers and the ad operations teams. Before production starts, a brief is drafted to inform all team members about the client, the campaign details, goals, timelines, etc.

In the past, briefs were stored in Google doc files with the details coming from email chains between the client, account managers and production director for the most part.

user_3_line

My Role

As the sole developer, I led the end-to-end development of the Production Brief — from identifying workflow pain points to designing, implementing, and maintaining features.

I collaborated closely with the Production Director to shape the vision and user experience. I also worked directly with account managers and ad operation teams to refine the feature functionality based on their usage.

My other responsibilities include:

  • Linking platform specifications to the form and tutorial
  • Quality testing the form and functionality
  • Providing guidance and support to the wider team
  • Documenting guides and updates

Problems

Problem alt desc

1. Fragmented Information

Campaign details were scattered across emails and Google Docs. Often times, feedback and iterations were lost due to long email threads.

Problem alt desc

2. Manual Repetitive Work

Account managers manually transferred data from emails. Also members of the Ad Ops team called clients to preview background audio samples only available on Spotify Ads.

Problem alt desc

3. Lack of Early Validation and Guardrails

Clients weren't aware when their content didn't meet ad platform guidelines. Editorial errors were discovered late in production.

Problem alt desc

4. Unclear Content Output

There wasn't a clear way for clients to visualise how their content would translate into banners. Without this context, content submissions often required clarification which slowed down the production process.

The existing workflow created operational friction, delayed production, and increased the risk of avoidable errors.

I researched possible solutions to solve these issues. Multiple third-party solutions exist but came at a cost. Some couldn’t address all problems. While a standalone web application would be flexible, introducing backend infrastructure would increase operational complexity and cost.


Solutions

Since TravelDesk operated within Google Workspace, recreating the template with Google Sheets then enhancing it with Google Apps Script seemed like the ideal low-cost solution.


Google Sheets was ideal because:

  • Staff were already familiar with it
  • Briefs can be referenced in other documents - making them a source of truth
  • User inputs can be validated with warnings shown in the UI
  • Characters can be counted
  • Perform calculations with data from other cells
  • Reference data from other sheets which reduces error and data entry
  • Data can be protected by limiting edits to users or a user group

Google Apps Script allows the spreadsheet to perform actions which aren't standard to Google Sheets. It also integrates with other Google services to automate processes and improve the user experience of Google apps.


For this project, enhancements include:

Structured Data Collection in action

Structured Data Collection

Required fields are now enforced.

Dropdowns offer specific values to reduce error. Certain fields now contain character counts and limit warnings.

Clients are required to fill the campaign and feedback forms.

Form Guides in action

Form Guides

All forms contain tutorial guides which consist of reference images, a key and direct links to platform's specifications.

Clicking a referenced item highlights the row in the form.

Workflow Automation in action

Workflow Automation

Repetitive tasks (eg: creating new form themes, new rows, etc) are now automated by the click of a button.


Files can also be uploaded and organised directly in the production team's Google Drive space through the sidebar upload forms.

Spotify Audio Previews in action

Spotify Audio Previews

Clients have the ability to preview and select background music available on Spotify’s ad platform.

Technical Approach

File Upload Logic

The upload feature was developed using Google Apps Script as the server layer and a custom HTML sidebar as the frontend layer.


Apps Script handled:

  • File validation and verification
  • Secure uploads to Google Drive
  • Writing file links back to the spreadsheet (on success)
  • Logging file data and upload status for troubleshooting


The HTML sidebar:

  • Dynamically rendered required assets based on campaign specs
  • Filtered acceptable file types while selecting files
  • Managed upload state notifications (loading, progress, success, error)
  • Queued files sequentially to prevent race conditions

Files were verified on the frontend and backend to ensure data integrity and prevent misuse.


This separation also ensured:

  • A responsive UI experience
  • Secure file handling
  • Scalable logic as more asset types were added
A high level flowchart illustrating the core upload functions and process.

A high-level flowchart illustrating the core upload functions and process. (See full image)

Google Drive Integration

Google Drive was integrated into the codebase by requiring the “Google Drive Service” in the coding environment. This was used to enable files to be uploaded to the production team’s Google drive folder.

Once integrated, I was able to use its methods to control Google Drive.

Technologies Used

HTML and CSS

Used in the sidebars and modals for content and custom UIs.

Google Apps Script

A library containing built-in methods to control and access the spreadsheet and other Google Apps.

Apps Script uses JavaScript ES5 syntax and is bound to individual files.

Javascript

Used in conjunction with Google App Script to create, read, update and delete data in the spreadsheet.

Javascript is also used in sidebar content to read and display file information in the upload feature.

Amazon Simple Storage Service (Amazon S3)

Visual assets are stored in AWS S3 to reduce file size and loading speed.

brain_line

Technical Challenges

File Access and Permissions

All staff have the ability to edit and use the features (scripts) within the production brief.

Before these scripts can run successfully, users have to grant permissions to the script to access Google services and data under their (Google) account.

  • Account managers had to invite clients to the brief's folder to gain access to the brief and the ability to upload files. If clients only had access to the brief, files would fail to upload.
  • Clients without Google accounts could read and fill out the forms but can't run the scripts. Google accounts are mandatory for granting script permissions.

Performance and Quality Assurance

File Size Optimisation

As more forms were added, I noticed the briefs were large (~50 MB). This was because the custom UI elements and high-res reference images were embedded into the spreadsheet. After externally hosting the images, The file size reduced to ~15 MB.

To reduce network overhead in the sidebar UI, I combined all icons into a single SVG sprite. This significantly reduced HTTP image requests and improved loading speed within the Apps Script environment.

Form Calculations and Actions

Initially, I implemented character counting using scripted functions. While functional, this introduced unnecessary loading states and performance overhead. Refactoring to native Google Sheets formulas significantly improved responsiveness and reduced execution latency.

Known Quirks

Sometimes, the custom buttons can be misplaced in spreadsheets after loading. They return to their original position after switching to another sheet and returning. This is an issue on Google's side and they are aware of it.

Impact

This project streamlined the production team's workflow and made things easier for other teams. Additionally, this project:

  • Standardised the production process across new campaigns.
  • Reduced late-stage production revisions caused by invalid platform specifications.
  • Eliminated repetitive manual data entry.
  • Saved approximately £3,000 annually compared to third-party solutions.
  • Adopted as the default briefing system across the department.

Following adoption, additional features and updates were introduced based on team feedback. This reinforced its role as a living internal product.

mortarboard_line

Learnings

  • If I were to rebuild this today, I would introduce a more modular, object-oriented structure. I would treat each form as an instance of a class with defined common methods. This would improve scalability and long-term maintenance of the code as additional ad formats are introduced.

    At the start of this project, i was improving my JavaScript skills and skilled with Object Oriented Programming.
  • This project gave me the opportunity to explore and understand how file uploads work. Before this, I’d never built an upload feature.