By
El Copeland
January 4, 2025
•
20 min read
Professional Development
Fundamental Skills
Tutorials

When is the last time you updated your Resume/CV?
There was a little bit of chatter in the MSPGeek Discord last month about what actually needs to go on a resume. (MSPGeek Website | MSPGeek Discord)
It got me curious: how many of my friends in the MSP space have an up-to-date resume, and one that they’re proud of?
Uh-oh, have you not dusted yours off in a few years?
Let’s talk about why you might want to change that even if you’re happy where you are and some practical advice for updating yours into something you’re proud to showcase.
Let’s start with the basics.
A resume is a generally a concise document highlighting your professional experience, skills, and accomplishments. When I’m coaching others, I use the analogy that a good resume is just a firm handshake. It's what gets your foot in the door for hopefully further conversations. You’ll want your resume to be tailored to your current interests and objectives, whittled down to reflect your story and expertise.
On the other hand, a CV, or curriculum vitae, comes from Latin words curriculum, which came from the original word currere which translates to run, as in a race; and vitae, meaning life. Curriculum has since been adapted as an educational term for what you’d be learning in a class or program, but it originally just meant “what race are you running?”
With that in mind, a CV literally translates to course of life, and as such it’s a beefier document than a resume, reflecting a detailed account of one’s professional journey, path, and achievements, showcasing a full history of your education, research, and work. I coach my people to keep both on hand, considering the CV as the “source of truth” for everything you’ve ever done with complete timelines and full descriptions, and creating multiple child resumes depending on your specific job application or use case.
In general, in the MSP (Managed Service Provider) space and in the employment arena, these words are often used interchangeably but I encourage you to default to providing a simpler resume, and as such we’ll be focusing on that term in this article. However, there are places and times that it makes sense to provide a full CV and we’ll address that as we go.
Having an up-to-date resume is a good practice to keep even if you’re not actively looking for jobs. Some companies that bid for work include team member resumes and CVs as evidence of that company’s competence and fit to win a particular Request for Proposal (RFP).
It’s also helpful because you never know when the random person you meet at a conference, church, or bar, likes the cut of your jib and wants your resume to see if you’re a good fit for their company!
If you’re in Sales or Marketing, knowing what your technical teams’ Resumes and CVs look like can be a wealth of data for building proposals or providing accomplishments to prospective clients. It’s worth seeing if your team has up-to-date resumes so you know the high points of their skills and accomplishments and can brag about them accordingly.
So enough about the why of a good Resume. Let’s talk about the how.
As someone who has applied for many jobs, read a good number of applications for my own businesses, and coached others in cleaning up their own, let’s talk about what makes a resume or CV successful to me and how I applied those ideals in my own resume. As you’ve surely noticed, the word good is in quotation marks – every bit of advice in here is built on years of learning and experience, but is by no means dictatorial or the final word on the resume that will get you the job of your dreams.
My goal is to give you inspiration on revamping and practical advice further editing your own! If you follow these ideas, hopefully, you'll take your resume from "meh" to "good" and as you build your idea of what good looks like, you can make it "great."
Here is my current resume, for reference:
What are your first thoughts? It’s ok if you hate it, it won’t hurt my feelings. The fact that you’re thinking about what could be a resume is the exciting part for me. We’ll use my resume to tear apart some of these rules so you have practical ideas for what to do, or not!
Rules I kept in mind:
For the uninitiated, Doctor Who is a BBC Family Show about a millennia-old time-traveling alien who consistently finds himself saving the human race while meeting historic people and events from the past, present, and future. In the 2024 Christmas special, Ncuti Gatwa as the Doctor finds himself trapped in a crappy hotel room by himself, for a year. “The long way ‘round” rings in the viewers’ ears as we are then escorted through the next year of the Doctor, watching his character development as he performs menial labor and often comical tasks. It’s heartwarming and tearjerking, and....
Don’t do that.
Yeah, you heard me. Your resume is not the place for your growth or development. It’s not the place to give the ins and outs of your day-to-day. Your resume needs to be the high points. This is just the book cover, the summary, the short review enticing someone to pick you up and actually flip through the pages.
Ways that you can do that include:
We want to know that you can speak Judoon, have commandeered a TARDIS, and are adept with both psychic paper and a Sonic Screwdriver. We do not need to know that you carjacked said TARDIS, brought someone a cheese toastie and pumpkin latte, or snogged Queen Elizabeth. If the devil is in the details, well, leave the details and the devil out of your resume, dude.
This example is a little silly, but the point remains that YOU are the hero and YOU write your own story. Make sure the readers of your resume know what that is. And regardless of what story you write, your resume should always lead with Action.
What have you done that you have control over? Your resume should show that you’re an asset to the teams that you’re on and that the work you’ve done has shown your strength.
Instead of framing things as being a part of a project or that something was imposed on you, stretch yourself to consider the decisions you made and how they were impactful.
Check your resume in a grammar checker for “passive voice” and eliminate it from your resume as much as possible. Passive voice makes it seem like you are just that: a passive bystander to things that you created. This isn’t the place for modesty, it’s a place for groundedness and intentionality! Don’t be scared to show them what you’ve got! Here are some good rules of thumb for your resume:
Here are some practical examples for how you can update passive voice with active voice.
Of note, it is highly possible that you don’t feel like you have the numbers or the confidence to do this, today. There is a certain amount of intentionality and care that is required to start gathering these types of Key Performance Metrics or goals. It’s possible that your management is tracking some of these things already and you can talk to your manager about their goals for your department and roll those into your own successes.
Know your audience and keep it relevant in all the ways possible, I’d specifically encourage you to consider context of content and context of delivery.
We allude to this in the section on being the Hero, but keep multiple versions of your resume on hand depending on the role and company you are applying for! Review the business’s website and job listing for key words, phrases, or values to show you are a good fit. Remove work experience that isn’t applicable to the role. Don’t keep things in if they dilute what you are actually seeking to present yourself as. Customize your bullet points: Swap in key accomplishments that fit the job description. If the role focuses on leadership, highlight examples of mentoring or leading a team. If it’s technical, detail relevant certifications, tools, and projects.
Use consistent headers, bullet points, and spacing to make your resume easy to scan. Avoid excessive detail that clutters the page. Stick to clean, professional fonts and clear section breaks.
Keep it simple, but don’t be afraid of a little personality: A pop of color, a different font, or slightly unique formatting can be memorable—but don’t overdo it. Use section dividers, subtle lines, or an (one!) accent color to guide the eye. Include icons for contact info if appropriate, but ensure they don’t distract (choose SIMPLE icons with only one color and make sure all icons are from the same family pack).
Keep font choices professional yet modern, such as using sans-serif fonts like Calibri or Lato. In general, I recommend not using more than one typeface, and limit the times you change it. Regular, bold, italic should get you far, and try to keep font sizes to three variations: title (36pt), header (18pt), body (12pt). Keep things consistent like you would be if you were marking up a webpage or application. And please, whatever you do, don’t express yourself through clever or cartoony fonts, this is for business, not your personal art gallery.
How are you submitting your application? In person, by email, through a digital system?
Will the person be reading this on a mobile device or printing it out?
If in person, don’t be afraid to print off a color copy on nice, weighted cardstock for an in-person interview, and bring copies for other people who may be in the room as well, for a peer interview.
For digital submissions Check the format based on delivery method: Ensure your resume reads well in multiple formats—digital (PDFs), ATS-scannable text, and print. Run tests to see how it looks in each form. Do screenreaders or convert to plain text to see (or hear) what a computer-read version of your document turns out to say. Does it make sense? If not, rework it.
As mentioned multiple times in this article, your resume is a tool for opening doors, so don’t let it be a dead end for the reader. Where do you keep your portfolio or where should they go to find more information about you if this resume piqued their interest? Don’t keep them guessing, give them access! Some things you may want to include on a modern resume:
What do you think? If you look at your resume, does it follow my suggestions of making yourself the Hero. leading with action, considering appropriate context, and showing your Work? Where did I deviate from the rules, do you think it works for me, or not?
On the flip side, what rules do you think I am missing?
I hope I’ve inspired you to update your resume and/or CV this month and to encourage your friends and colleagues to do the same! If you need help cleaning up your resume, you can find me on any of the social channels listed on my resume, or through Rising Tide if you want to pay me to just do it for you.

