Lots of folks will have opinions on this; adding mine just to give you an additional data point. Specifically not looking at other comments so that I can give you my direct take; I'm sure others may disagree and that's fine. :) I'm a hiring manager at a small company that recently hired two .NET developers.

* You're not alone. There are a lot of people looking for work right now, and less work to go around, it seems. I recently had 60+ applications for 2 developer roles without using a recruiter or anything but word of mouth through communities I participate in. From a pure numbers standpoint, this means applicants have to work harder to stand out, which sucks for applicants and also because it leads to people gaming the system.

* So much of the hiring process has been enshittified. Tools doing keyword scans have replaced a lot of human judgment, and resumes have started to adapt to keep up. I abhor the practice, but: you may want to have a separate resume for places that may use these products, so that you get past auto-screening.

* Your resume is nicely laid out. However, I fear it will likely get you auto-rejected as lots of screening tools can't parse it for roles. You may want to have a version that avoids the multi-column layout. Again, this will be a guess as to whether companies are using that kind of software or not.

* I highly recommend adding your role or the equivalent role to the subtitle, e.g. "Senior Developer (Contract)" or ".NET Developer (Contract)" . It gives a quick overview of what type of work you've been doing, which is helpful when I'm scanning 60 resumes. I would go so far as to suggest You make the role a part of the heading and keep the employer & date below. E.g. "Senior .NET Developer" up top and "Technically Creative (contract) | Oct 2021 - Dev 2023" below.

* Suggest adding start/end dates including Month & Year (e.g. "Oct 2021 - Dec 2022"). It gives a sense of timing.

* There's another tough choice you face: whether to share unemployment status. It's a double-edged sword for candidates. For me, people who state their situation get respect for the authenticity, and those who try to hide it make me suspicious. But I also respect that people are biased against unemployed people even though they shouldn't be, so I would suggest making that a per-application decision.

* I already get a decent sense of this, but you may want to tweak your bullet points to reflect accomplishments/impact some more. Shows that you understand business value (which I believe you do).

* Technology under each bullet point makes me as a reviewer do extra work. Some kind of summary of technology you're proficient in will be a good addition. Should you have to? Probably not. Would I still read this CV? Of course. Will lots of folks glaze over and move on when they have to do extra work while reviewing hundreds of applicants? Yes.

* I like that you include your GitHub. I definitely look at those and it never counts against an applicant (for me. Again, double-edged sword).

* I think the one-page resume is working against you here. With your experience since '05 I think moving to 2 pages and expanding on some of the suggestions above will work in your favor.

* The title at the top of your resume, "Software Developer", could probably do with a tweak. It's one of the first things I see. "Senior Software Developer", "[Stack of Job You're Targeting] Developer", etc. may go a long way. I recently gave someone an interview because they had "Systems Integration Developer" in their title and I was looking for integration work. It would be an effective technique IMO.

* Find your local & global communities on Twitter, Mastodon, Slack, LinkedIn, Discord, etc. -- many often times have jobs channels where things will pop up. Coming from a community comes across as a sort of implicit reference in terms of places you may participate. And there's usually little downside as you learn things, participate in discussions, and build relationships there that are nice either way.

I wish you the best of luck finding your next opportunity!