There is no problem not worth solving, and no technology not worth learning!

From Local Folders to a Self-Hosted Online Spreadsheet: How I Manage Full-Time, Part-Time, and Project Opportunities

【图1:本地文件夹中按日期整理的工作机会目录】

Wilderness Notes: My Multi-Threaded Log

Minimalist Remote Job Search Board: 10 websites for PHP / Go dual-stack backend + 5 TG channels + 2 discovery sources

(1) Minimalist Remote Job Search Board: 10 websites for PHP / Go dual-stack backend + 5 TG channels + 2 discovery sources

39 years old, no longer have to hold a job alone: I decided to join the electric duck remote talent pool

(2) 39 years old, no longer have to hold a job alone: I decided to join the electric duck remote talent pool

让我意外的是。 第二天管理员就回复了。

(3) Found that the Resume of Duck can’t modify the skill label? My feedback was fixed the next day

My Remote Job Search Process (V2)

(4) My Remote Job Search Process (V2)

【图1:本地文件夹中按日期整理的工作机会目录】

(5) From Local Folders to a Self-Hosted Online Spreadsheet: How I Manage Full-Time, Part-Time, and Project Opportunities

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:

Figure 1: Local folders organized by date for work opportunities
Figure 1: Local folders organized by date for work opportunities

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.

Figure 2: The Work and Project Opportunity Tracking table in NocoDB
Figure 2: The Work and Project Opportunity Tracking table in NocoDB

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

Figure 3: Opportunity Type uses a multiple-select field, including freelance work, consulting, one-off project, remote work, and other options
Figure 3: Opportunity Type uses a multiple-select field, including freelance work, consulting, one-off project, remote work, and other options

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.

Figure 4: Current Status uses a single-select field, including To Contact, Sent, Replied, Pending Evaluation, and other options
Figure 4: Current Status uses a single-select field, including To Contact, Sent, Replied, Pending Evaluation, and other options

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.

Figure 5: Technical Area uses a multiple-select field, including WordPress, PHP, Go, operations, and other options
Figure 5: Technical Area uses a multiple-select field, including WordPress, PHP, Go, operations, and other options

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.

My Remote Job Search Process (V2)

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

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.