Recently, while organizing job leads, part-time projects, and client inquiries, I noticed a very practical problem: if I only rely on folders to manage opportunities, things become messy very quickly.
At first, I created local folders by date and opportunity name. For example:

This approach works when there are only a few opportunities. Each folder can store resumes, communication records, screenshots, job descriptions, client requirements, and other related materials. It also feels quite straightforward at the beginning.
But once the types of opportunities started to increase, the limitations became obvious.
Some opportunities are remote full-time roles. Some are part-time jobs. Some are freelance projects. Some are direct client inquiries. Others may start as one-off projects and later turn into long-term maintenance work. They are not always “overseas part-time gigs”, and they do not always come from job platforms.
If I only use folders, it becomes difficult to answer questions like these:
Which opportunities need follow-up today?
Which ones have already received a reply?
Which ones have not been applied to yet?
Which ones require a quote?
Which ones have the highest priority?
Which ones may become long-term cooperation?
So I started to consider moving all these opportunities into one online table.
Why Not Continue Managing Everything with Regular Folders?
Folders are good for storing materials, but they are not good at tracking status.
For example, one opportunity may include these materials:
Job or project link
Client emails
Communication screenshots
Project requirement documents
Quotation proposal
Follow-up notes
These files can certainly be placed in a folder. But what I actually need to check every day is not the files themselves. What matters more is the current status of each opportunity.
For example:
Have I contacted them?
Has the other side replied?
Do I need to prepare a quote?
When should I handle the next step?
Is this opportunity worth prioritizing?
If this information is placed inside folder names, it soon becomes hard to maintain. A folder name may gradually become something like this:
0701 - B2B English website rebuild - replied - pending evaluation and quote - high priority
It may look usable at first, but it becomes painful to maintain over time.
From “Overseas Part-Time Application Records” to “Work and Project Opportunity Tracking”
My first idea was to create a table called “Overseas Part-Time Application Records”.
But when I started organizing the real data, I realized that this name was too narrow.
Not every opportunity is overseas, and not every opportunity is part-time. It could be:
A full-time role
A part-time opportunity
A freelance project
A consulting assessment
Long-term maintenance work
Remote cooperation
A domestic client
An overseas client
A referral from a friend
A direct client inquiry by email
So I eventually changed the table name to:
Work and Project Opportunity Tracking
This name is broader and much closer to the real situation.
It is not only about recording “what I applied for”. It is about tracking every opportunity that may lead to income, cooperation, projects, or jobs.
Why I Chose a Self-Hosted NocoDB Setup
I am using a self-hosted NocoDB instance.
The advantage is that it feels like an online spreadsheet, but it is more suitable than a normal Excel file for managing structured data over the long term.

Compared with local Excel files or folders, NocoDB is more suitable for this scenario:
Fields can have clear types, such as date, single select, multiple select, URL, and long text
Different views can be created, such as pending follow-up, high priority, and pending quote
The table can be opened from a browser whenever needed
More tables can be added later, such as project tables, affiliate content tables, and client tables
The data structure is relatively stable and does not become messy just because a file name was changed temporarily
The value of this type of tool is not that it is “advanced”. Its real value is that it helps prevent opportunities from being forgotten.
The Core Fields I Designed
At the moment, I designed the following fields for this table:
Company / Website / Project
Opportunity Title
Contact Person
Contact Method
Source Platform
Source Link
Start Date
Region Type
Opportunity Type
Technical Area
Current Status
Priority
Next Action
Next Action Date
Estimated Amount / Salary
Notes
Among these fields, a few are especially important.
Opportunity Type Works Better as a Multiple-Select Field
At first, I was not sure whether “Opportunity Type” should be a single-select field or a multiple-select field.
Later, I found that multiple select makes more sense.
An opportunity is often not limited to just one category.
For example, a B2B English website rebuild project may be all of the following at the same time:
Freelance work
Consulting
A one-off project
Remote work
Pending quote
Potentially long-term maintenance in the future

If this field is single select, it becomes difficult to describe the opportunity accurately.
So I set “Opportunity Type” as a multiple-select field instead of a single-select field.
Current Status Works Better as a Single-Select Field
Unlike “Opportunity Type”, “Current Status” is better suited to a single-select field.
At a specific point in time, an opportunity should ideally have one main status.
For example:
To Contact
Sent
Replied
Pending Evaluation
Pending Quote
In Follow-Up
Closed Won
No Response
Closed / Ended
This makes filtering much clearer later.

For example, I can filter all opportunities with the “Pending Quote” status and handle them together, instead of relying on memory every time.
Technical Area Also Works Better as Multiple Select
Technical Area should not be limited to a single-select field either.
A project may involve several areas at the same time, such as:
WordPress
Technical SEO
Website structure planning
B2B export website
Performance optimization
CDN
Nginx
301 Redirect
Core Web Vitals
These areas often appear together.
This is especially common in WordPress rebuild projects for B2B export websites. They are usually not just about “building pages”. They may also involve URL structure, page hierarchy, basic SEO setup, site performance, indexing risks, redirect rules, and other technical details.