In Episode 23 of By the [run]Book, Connor Fagan and Jason Parsons walk through HaloPSA v2.216, covering a mix of quality-of-life improvements, automation enhancements, reporting updates, and billing controls. Highlights include new ticket-level charge rate restrictions, report audit timestamps, Microsoft CSP subscription import improvements, AI-generated acknowledgment emails, and several Runbook enhancements. The discussion also covers important industry updates, including Microsoft’s July 1st pricing changes, limitations introduced to haloreleases.Remmy.dev due to Halo API changes, and Renada’s Teams-based "Ticket Swarm" approach for urgent ticket collaboration.
Watch Now: By the [run]Book: Episode 23
There are limitations affecting haloreleases.remmy.dev caused by changes to the Halo API
Microsoft’s July 1st pricing Changes
Check out Renada's instructional video - Ticket Swarm into Microsoft Teams
This gives administrators the ability to remove the Task event type from appointment creation screens.
The hosts recommended enabling this for most environments because Task event types do not synchronize with Microsoft 365 calendars, while Appointment types do.
A collection of enhancements focused on Halo's ITSM change management functionality.
The discussion noted that this will likely be most valuable for organizations using formal maintenance windows and change approval processes rather than traditional MSP service desks.
Criteria Groups continue to expand throughout Halo and are now available within Ticket Rules.
This allows administrators to build more advanced AND/OR logic inside a single rule rather than creating multiple rules to achieve the same outcome.
CRM Note custom fields can now be limited to specific entity types.
This helps keep note forms cleaner by ensuring fields only appear where they are actually relevant.
A new safeguard prevents multiple technicians from accidentally joining the same chat session.
For teams using Halo Chat, this can help reduce duplicate responses and ownership confusion.
Chat Flows can now make decisions based on the current time and day of the week.
This opens up more options for business-hours routing and after-hours automation.
Administrators can now separately filter against Response SLA breaches and Resolution SLA breaches.
The hosts felt this provides greater reporting flexibility and allows teams to focus on the SLA metrics that matter most to their business.
Field lists now display the override name rather than only the original field name.
A small but useful quality-of-life improvement when working with heavily customized environments.
Improves user matching behaviour within the Tanium integration.
The hosts did not spend much time on this feature but noted it should improve synchronization accuracy.
Dashboard widgets can now have their own refresh intervals.
Administrators can balance dashboard responsiveness against system performance by selecting refresh periods between 30 seconds and 1 hour.
A new API parameter allows integrations to retrieve all custom fields when querying assets.
Useful for developers and anyone building integrations around Halo asset data.
Provides additional control over how information flows between parent and child tickets.
The hosts discussed several possible use cases but agreed this will require additional testing to fully understand its impact.
Administrators can now define the default layout used by the rich text editor toolbar.
A simple quality-of-life improvement for organizations that prefer a cleaner editor experience.
Appointment booking links can now direct users to specific booking types.
This provides more flexibility when building self-service appointment workflows.
AI-generated acknowledgement emails can now be configured at the Ticket Type level.
The feature allows custom prompts and automated responses tailored to specific ticket categories. The hosts felt this could be useful for gathering additional information from end users before an engineer begins working the ticket, but recommended careful testing before broad adoption.
One of the most practical automation improvements discussed during the episode.
When a Runbook repeatedly fails, Halo can now automatically create a ticket.
The hosts strongly recommended enabling this for Runbook deployments to improve visibility into automation failures and reduce troubleshooting time.
Adds an option to filter out catalog items that do not contain pricing information.
A small but useful improvement for teams relying on Etilize product searches.
One of the hosts' favourite additions in this release.
Reports now display who last modified them and when the modification occurred, making report management significantly easier in larger environments.
Modal popup notes now require acknowledgement before dismissal.
This helps ensure important information is actually seen by technicians.
Provides additional control over Knowledge Base article link behaviour.
The feature was only briefly discussed during the episode.
Improves Microsoft CSP product import functionality.
The hosts highlighted this alongside Microsoft's upcoming pricing changes and discussed how it may simplify subscription management.
Adds additional file handling capabilities to Runbooks.
Useful for workflows involving document processing, attachments, and API-driven automation.
This generated one of the longest discussions of the episode.
The feature allows charge rate controls to be configured directly against tickets and projects. While it provides significant flexibility, the hosts cautioned that excessive customization could make billing troubleshooting considerably more difficult.
Resource Booking Types can now define their own scheduling limits rather than relying entirely on global settings.
Allows Bills to be created without requiring an associated Purchase Order.
A useful addition for organizations with more flexible purchasing processes.
Invoice pricing fields now display the current item price or cost as a reference.
The hosts questioned some of the terminology used but agreed the additional visibility could be helpful.
Halo now includes a Sophos integration.
The discussion focused primarily on alert synchronization and early integration improvements since its initial release.

