Fully remote · Eastern Time

Software development and consulting

I build applications and data tools, improve existing software, and help people work through technical decisions. Tell me what you're trying to do, what's getting in the way, and what you're working with.

In an enterprise software role, I reduced document-generation time from over 30 seconds to under one second. More about that work.

Development or a second opinion

You can hire me to build or improve software, or get advice on a technical decision. If you're not sure where to start, tell me about the problem.

Build or improve your software

Price quoted once the scope is clear

I build applications and data pipelines, improve existing systems, and fix recurring problems. Projects range from focused changes to larger development work.

Before I start, we'll decide what the software needs to do, how we'll test it, and what I'll hand over so you can use and maintain it. If I need to investigate first, we'll agree on that work and its spending limit separately.

Describe your project

A second opinion on a technical decision

US$250 fixed · One decision

I assess your plan before you commit time or money to it.

I'll review: one plan, proposal, or workflow description of up to five pages, plus one diagram.

You'll get: a 60-minute conversation, followed by a short written recommendation with your options, the risks, and a recommended next step.

The review is a standalone service. Implementation, code audits, and hands-on troubleshooting get their own scope and price. An optional introductory call is separate from the included 60-minute consultation.

Describe your decision

Read a fictional example of the written recommendation
FICTIONAL EXAMPLE: UPDATING SUPPLIER PRICES

This is an example of a written recommendation, not a client case study or a tested solution. No client files, formulas, code, or systems were inspected.

The decision
Should the team replace its pricing spreadsheet, automate the supplier-price update, or keep doing it manually?

The workflow described
A supplier sends a spreadsheet each month. An operator matches product codes, copies prices into a master workbook, and approves the changes before anyone uses them in quotes. The workbook otherwise suits the team. This example is based on that description and a process diagram.

My recommendation
Keep the workbook and the approval step for now. First, check whether the spreadsheet software can import the supplier file and show the proposed changes beside the current prices. If an existing feature can do the job, try that before commissioning custom code. The import problem alone isn't a reason to replace the workbook.

The alternatives
- Keep a manual checklist if updates are quick or infrequent. Copying errors will still be possible.
- Use an existing import feature if it meets the requirements. Someone needs to maintain the product-code mapping and handle rejected rows.
- Build a small importer if the existing features can't handle the agreed rules. Changes to the supplier's format could create more maintenance work.
- Consider a replacement application if other requirements justify it.

Is automation worth the cost?
Measure the time spent preparing and correcting representative updates, and record recurring mistakes. Compare the work automation could remove with the cost of setup, training, checking, and maintenance. Without those measurements, I can't say whether buying automation would be worthwhile.

What still needs checking
Confirm that the workbook's calculations are suitable and that product codes identify items consistently. Decide how to handle unit or currency changes, effective dates, missing prices, and potentially duplicate rows. The software shouldn't guess those rules. Identify who will approve updates and maintain the mapping.

The next step
Prepare a non-sensitive supplier file, a correctly updated result, and examples of bad input for whoever implements the change. Agree on these checks before building:
- Product codes, prices, and units match the reference result.
- Missing mappings and ambiguous rows are explained before an update proceeds.
- Rejected input leaves the approved price list unchanged.
- Running the same import again doesn't create duplicate records.
- The operator can preview changes and recover from an error using written instructions.

These are proposed checks; they haven't been carried out. Resolve disputed pricing rules before building.
Download this fictional sample as plain text

Areas I work in

I take on development projects and review proposed approaches in these areas. A project can involve more than one.

Applications and internal tools

Interfaces · APIs · Databases

I build new applications and improve the ones your team already uses. I update interfaces, improve backends and databases, and connect systems that need to share information.

Relevant experience · Enterprise employment

I was the sole developer maintaining and extending an inherited enterprise quoting application.

More about that role

Automating repetitive work

Spreadsheets · Documents · Reports

I automate repetitive work between spreadsheets, reports, and other tools. I start by checking what your existing software supports and how your team handles missing or incorrect data.

Relevant experience · Enterprise employment

I built pricing-sheet imports that used OCR to read tables stored as images, along with reporting tools for business workflows.

A separate pro bono project: a service-planning map adopted by a small business

Scientific Python and data tools

Python · File conversion · Reproducible processing

I've worked with satellite, atmospheric, and geospatial data. I convert older formats, improve research scripts, and turn those scripts into tools other people can install and use.

Relevant work · Published open source

I developed ncarnate to convert legacy scientific data. It's published on PyPI and conda-forge, and checks converted values against the source data.

How ncarnate works

AI tools and integrations

Databases · Developer tools · Pilot projects

I connect AI assistants to databases and other tools, with people reviewing their output. When the benefit is uncertain, I offer a pilot with an agreed scope and budget. We compare errors and review time against your current process.

Relevant experience · Internal enterprise tool

I built a local Python Oracle utility that colleagues used with Claude and Cursor Composer. I used it to map dependencies across more than 15 applications.

More about the Oracle tool

Working with your existing software

The tools depend on the project and who will maintain it. I work with React, JavaScript, jQuery, Python, SQL, Oracle APEX, PL/SQL, and backend APIs. My scientific-computing work has also involved PySpark and high-performance computing.

See my experience and scientific-data projects for examples.

Get started

Tell me what you need help with

Tell me about the change you need, the project you're considering, or the decision you're weighing. Start with what you know so far.

Your inquiry

Email and message are required. Attachments are optional.

Use the address where you'd like me to reply.

A few sentences in your own words are enough to start. Timing and budget are optional; include them if you already know them.

Please leave out passwords, access keys, and confidential information, including in attachments.

0 of 6,000 characters

Attachments (optional)

Up to 3 files: PDF, PNG, JPG, or TXT. Maximum 5 MB in total. A screenshot or short document can help explain the problem.

I'll review your inquiry and reply by email with my availability and next steps. Sending an inquiry doesn't commit you to paid work. I'll confirm scope and pricing with you before paid work starts.

Prefer email? Write to dm@erickshepherd.com.

How this form handles your information

Your message and attachments are sent to my email through this site's hosting and mail services. They are not published on this website. The form keeps limited technical records to prevent spam and duplicate submissions.

Cloudflare Turnstile checks your browser to help prevent automated spam. This site sends Cloudflare a verification token, not your message or attachments. See Cloudflare's privacy policy.