Therefore, “Technical Area” is also more suitable as a multiple-select field.
How I Record a Real Opportunity
Recently, I received an opportunity related to rebuilding a B2B English export website. The other side wanted me to evaluate the website structure and SEO issues before preparing a quote.
This kind of opportunity is a good fit for this table.
A sample record could look like this:
Company / Website / Project: A B2B export website
Opportunity Title: B2B English Website Rebuild | WordPress + SEO Structure Planning + Technical SEO
Source Platform: 电鸭
Opportunity Type: Freelance, Consulting, One-off Project, Remote, Pending Quote
Technical Area: WordPress, Technical SEO, SEO Structure Planning, B2B Export Website
Current Status: Pending Evaluation
Priority: High
Next Action: Analyze the existing website structure, SEO issues, and rebuild scope, then prepare an initial assessment and quote
Estimated Amount / Salary: TBD
Notes: The other side has replied by email and asked for an evaluation and quote based on the specific website structure and SEO-related issues.
Once this is recorded, I no longer need to repeatedly search through emails, folders, and chat history. At the very least, I can quickly see what should be done next for this opportunity.
Folders Have Not Been Completely Replaced
Although I have started using NocoDB to manage opportunities, folders are not useless.
Now I prefer to divide their responsibilities like this:
NocoDB manages opportunity status
Local folders store supporting materials
For example, NocoDB records:
Where the opportunity came from
What the current status is
What the next action should be
When to follow up
Whether the priority is high
Local folders store:
Requirement screenshots
Client materials
Email backups
Quotation documents
Analysis reports
Resume or portfolio versions
In this way, the two do not conflict with each other.
NocoDB acts as the index and dashboard, while local folders act as the document archive.
Why This Is Worth Writing Down
In many cases, the hardest part of job searching, freelancing, or taking part-time work is not the moment of applying.
The truly difficult part is long-term follow-up.
When the number of opportunities increases, a lack of a stable tracking system can easily lead to problems like these:
Forgetting to reply
Forgetting to prepare a quote
Forgetting to follow up
Applying repeatedly to the same opportunity
Not knowing which opportunity has higher priority
Receiving a reply but failing to move the opportunity forward in time
These problems may look small, but for freelancing, remote work, and project-based cooperation, they can directly affect the chance of closing a deal.
Especially when opportunity sources become more scattered, relying only on memory and folders is no longer enough.
Possible Future Extensions
At the moment, this table is only the first version. It can still be expanded later.
For example, I may add:
Quoted amount
Closed amount
Estimated project duration
Whether a contract has been signed
Whether payment has been received
Client type
Whether it is suitable for long-term maintenance
Whether future follow-up is needed
I can also create different views:
All Opportunities
Pending Follow-Up
Pending Quote
High Priority
Replied
Closed Won
Closed / Ended
In this way, when I open the table each day, I do not need to search through a pile of scattered information. I can focus directly on the most important opportunities.
Conclusion
This round of organization made me realize that opportunity management should not rely only on folders.
Folders are suitable for storing materials, but they are not suitable for managing status.
For full-time roles, part-time opportunities, freelance projects, consulting work, and remote cooperation, a structured table is more suitable for unified tracking.
I am now using a self-hosted NocoDB setup to gradually move opportunities that were previously scattered across local directories into the “Work and Project Opportunity Tracking” table.
This may look like a small tooling change, but for me, it represents a more stable way of working:
No longer relying only on temporary memory
No longer relying only on folder names
No longer letting opportunities scatter across emails, screenshots, and directories
Instead, every possible opportunity is placed into a system that can be followed up continuously.
This should be helpful for finding remote jobs, taking freelance projects, and developing long-term maintenance cooperation.
Need long-term technical maintenance or remote troubleshooting?
I am a PHP / Go backend engineer with 15+ years of experience, focused on existing system maintenance, bug fixing, performance optimization, server troubleshooting, WordPress maintenance, and small feature iterations.
If your project is facing any of the following issues, we can start with a small troubleshooting task first:
- ✅ PHP / Laravel / Yii2 legacy systems without active maintenance
- ✅ Go / Gin backend APIs that need troubleshooting or optimization
- ✅ Slow, broken, or unstable WordPress websites
- ✅ Nginx / MySQL / Redis / Linux server issues
- ✅ CDN / Cloudflare / DNS / HTTPS configuration problems
- ✅ Long-term remote technical support or part-time maintenance
More details: About Me & Collaboration
WeChat: 13980074657
Email: shuijingwanwq@gmail.com
Telegram: @shuijingwan
GitHub: https://github.com/shuijingwan


Leave a Reply