Episode 22 of By the [run]Book dives deep into HaloPSA v2.216, covering a wide range of enhancements across reporting, integrations, invoicing, ticketing, assets, and automation. Connor and Mendy spend extra time unpacking new SLA-aware database functions, improved integrator troubleshooting, OAuth token management, sensitive ticket controls, and several quality-of-life improvements that make Halo easier to administer and automate. This episode is particularly valuable for MSPs looking to improve reporting accuracy, streamline integrations, and gain better visibility into backend processes.
Watch Now: By the [run]Book: Episode 22
For easier tracking, check out haloreleases.remmy.dev to filter and search HaloPSA updates by ID, version, and keyword.
One of the most impactful features discussed in this episode introduces new database functions designed to calculate working time between dates using Halo's own business logic.
Why it matters: MSPs building advanced reporting can now calculate true business time rather than relying on raw SQL date math.
Sensitive tickets gain more granular visibility controls.
Why it matters: MSPs supporting executive teams or handling confidential projects gain stronger access controls.
Connor and Mendy highlighted this as one of the most valuable operational improvements in the release.
Why it matters: Faster troubleshooting means less downtime and quicker resolution when integrations fail.
This feature received strong praise from both hosts.
Why it matters: Anyone building custom integrations or working with APIs will immediately appreciate the time savings.
This feature introduces new database functions that calculate time between dates while respecting Halo's working hours, holidays, and SLA schedules. The hosts highlighted this as one of the most impactful additions in the release for reporting and analytics.
For MSPs building custom reports, this removes much of the complexity previously required to calculate true SLA working time instead of relying on standard SQL date calculations.
Text custom fields created using the newer storage method can now support up to 1000 characters instead of the previous 255-character limitation.
The team discussed real-world examples where long URLs, call recording links, and integration data would previously be truncated. This change reduces the need to switch fields to Memo types simply to accommodate longer values.
Action Group configuration is now surfaced more prominently throughout the Halo interface.
This doesn't introduce new functionality but makes Action Groups easier to discover and manage by exposing configuration options in more logical locations.
Previously, accepted or closed quotes could still transition to an expired status once their expiry date was reached.
This fix prevents completed quote statuses from being overwritten later, resulting in cleaner sales reporting and a more accurate quote lifecycle.
Scheduled nurture campaigns can now periodically re-evaluate recipient lists rather than only processing the list when the campaign initially launches.
This makes nurture campaigns much more practical for dynamic marketing lists where recipients may qualify after the campaign has already started.
The Chat Transcript variable can now be referenced whenever a linked chat exists for a ticket.
This provides more flexibility when building templates, notifications, automations, and workflows that need access to chat history.
A new variable has been added to support invoice long descriptions during pro-rata calculations.
The hosts spent time discussing how this improves consistency between invoice line descriptions and prorated billing entries, helping produce clearer invoices for customers.
Date validation can now be restricted to the creation process only.
This allows administrators to make changes to records later without triggering the same validation requirements that applied when the entity was originally created.
A new permission allows the recorded user associated with device change tracking records to be overridden.
The hosts noted this introduces additional flexibility but also raises questions around auditing and accountability, so it should be used carefully.
Asset system fields can now be configured as visible while remaining read-only.
This helps expose important information to users without allowing accidental edits.
Agreement reference numbers can now be generated on a customer-specific basis.
Organizations with structured naming conventions may find this useful when managing multiple agreements across different customers.
Asset custom fields can now be configured to require unique values.
This is particularly useful for:
It helps improve data quality and prevents duplicate asset records.
Sage Intacct mapping capabilities have been expanded to additional entities.
This improves flexibility for organizations integrating HaloPSA with Sage Intacct accounting workflows.
Custom field mapping support has been extended within the Sage Intacct integration.
This allows more business-specific data to flow between HaloPSA and Sage Intacct.
This setting helps determine how duplicate usernames are handled when new users are created.
The hosts generally felt most organizations would likely continue using traditional username formats rather than switching to email addresses automatically.
This was one of the more significant ticketing enhancements discussed during the episode.
Sensitive tickets now support additional visibility controls for both end users and agents.
This helps organizations handle:
Treeviews can now group agents by their availability status.
Dispatchers and service coordinators may find this particularly useful when reviewing ticket assignments and resource availability.
Asset custom buttons can now suppress the runbook queue confirmation message.
A small but useful quality-of-life improvement for heavily automated workflows.
Chat flows can now retrieve information stored within the user's browser and map that data into Halo records.
The hosts discussed potential use cases while also noting the broader security considerations associated with browser-side data access.
Multi-select custom fields are no longer restricted to integer-based identifiers.
This improves compatibility with external systems that use GUIDs and other non-numeric identifiers.
Additional variables have been added for Client Mention notifications.
This supports richer notification templates and more contextual messaging.
Ticket types can now define a default mailbox during ticket creation.
This provides additional control over ticket routing and mailbox selection.
One of the standout features from the episode, this enhancement makes Halo Integrator troubleshooting significantly easier.
Administrators can now filter logs by configuration ID, making it much simpler to locate and investigate integration runs.
For MSPs managing multiple integrations, this can dramatically reduce troubleshooting time.
Runbook variables can now be JSON-escaped before being passed to external systems.
This helps avoid formatting issues when sending structured data through APIs and automation workflows.
Configuration commit history will now display stored agent names consistently across linked instances.
A small but welcome improvement for organizations managing multiple Halo environments.
A new invoice merging method introduces additional customization options for invoice generation.
The hosts noted that this feature introduces significant complexity and should be thoroughly tested before being adopted in production billing processes.
The Self Service Portal now includes improvements for displaying service status information.
Organizations maintaining customer-facing status pages may benefit from improved visibility during outages and service disruptions.
Another major highlight from the episode.
Administrators can now clear stored OAuth tokens without recreating integrations.
Benefits include:
For anyone building custom integrations, this feature alone can save a significant amount of time.
Ticket column profiles can now display End User and Site-level custom fields.
This allows additional business data to be surfaced directly within ticket lists and views.
Runbook IDs can now be used as a filterable column within integration runbook views.
A small administrative improvement that makes locating specific runbooks easier.
New notification triggers can alert teams when tickets have been inactive for a specified period.
This may help identify tickets that have fallen through the cracks and improve follow-up processes.
Invoice creation now generates trace records that can be used for troubleshooting and diagnostics.
The hosts highlighted the importance of additional visibility into billing processes and invoice generation logic.
Software licence records can now display an end date column.
A straightforward improvement that provides better visibility into licence lifecycle information.
Ticket type groups can now be leveraged within change tracking functionality.
This complements broader improvements around ticket grouping and permissions management.
Automatic invoice reminders can now be configured directly within Halo.
This helps reduce manual collections work and provides a more consistent accounts receivable process.
Approval requests can now be automatically delegated when a user is marked out of office.
While relatively simple today, the hosts discussed how this may become increasingly valuable as Halo continues expanding its out-of-office functionality and approval workflows.

