diff --git a/scouting/www/notes/notes.component.ts b/scouting/www/notes/notes.component.ts
index 09178f8..0f0eb82 100644
--- a/scouting/www/notes/notes.component.ts
+++ b/scouting/www/notes/notes.component.ts
@@ -2,11 +2,14 @@
 import {Builder, ByteBuffer} from 'flatbuffers';
 import {ErrorResponse} from 'org_frc971/scouting/webserver/requests/messages/error_response_generated';
 import {RequestNotesForTeam} from 'org_frc971/scouting/webserver/requests/messages/request_notes_for_team_generated';
-import {Note as NoteFb, RequestNotesForTeamResponse} from 'org_frc971/scouting/webserver/requests/messages/request_notes_for_team_response_generated';
+import {
+  Note as NoteFb,
+  RequestNotesForTeamResponse,
+} from 'org_frc971/scouting/webserver/requests/messages/request_notes_for_team_response_generated';
 import {SubmitNotes} from 'org_frc971/scouting/webserver/requests/messages/submit_notes_generated';
 import {SubmitNotesResponse} from 'org_frc971/scouting/webserver/requests/messages/submit_notes_response_generated';
 
-type Section = 'TeamSelection'|'Data';
+type Section = 'TeamSelection' | 'Data';
 
 interface Note {
   readonly data: string;
@@ -15,7 +18,7 @@
 @Component({
   selector: 'frc971-notes',
   templateUrl: './notes.ng.html',
-  styleUrls: ['../common.css', './notes.component.css']
+  styleUrls: ['../common.css', './notes.component.css'],
 })
 export class Notes {
   section: Section = 'TeamSelection';
@@ -33,8 +36,10 @@
     builder.finish(RequestNotesForTeam.endRequestNotesForTeam(builder));
 
     const buffer = builder.asUint8Array();
-    const res = await fetch(
-        '/requests/request/notes_for_team', {method: 'POST', body: buffer});
+    const res = await fetch('/requests/request/notes_for_team', {
+      method: 'POST',
+      body: buffer,
+    });
 
     const resBuffer = await res.arrayBuffer();
     const fbBuffer = new ByteBuffer(new Uint8Array(resBuffer));
@@ -42,8 +47,9 @@
     if (res.ok) {
       this.notes = [];
       const parsedResponse =
-          RequestNotesForTeamResponse.getRootAsRequestNotesForTeamResponse(
-              fbBuffer);
+        RequestNotesForTeamResponse.getRootAsRequestNotesForTeamResponse(
+          fbBuffer
+        );
       for (let i = 0; i < parsedResponse.notesLength(); i++) {
         const fbNote = parsedResponse.notes(i);
         this.notes.push({data: fbNote.data()});
@@ -53,24 +59,26 @@
       const parsedResponse = ErrorResponse.getRootAsErrorResponse(fbBuffer);
 
       const errorMessage = parsedResponse.errorMessage();
-      this.errorMessage =
-          `Received ${res.status} ${res.statusText}: "${errorMessage}"`;
+      this.errorMessage = `Received ${res.status} ${res.statusText}: "${errorMessage}"`;
     }
   }
 
   changeTeam() {
-    this.section = "TeamSelection";
+    this.section = 'TeamSelection';
   }
-  
+
   async submitData() {
     const builder = new Builder();
     const dataFb = builder.createString(this.newData);
     builder.finish(
-        SubmitNotes.createSubmitNotes(builder, this.teamNumber, dataFb));
+      SubmitNotes.createSubmitNotes(builder, this.teamNumber, dataFb)
+    );
 
     const buffer = builder.asUint8Array();
-    const res = await fetch(
-        '/requests/submit/submit_notes', {method: 'POST', body: buffer});
+    const res = await fetch('/requests/submit/submit_notes', {
+      method: 'POST',
+      body: buffer,
+    });
 
     if (res.ok) {
       this.newData = '';
@@ -82,9 +90,7 @@
       const parsedResponse = ErrorResponse.getRootAsErrorResponse(fbBuffer);
 
       const errorMessage = parsedResponse.errorMessage();
-      this.errorMessage =
-          `Received ${res.status} ${res.statusText}: "${errorMessage}"`;
+      this.errorMessage = `Received ${res.status} ${res.statusText}: "${errorMessage}"`;
     }
   }
 }
-
diff --git a/scouting/www/notes/notes.module.ts b/scouting/www/notes/notes.module.ts
index c537550..881c6db 100644
--- a/scouting/www/notes/notes.module.ts
+++ b/scouting/www/notes/notes.module.ts
@@ -9,6 +9,4 @@
   exports: [Notes],
   imports: [CommonModule, FormsModule],
 })
-export class NotesModule {
-}
-
+export class NotesModule {}
diff --git a/scouting/www/notes/notes.ng.html b/scouting/www/notes/notes.ng.html
index 90f004a..a69ba88 100644
--- a/scouting/www/notes/notes.ng.html
+++ b/scouting/www/notes/notes.ng.html
@@ -3,24 +3,28 @@
 <ng-container [ngSwitch]="section">
   <div *ngSwitchCase="'TeamSelection'">
     <label for="team_number_notes">Team Number</label>
-    <input [(ngModel)]="teamNumber" type="number" id="team_number_notes" min="1" max="9999">
+    <input
+      [(ngModel)]="teamNumber"
+      type="number"
+      id="team_number_notes"
+      min="1"
+      max="9999"
+    />
     <button class="btn btn-primary" (click)="setTeamNumber()">Select</button>
   </div>
 
   <div *ngSwitchCase="'Data'">
-    <h3> Scouting team: {{teamNumber}}</h3>
+    <h3>Scouting team: {{teamNumber}}</h3>
     <ul *ngFor="let note of notes">
-      <li class="note">
-        {{ note.data }}
-      </li>
+      <li class="note">{{ note.data }}</li>
     </ul>
     <textarea class="text-input" [(ngModel)]="newData"></textarea>
     <div class="buttons">
-      <button class="btn btn-primary" (click)="changeTeam()">Change team</button>
+      <button class="btn btn-primary" (click)="changeTeam()">
+        Change team
+      </button>
       <button class="btn btn-primary" (click)="submitData()">Submit</button>
     </div>
   </div>
-  <div class="error">
-    {{errorMessage}}
-  </div>
+  <div class="error">{{errorMessage}}</div>
 </ng-container>
