Headquarters SWE Internship
Designed the messaging/chat database schema
Implemented 2-way SMS using AWS SNS + Lambda and saved inbound messages to the database.
Built outbound SMS delivery logging using CloudWatch Logs Subscription Filters + Lambda → sent results to our server.
Designed the frontend chat UI (iMessage style) and implemented message list/detail/compose pages.
Implemented routing logic for patient SMS replies depending on available support team members.
Added real-time chat using SSE and completed end-to-end chat flow.
Nov 17 - Nov 23:
Implemented ghost preview for rehab templates and refactored related APIs.
Rebuilt the z-index system with Matan to unify multiple conflicting layers.
Added small UX improvements (email/phone input on patient creation, map UI for in-person appointments, timeline fixes).
Fixed multiple bugs and improved consistency across the interface.
Participated in bug-hunting and tested login + PWA features.
Nov 9 - Nov 16 :
Added edit functionality on the timeline for appointments and evaluations (easy time adjustments).
Fixed SCAT-6 PDF auto-population and enabled sending the completed PDF via email.
Implemented saved priority/order for rehab items, preserving layout across refresh and syncing with the patient view.
Added UX improvements :
“Go back to today” badge + smooth jump animation
Patient sidebar auto-selects the first valid patient when filters apply
Tooltips showing evaluation completion time
Completed 20+ tasks on the Monkey Board and made 50+ commits.
Joined engineering meetings and appreciated Lucas’s updates and Orestis’s guidance.
- Availability page - made users make appointment on availability page. Reused booking component.
- Recommendation lists are shown on plan-builder. Clinicians can select recommended re
- Timeline(Planbuilder) : Users can add rehab-items on the timeline. Timeline has zoom feature, and users can resize rehab-items and control time span.
- Evaluation icons : Evaluation is kind of survey that help diagnose users' status. Drafts are saved and can resume from where users stopped.
- Appointment : users can make appointment. Appointments are also shown as icons.
Oct 27 - Nov 1 :
- Launched and improved the new timeline: Gathered clinician feedback (Holly, Mary, Austin), replaced evaluation bars with icons, added appointment tab, hover details, and refined zoom/new-item visibility.
- Refactored and fixed bugs: Improved API efficiency for fetching evaluations/appointments; solved complex resizing and alignment issues; completed 50+ commits and 10+ action items on Monkey Board.
- Collaborated effectively: Productive meetings with clinicians and the engineering team; discussed API reuse, HIPAA compliance, and new productivity tools like Cursor 2.0.
- Reflections & next steps: Learned lessons from accidental API deletion, suggested group brainstorm for AI rehab-recommendation feature, continued developing domain knowledge and communication through clinician interactions.
- Enhanced PlanBuilder UX: Added a drag-based “add-new” popover like Google Calendar with rehab item search; created appointment/evaluation chips with hover lists and smooth zoom animations; improved rehab-bar movement and snapping behavior.
- Implemented and optimized key features: Built expandable popover modals, optimized “delete all,” “revert,” and “template” actions, and refined SQL/UX logic for replacing evaluation bars with icons.
- Debugging and collaboration: Fixed Google Calendar webhook bug, debugged environment-specific popover issue, collaborated with Orestis via whiteboard and pair coding to resolve logic errors.
- Growth and learning: Reflected on API and UX efficiency, explored AI agent integration in Masters project, and appreciated internship extension through May while preparing for continued innovation and teamwork.
- Focused on new PlanBuilder development: Continued major 2-week project with over 50 commits and full implementation of requirements; collaborated closely with Lucas, Orestis, and clinicians for design and usability feedback.
- Applied feedback quickly: Added recurring icons and implemented user feedback promptly, emphasizing fast iteration and customer satisfaction as key strengths.
- Collaboration and teamwork: Incorporated valuable feedback from Mike on timezone and optimistic updates; welcomed Matan to the team and benefited from his insights.
- Reflections and learning: Improved communication to avoid deployment confusion, deepened understanding of React, TypeScript, and GraphQL, and identified the need to clarify requirements and ask more questions proactively.
-
Survey System Expansion:
Added new survey questions for Headstrong, Travis One AG, and SISC in the database — a time-consuming but crucial task to improve data collection and user input flow. -
Feature Polishing — CEUs & Plan Builder v3:
Fixed bugs and built missing mobile pages for CEUs, and started developing Timeline (Plan Builder v3) to strengthen core scheduling and visualization features. -
Collaborative Debugging & Knowledge Sharing:
Joined a productive Friday debugging session where engineers reviewed each other’s code and discovered hidden issues together. -
UX & Branding Enhancement:
Implemented organization logo display on the booking page via S3 integration, improving both functionality and brand visibility. -
Performance Insights & Growth Mindset:
Investigated app performance bottlenecks (S3 latency, dev-mode overhead) and reflected on skill growth, communication, and long-term improvement as a software engineer.
Sep29 - Oct 5 :
During the week of September 29 – October 5, 2025, work focused on stabilizing and automating the Scheduler system. The booking interface was revamped by replacing the old “dashboard” with a new BookingList page, adding filters for clinicians, event types, languages, and time zones to improve usability. A Zustand store was introduced to manage shared states such as organization ID, timezone, and scheduler state. Several bugs were resolved, including duplicate Google Calendar events, incorrect created_by values, and recurring availability issues. On the backend, automated webhook renewal was implemented using AWS EventBridge and Lambda (executed every 3 hours), along with a reminder notification system that sends SMS and email reminders 24 hours, 1 hour, and 1 minute before appointments. The participant editing flow and UI components were also refined, and all updates were successfully deployed to production.
Sep 22 - Sep 28 :
Scheduler Building
-
Booking & Participant Pages
-
Refactored booking page to support different user types (patient, team member with/without portal, public), enabling them to add patients, caretakers, and associations across tables.
-
Added dropdown lists for patients and team members with portal permission; integrated query parameter injection into scheduler workflow (using zustand store).
-
Fixed booking page bugs, including the “go-back” button error and participant page issues.
-
Removed unused API file (
book/create), unused store selectors, and extracted shared interfaces (BookingParams, Patient, Caretaker, TeamMember) intotypes/scheduler.ts.
-
-
Payments & UX
-
Implemented Apple Pay and Google Pay, updated their card order, and deployed to production.
-
Fixed UI/UX issues: carousel empty card bug, availability modal popup position, and timezone/state priority logic in scheduler welcome & booking pages.
-
-
Infrastructure & Notifications
-
Prevented Slack notifications from firing when running locally.
-
Implemented SQS + Lambda to queue Google Calendar webhook notifications, resolving DB connection pool issues.
-
Now, all Google Calendar changes are reflected in our DB within ~1 minute.
-
Webhook & Calendar Integration
-
Registered domain with Google to watch calendar changes.
-
Built flow:
-
Google sends push notification → API receives headers.
-
Headers stored in DB (
google_calendar_channels). -
Events fetched & processed to update appointments.
-
-
Fixed major blocker: DB pool exhaustion caused by concurrent pushes. Solved by routing through SQS FIFO + Lambda consumer.
-
Deployed
consumeAPI route for Lambda → our server processing.
Sep15 - Sep 21 :
-New pages: Built Payment, Address, and Insurance pages, focusing on UX by benchmarking other services and designing data schemas aligned with FHIR standards.
-Clinician scheduling: Polished the clinician scheduling page, incorporating 20+ pieces of feedback from boss, which significantly improved both design and practicality.
-Booking page: Collaborated with boss to improve the booking page design and resolved a time zone issue that caused incorrect date display on test devices.
-Stripe integration: Added environment variables in Amplify, enabling Stripe API to run successfully with the live key.
Seo 12(Fri) - Sep 14(Sun) :
Features & Improvements
-
Added
buffer_inputsandmin_advance_minutesfields on the clinician availability page -
Introduced a location (address) page for patients to enter details after booking, with Google API autocomplete
-
Moved the “Add” button to the bottom of the caretaker section
-
Enhanced calendar UX: improved drag functionality with precise grid alignment, fixed hover line alignment, and corrected z-index issues in the availability modal
Notifications & Calendar
-
Fixed Google Calendar invitation issues in production
-
Enabled Google Calendar email notifications for appointment invites
-
Resolved JSON parsing error causing intermittent POST failures in the process-notification API
-
Fixed timezone issue that caused Slack and SMS messages to display one day late
API
-
Added a public scheduler address API endpoint:
/api/scheduler/public/address/route.ts
Sep 8(Mon) - Sep 11(Thu) :
Infrastructure & Deployment
Integrated Amplify ENV and successfully merged/deployed to the main branch.
Fixed time-related errors in the deployed environment by eliminating improper
Date()usage.
Integrations & Notifications
Completed Google Calendar, SMS, and Slack integration fixes by adjusting API call patterns.
Added AWS SNS SMS integration and stored Google event/meet links in the Appointment table.
Separated DB transactions from external notifications (Slack, SMS, GCal) to improve booking UX speed.
Database & Schema Enhancements
Created clinician–patient relation table when new patients are added.
Added buffer_minutes and min_advance_minutes columns to the
scheduletable.Introduced a refresh token column in the
organizationtable for GCal organizer use.
Frontend & User Experience
Improved booking pages:
Disabled/grayed out unavailable dates.
Enabled filtering slots by clinician ID and query params.
Combined First/Last Name fields into one input and made Name + Email mandatory.
Added caretaker input fixes and a confirmation page after booking.
Built a shared scheduling component for public, simple, and advanced booking flows.
Code Quality & Collaboration
Rebasing and syncing with main branch.
Addressed duplicated environment variables for Google credentials.
PRs submitted for fixes and new features, with ongoing feedback incorporated
Sep 4(Thu) - Sep 5(Fri) :
Clinicians can make mark their availability (included 'recurring' function as well)
Worked on Patient Side Appointment Page
Based on the availability clinician made, patients can make reservation.
Made it one-click UI so patients with concussion can easily use it
Attached Google Calendar Invitation, so participants of appointment could get google calendar invitation
( To Do : Mobile view , Calendar Page that includes stakeholders' schedule )
Sep 3(WED) - fixed db schema(reflecting convention), designed FE/BE of Clinician Side of Scheduling
(To Do : showing occupied time table on front end -> tomorrow )
(To Do : finishing rest of scheduling dashboard -> tomorrow )
Sep 2(TUE) - designed db schema for new feature (scheduling system)
Comments
Post a Comment