Inspiration

When applying for internships, we kept running into the same problem: every opportunity meant another round of edits to our resume and cover letter. We had to decide which projects to emphasize, explain how our experience matched the role, and make the documents look presentable.

LLMs could help with the writing, but using them still involved repeatedly providing background information, refining prompts, and fixing formatting. Managing several applications made the process even more repetitive.

We built MineJob to bring those steps together. We wanted users to spend less time managing prompts and documents and more time finding opportunities that fit them. We also wanted to make the experience more inviting, so we designed a Minecraft-inspired workshop with the bright skies, glass, water, and greenery of Frutiger Aero.

What it does

MineJob helps users discover jobs and prepare tailored application materials through an interactive 3D workshop.

The noticeboard connects to JSearch, letting users search by job category, keywords, location, and remote-work preference. Users upload their resume, photo, and optional supporting documents to the materials chest, then reuse that background across separate applications.

At the workbench, users prepare application drafts using their experience and a job description. The generation workflow produces three documents: a professional resume, an ATS-oriented resume, and a tailored cover letter. Users can preview the generated layouts, review ATS scores and keyword coverage, and download the documents as DOCX files. Each application has its own draft and generation status, with progress available through the furnace.

The workshop combines pixel-style cursors and panels with background music and interaction sounds. Footsteps change between wooden floors indoors and grass outdoors, giving movement contextual feedback. Users can navigate with the keyboard or click objects to approach and interact with them. You can also head out of the workshop to take a walk and touch some grass!

How we built it

We built the frontend with JavaScript and Three.js. The scene combines block geometry and procedural pixel textures with transparent glass, reflective water, and soft lighting. Character movement, collision detection, camera following, and object interactions make the workshop usable as a website.

We connected the JavaScript and Three.js frontend to a FastAPI backend and a local Claude Code workflow. Uploaded materials and job descriptions guide content generation, while document builders and validation steps produce the three application documents and their previews. The frontend polls task status and displays generation stages, warnings, errors, ATS feedback, and download links.

ChatGPT helped us organize and refine the workflow. We used Codex and Claude to help implement, inspect, and test the code. Throughout development, we also learned from mentors and other students, whose feedback helped us clarify the product's purpose and design.

Challenges we ran into

One challenge was creating the block-world appearance we wanted. We did not find a ready-made texture pack that fit our direction, so we designed our own procedural pixel textures. Different surfaces needed to remain recognizable while still fitting the softer Frutiger Aero environment.

The 3D world also needed to work beyond a static screenshot. We had to handle furniture and wall collisions, keep the character visible when roofs or foliage blocked the camera, and make object interactions accessible through both keyboard movement and clicks. Opening a form needed to pause movement without losing the user's application state.

Document formatting was another major challenge. Generated content sometimes caused inconsistent spacing, awkward page breaks, and documents that exceeded our intended one-page layout. Producing useful text was only part of the problem; the final files also needed to be readable and ready to submit.

We addressed this with structured document builders and consistent formatting templates. We prioritized relevant experience, refined the layout, and used rendered previews, page-count checks, and text-integrity validation to catch overflow and formatting problems before making documents available for download. This helped us preserve meaningful content while keeping each document concise and presentable.

Another challenge was explaining why someone would use MineJob instead of opening an LLM chat. A mentor encouraged us to focus on simplifying the workflow. That feedback shifted our attention toward reusable personal materials, separate application drafts, and fewer repeated steps between finding a role and preparing its documents.

Finally, document generation takes time and can fail. We needed to distinguish submission, generation, validation, and query errors, preserve drafts, and show real task states without inventing progress percentages.

Accomplishments that we're proud of

We completed a real document-generation flow that uses a person's background to produce tailored application materials. In our completed runs, the output highlighted experience relevant to the job and carried those strengths into the cover letter.

We are also proud of turning the workshop into a functional interface. Its objects open real panels, application drafts remain available as users move through the scene, and task updates continue after a panel is closed. The world also gives users a playful way to access a practical workflow.

Alongside the visual work, we added regression checks for uploads, request validation, application state, task polling, downloads, movement, and collision. We also preserved reduced-motion and simpler interface options so the experience is not dependent on animated 3D navigation alone.

What we learned

We learned how to build an interactive frontend with Three.js, including camera behavior, collision detection, scene interaction, and rendering performance. We also gained experience integrating job-search services and a Claude-assisted document workflow into a single product.

Our mentor's feedback taught us to ask a more useful product question: which repeated steps can we remove for the user? That helped us focus on workflow and convenience instead of treating text generation as the whole product.

Working with AI coding tools also taught us the importance of clear boundaries and verification. Generated code still needs review, and a scene that looks correct may have broken navigation or interface behavior. Testing both the underlying logic and the actual browser experience became an important part of our process.

What's next for MineJob

We want to test MineJob with students applying for internships and learn where they still spend time correcting documents or repeating steps. Their feedback will guide improvements to job-search filters, document quality, and the connection between discovering a role and preparing an application.

We also want to add persistent application history, improve mobile performance and accessibility, and refine the workshop's materials and navigation. Our goal is to keep reducing the effort required to prepare a thoughtful application while leaving users in control of their personal information and final documents.

Built With

Share this project:

Updates

Submission history