Episode 21 of By the [run]Book dives into the tail end of HaloPSA v2.214 and the first round of v2.216 updates, with Mendy and Connor unpacking practical MSP use cases, hidden configuration gotchas, and workflow improvements. Highlights include forecasting enhancements, category group restrictions, Datto RMM multi-tenancy, auditing improvements, ticket timer widgets, and advanced email handling settings that can dramatically impact service desk operations. This episode is especially useful for Halo administrators refining automation, billing accuracy, integrations, and technician workflows.
Watch Now: By the [run]Book: Episode 21
For easier tracking, check out haloreleases.remmy.dev to filter and search HaloPSA updates by ID, version, and keyword.
Forecasting in HaloPSA received a major usability improvement by automatically calculating forecasted hours from estimated project task time.
Category restrictions can now be controlled using Category Groups instead of manually configuring every category individually.
Agent Roles now support assigning cost values directly at the role level.
HaloPSA can now ignore “Unknown” scan status networks during Auvik imports.
X-Auto-Response-Suppress header to emails” can now be overridden using Action level configuration to enforce the headers when the global setting is not enabled | v2.216 #1085470 | 49:41Halo now allows email suppression headers to be configured at the Action level rather than only globally.
This setting keeps tickets selected after completing a bulk edit, allowing technicians to chain multiple bulk updates together without re-selecting tickets.
Mail Campaigns can now be grouped for organizational purposes.
Halo will now match imported Intune software records using software names instead of IDs.
Multiple Datto RMM integrations can now coexist within HaloPSA.
Halo can now automatically assign the mailbox used during outbound communication as the ticket’s default mailbox.
Snow imports now support dynamic asset type assignment.
Services can now have a separate portal-facing display name.
Asset booking functionality received multiple improvements.
The ticket timer can now be displayed as a dedicated widget on the ticket screen.
Agent Roles now support a cost field.
Ticket cloning can now be restricted to administrators.
Halo’s newer SSO framework continues to evolve.
Category restrictions can now be managed through Category Groups.
Forecasting received major usability improvements.
Audit tracking now includes Quotes and Purchase Orders.
Reporting Datasources can now display which reports rely on them.
HaloPSA now supports integration with Kaseya VSA X.
HaloPSA now integrates with SailPoint IdentityIQ.
Auvik imports can now exclude unknown scan results.
Changes to Customer Trading Names are now tracked in audit history.
Cost update logic now also supports markup calculations.
Quote approvals now support customizable messaging before signatures.
Time entry edits can now automatically rebalance contract and billed hours.
Halo introduced a safer device ID generation method.
bulkresponse=true can now be used when POSTs are made to the /fieldinfo endpoint to return a separate response for each object | v2.216 #1085574 | 47:46The /fieldinfo endpoint now supports bulk response handling.
Additional JWT validation can now be enforced for API authentication.
ConnectWise Automate alert closures can now map to configurable statuses.
X-Auto-Response-Suppress header to emails” can now be overridden using Action level configuration to enforce the headers when the global setting is not enabled | v2.216 #1085470 | 49:41Halo now supports overriding email suppression headers at the Action level.