Blog
September 14, 2025
This week, we spent a lot of time shaping JAICE’s look and overall vibe, while also locking in some big development decisions. We kicked things off by putting together our design document and style tile, basically a snapshot of the colors, typefaces, and mood we want the app to have.
One of the first calls we had to make was our tech stack and the general “feel” of the app. After tossing around a bunch of ideas, we landed on a dark theme with cool blues. Most tech apps lean toward cool tones, and we like how a darker palette is easier on the eyes, especially for users who might be staring at their job applications for a while. Plus, it just looks sleek and professional. I even added a peek at our style tile so you can see where we are headed.
With the visuals coming together, we also finalized the must-have features for our first release. Now we know exactly what JAICE needs to do on day one and what can wait for a future update.
Design work kept rolling, too. I worked on the color palette, explored typefaces, and helped pin down an icon style to keep everything consistent. We mapped out some key layout choices, focusing on the dashboard, which will be the core of the user experience.
On the technical side, we discussed the dataset that will power JAICE’s AI features to keep our recommendations accurate and helpful. And of course, we couldn’t resist brainstorming a few version 2.0 ideas for after graduation.
All in all, it was a productive week that gave JAICE a clear identity and set us up for prototyping and getting our workflow in place.
September 21, 2025
This week felt like a big step forward because we finally got to see JAICE start to look like a real app. I spent most of my time building out the main page prototype, where users go right after signing in. It is the heart of the whole experience, with the status bins and all the job applications laid out. Seeing it on screen made it easy to imagine how someone will move their applications from “Applied” to “Interviewing” and beyond.
While I was focused on that, the rest of the team knocked out key pieces too. They put together the sign-in/sign-up page, built an early version of the analytics dashboard, and created a settings page. Once those were in place, we could finally click around like a real user, which was super helpful. Walking through everything gave us a bunch of new ideas, like adding a “Sort By” button so people can quickly reorder their applications by date or company.
We also kicked off our Jira board this week. Everyone started adding tasks with descriptions and acceptance criteria so we can track what is coming up and keep things organized. It already makes the next few sprints feel way more manageable.
Overall, it is exciting to see JAICE take shape beyond wireframes and planning docs. Every new page or feature we build sparks more ideas about what we can add, tweak, or simplify. We are getting closer to something that feels real, and it is motivating to watch the app come alive piece by piece.
September 28, 2025
This week was all about polishing the prototype and making it feel more like the real thing. I wrapped up the home page and added a bunch of small but important tweaks. Now you can select multiple cards at once and even expand a card to see more details. I also added a delete icon that appears after you’ve selected cards, since before, it was not clear what you could actually do once you made a selection. On top of that, I wired up the buttons so you can click through the prototype and experience the flow the way a user would, almost like a mini version of the final app.
As a group, we kept pushing the prototype forward. We reorganized the settings page, breaking it into clearer sections so it is easier to find what you are looking for. The dashboard got upgraded too. Instead of cluttering the screen with every bit of data at once, we made the graphs and pie charts clickable. Now, a user can click on a chart to expand it to full screen and see the description only when they need it. This feels a lot more user-friendly.
To top it off, we locked in the tasks for our first sprint, which starts next month. Having that list ready means we can hit the ground running when it is time to start turning this prototype into an actual working product.
Seeing everything come together like this is exciting since it is starting to feel less like a concept and more like the real thing.
October 5, 2025
This week, we started laying the groundwork for our project. We built out the beginning of each page, and some are already close to their final stage. Right now, most of the buttons just take you from page to page, but with this framework in place, we will be ready to start backend development next week. That is when the buttons will start being able to do anything beyond navigation.
One feature we worked on was the collapsible sidebar, which I helped to build alongside another teammate. I added the icons and polished the design by matching colors to our branding and making the buttons change color when you are hovering or on that specific page. It is a small detail, but it makes the interface feel more polished.
I also started to set up our global CSS file, adding in our fonts and color palette so we can reuse them easily as we go, instead of having to go back later to fix them. Hopefully, that saves us a lot of time in the long run.
Lastly, I created the base layout for the account settings page. The buttons are all there, like change name, password, email, or delete account, but for now, they do not have functionality yet.
I am excited (and a little nervous) to dive into the backend development next week. Focusing on the UI first was definitely the right move, since it gave us time to better understand React and how everything would fit together. Hopefully, next week goes as smoothly as this one did!
As a group, we kept pushing the prototype forward. We reorganized the settings page, breaking it into clearer sections so it is easier to find what you are looking for. The dashboard got upgraded too. Instead of cluttering the screen with every bit of data at once, we made the graphs and pie charts clickable. Now, a user can click on a chart to expand it to full screen and see the description only when they need it. This feels a lot more user-friendly.
To top it off, we locked in the tasks for our first sprint, which starts next month. Having that list ready means we can hit the ground running when it is time to start turning this prototype into an actual working product.
Seeing everything come together like this is exciting since it is starting to feel less like a concept and more like the real thing.
October 12, 2025
This week, we officially started backend development, which feels like a huge milestone. We set up Firebase to handle account information like emails and passwords. Which is our first step toward making JAICE fully functional beyond the prototype.
I worked on the sign-up page, where users can now create their accounts. It checks that both email fields match and that no existing account is already using that email. Another teammate handled the sign-in page, and someone else added error messages so users can see exactly what went wrong if they have trouble logging in or signing up. Those little details make the whole experience feel smoother and more user-friendly.
I also created the shell UI for the sticky bar that appears at the top of every page. It shows which user is currently logged in and includes a search bar that can search across the entire app, not just the page you are on, though it has no functionality yet.
We also added quick sign-in with Google, which works great so far. We tried to add Microsoft, too, but Firebase made that process pretty tricky, so we decided to hold off for now. We only need one integration for testing anyway, especially once we start connecting the AI email parsing later.
Next week, we are planning to begin exploring the AI side of the project, not integrating it just yet, but researching models and figuring out how to make them fit into JAICE’s long-term plans.
October 19, 2025
This week, I dove deeper into connecting JAICE with real email data. I focused on setting up the Google OAuth API consent process, which lets users securely give permission for the app to access their Gmail.
After getting the consent flow up and running, I tested it by having JAICE read the last 10 emails from a connected account. Seeing those show up on the home page was a big moment. It confirmed that the connection between our app and Google’s API is live and working properly.
I also added a feature for users who do not sign up directly with Google. Now, even if someone logs in using a regular email and password, they will still have the option to connect their Gmail account later to unlock the email-reading feature. That way, we are keeping things flexible for different types of users without forcing a single login method.
Overall, it is exciting to finally see JAICE starting to pull in real data from the outside world instead of just mock information. This step brings us closer to the AI email parsing features we have been planning since the beginning. Next week, we will start exploring how to analyze those emails using natural language processing so the app can identify job-related messages automatically and make tracking applications even smarter.
October 26, 2025
This week was all about diving into the AI side of JAICE and figuring out what models we will be using to power our email parsing and classification features. We spent most of our time researching and breaking things down into three main models that will each handle a different part of the process.
The first is a binary model that determines whether an email is job-related or not. This will help us filter out everything that is not relevant, so JAICE only focuses on messages that matter to the job search.
The second model, which I focused on this week, is a classification model. Its job will be to sort each email into the correct category, like “Application,” “Interview,” “Offer,” or “Accepted/Rejected.” For this one, we are exploring a zero-shot classification approach, which is really exciting because it does not require us to manually train the model on every possible label. Instead, it can understand new categories based on context, which makes it more flexible and scalable.
The third model will handle Named Entity Recognition (NER) to extract important details such as the company name, job title, and other information we will want to display for each application to the user.
Outside of the AI research, I also made a small but useful UI update. Each job card now includes a “View Email” link. This lets users open the email directly if they want to see more details, instead of having to log in and search for it manually.
Next week, we are planning to start testing some of these models to see which ones integrate best with our current setup.
November 2, 2025
This week, I focused on integrating the classification model into JAICE, which was a big step for our AI features. The model now takes job-related emails and automatically labels them based on what stage they are in, like Applied, Interview, Offer, Accepted, or Rejected. Seeing it start to categorize messages on its own was really exciting after all the research we did last week.
In addition to labeling, the model also stores a confidence score for each prediction. This will come in handy later when we start adding user feedback. If a score falls below our threshold, JAICE will flag it for review and ask the user to double-check the classification accuracy. That way, we can make sure users see the right status for their applications instead.
Right now, the system is only storing these confidence scores in the database, which is a good first step. The model itself seems pretty accurate so far, though we still need to do more testing with larger datasets to be sure. One thing we have noticed is that it takes a little while to process and classify each email. After discussing it as a team, we agreed that we would rather have it be slower but more accurate than fast and wrong.
Next week, we will continue fine-tuning the model and testing different thresholds to strike the right balance between speed and accuracy as we move closer to integrating it fully with the rest of JAICE.