- Business Growth & Analytics
Reselling Case Study: $23,040 Net in One Part-Time Year
Direct answer: A disciplined part-time reseller, working about 13 hours a week around a day job, can clear low-five-figures of net profit in a year without a storefront, a staff, or a truck. In this reconstructed 2026 year the books close at $51,430 in sales, $23,040 net profit, and 665 hours, which is $34.65 an hour after cost of goods, marketplace fees, shipping, supplies, and mileage. January, run by refreshing apps, paid about $10 an hour. The fourth quarter, run by named hunts, sold comps, and a real inventory record, paid about $47 an hour. The money did not come from a secret category. It came from refusing buys that could not survive fees.
This is a composite case study, not one customer's audited return and not a promise. The operator is called Alex. Alex is a stand-in built from the pattern we see when someone treats reselling as a business with a buy box, a radius, and a ledger, instead of as a hobby that happens to have Venmo. Every dollar in the tables below is internally consistent: the twelve months add to the four quarters, and the quarters add to the year. If you copy the cadence and ignore the rules, you will not copy the profit. If you copy the rules in a thinner market, your number will be smaller and still might be worth it.
Botifex is in this story because it is the workspace the year actually runs in: hunt profiles across Craigslist, eBay, Facebook Marketplace, OfferUp, Poshmark, Mercari, Depop, and Whatnot; Deal Score and eBay sold comps before the drive; Vision when a photo has no model number; inventory and profit so a busy category cannot hide a bad hourly rate; listing drafts and cross-posting so the same SKU is not retyped four times. The software did not find the profit. The rules did. The software is what let those rules survive a Tuesday when Alex was at a desk and a good listing had eleven minutes of life.
How to read this case study
Most “I made six figures reselling” posts are a highlight reel with the returns, the dead inventory, and the hours left on the cutting-room floor. This one is built the other way. Start with the constraints, then the rules, then the books, then the categories, then the weeks that went badly. The number in the headline is the residue after those weeks, not the pitch that comes before them.
Three definitions stay fixed for the whole page. Sales means money buyers paid for items that actually sold, including shipping the buyer paid when it was part of the order. Net profit means sales minus the cost of the goods that sold, minus marketplace fees, shipping labels, mailers and tape, and a mileage allowance for sourcing drives and post-office runs. Hours means sourcing, research, pickup, testing, photos, listing, packing, shipping, and customer messages. It does not mean “time I was vaguely thinking about flips while I watched TV.” Scroll time that did not produce a decision is counted. That is why January looks so bad. January was mostly scrolling.
Unsold inventory is not profit and it is not a loss until it is dead. At year-end Alex still held $2,180 of inventory at cost. That pile is an asset on the cash bridge later in this piece, and it is excluded from cost of goods. The moment a tote of “I’ll list it someday” gets counted as money you made, the case study becomes fan fiction. We do not do that here.
Use the companion pages when a category or a fee needs the long version. This case study is the year. The electronics guide, the clothing guide, the tools guide, the furniture guide, the fee guide, and the profit-tracking guide are the manuals those months were following. If a sentence here and a sentence there disagree on a fee schedule, believe the fee guide and then re-check the live marketplace. Platforms change the card rate. They do not change the habit of ignoring it.
What this number is
$23,040 net is a reconstructed composite year, not a testimonial, not an average Botifex user result, and not a forecast. Your city, your car, your categories, and your honesty about hours will move it. The useful part is the shape: a bad hourly rate early, a buy box that gets narrower, and profit that shows up after the ledger exists.
The operator, the cash, and the cage
Alex is 29, salaried, and not trying to quit in month two to make a Reel. The day job is an operations coordinator role with a desk, a lunch, and almost no ability to disappear for a noon pickup across town. Evenings are real from about 6:30 to 9:30. Saturday is the sourcing day. Sunday is for photos, listings, and a post-office run, and it is protected from becoming a second Saturday of driving. That cage matters more than the niche. A person who can source at 11 a.m. on a Wednesday is playing a different game than a person who hears about a listing at 11:07 and sees it gone at 11:40.
Starting cash was $1,200, kept in a separate checking account so grocery money and inventory money could not impersonate each other. The vehicle was a compact SUV, which is enough for a monitor, a tool kit, and a surprising number of bad decisions about bookshelves. There was no box truck, no storage unit in month one, and no spouse whose hobby was “come hold the other end.” A spare bedroom held anything that could be stacked without becoming the personality of the apartment. The garage corner, shared with a bicycle and a snow shovel, held tools. Furniture had to leave fast or it did not get bought. That rule was written after the dresser, not before. We will get to the dresser.
The city is a mid-size U.S. metro, big enough that Facebook Marketplace, Craigslist, and OfferUp all have a pulse on weeknights, and small enough that a 25-minute radius is a real boundary rather than a joke. Alex did not try to be a national eBay store on day one. National shipping was the exit for items that were light, complete, and worth the fee. Local pickup was the exit for anything heavy, lithium-heavy, or awkward. That split is the whole geography of the year, and it is the same split in the local sourcing playbook.
The emotional starting point was a friend who sold a camera and said it was easy. It is always a camera. Alex bought a used mirrorless body the first weekend, guessed the price from active listings instead of solds, paid $40 too much, waited nine days for it to sell, and netted $11 after the fee and a padded mailer. Eleven dollars for the story “I am a reseller now.” The case study starts the week after that, when the story stopped being cute and the question became whether the next ten buys would be less fictional.
January: the month the manual method broke
January sales were $1,180. Net profit was $420. Hours were 42. That is $10 an hour, and it flatters the month, because several of those hours were Alex sitting in a parking lot refreshing Facebook Marketplace with a thumb that had started to cramp. The inventory that sold was real. The process that found it was not a process. It was anxiety with a search bar.
The stack in week one was four phone apps and a Notes document titled “maybe.” Facebook Marketplace for local. Craigslist in a browser because the app is a rumor. OfferUp when Alex remembered it existed. eBay sold comps in a separate tab, usually after the seller had already been messaged. There was no max price on most searches. There was no radius that meant anything; “nearby” was a feeling. Keywords were “vintage,” “tools,” “apple,” and “lot,” which is how you train a marketplace to show you the entire metro’s junk drawer.
The failure mode was specific. A listing would appear while Alex was in a meeting. By the time the meeting ended, either the item was pending or Alex would drive anyway out of spite and find a seller who had “a few people coming.” Spite pickups are a line item. They do not look like a line item until you count the miles and the evening. January had four trips that ended with no item in the car. Those trips are in the 42 hours and in the $60 mileage number. They produced $0 of sales. They produced a belief, which was more expensive, that “the good stuff is already gone” and that the only fix was to refresh harder.
Refreshing harder is the beginner’s religion. It feels like work because your heart rate goes up. It does not scale past the hours you can stare at glass. Alex could not watch eight marketplaces from a day-job desk, and the profitable listings in a mid-size city do not wait for 6:41 p.m. The month broke the method in public: the best buy of January, a complete DeWalt 20V kit someone listed at lunch for $90, was already pending when Alex saw it at 6:50. The kit was not a secret. The listing was eleven minutes old when someone else with a faster loop sent the message. Alex’s loop was a human scrolling after work. That is a loop. It is just a slow one.
- What January proved: the constraint was not “knowing brands.” Alex already knew a DeWalt kit from a no-name drill. The constraint was hearing about the listing while it was still a listing.
- What January did not prove: that reselling “doesn’t work if you have a job.” It proved that a job plus four apps plus no price cap is a hobby that invoices you in gasoline.
- The cash result: $420 net on $1,180 sales. Enough to feel a pulse. Not enough to confuse with a business.
At the end of the month Alex wrote three sentences on a notecard and taped it to the inside of the closet where the inventory lived. No buy without a sold comp. No drive over 25 minutes unless the expected net cleared $80. No keyword that could not be a model, a brand, or a size. The rest of the year is what happened when those sentences were enforced by a system instead of by memory at a red light.
The rules that replaced vibes
The buy box for the year was short on purpose. Alex was not building a general store. Alex was building a filter that a tired person could run at 7:15 p.m. without inventing a new philosophy per listing. The filter had five lines, and breaking one of them required a written reason in the inventory note. Most weeks the written reason never got written, which meant the buy did not happen. That is the feature.
Line one: a sold comp, not an asking price. Active listings are advertisements. Sold and pending listings are evidence. For shipped goods, Alex used recent eBay solds in the same condition, with the same inclusions, inside a 90-day window when the item had enough velocity. For local bulky goods, pending and recently removed local listings plus a floor from shipped solds, because a dresser does not have a national market once you subtract a freight quote. The research habit is the whole argument of how to research resale value before you buy. January’s $11 camera was the tuition for skipping it.
Line two: a fee-aware floor. On items Alex expected to sell under about $80, the minimum net after fees, shipping, supplies, and a rough mileage hit was $25, or a 40% return on cost, whichever the deal failed first. On items over about $150 cost or expected sale, the minimum net was $60. A $20 “deal” that netted $4 after a Poshmark cut was not a deal. It was a packing session. The fee math lived in the 2026 selling-fees guide: local pickup on Facebook, Craigslist, and OfferUp at $0 platform commission when payment is outside checkout; eBay near 13.6% of the total sale plus a small per-order fee in most categories without a Store; Poshmark at 20% from $15 up; Mercari at 10% on the relevant base. Alex did not memorize every edge case. Alex refused to price a buy off the asking price alone.
Line three: radius and hours. Twenty-five minutes from home or from the day-job parking lot, unless expected net cleared $80. No meets after 9:00 p.m. No “I can swing by on my lunch” unless the listing was on the commute and the seller could actually meet in a fifteen-minute window. Line four: one new category at a time until that category had twenty solds. Electronics opened first because the comps are searchable and the items fit in a passenger seat. Tools opened in March. Clothing opened in April, and only as named brands with sizes, not as “vintage lot.” Furniture stayed a guest, not a resident. Line five: if it cannot be tested, photographed, and listed within seven days, it does not get bought unless it is a seasonal item with a date on the calendar. The snowblower in October was allowed. The snowblower in April would have been a storage unit.
The notecard
Sold comp. Fee-aware floor. Twenty-five minutes unless the net clears $80. One new category until twenty solds. List within seven days. If a buy needs a sixth rule invented in the driveway, it is a no.
The first ten buys, and what they taught
After the notecard, Alex forced a sample of ten buys before adding any new keyword. Not ten categories. Ten purchases, logged the night they came home, with cost, expected sale, expected fee, and the sentence “why this clears the floor.” The point of a sample that small is that you can still remember the seller’s porch. You cannot learn a business from a memory of a good Saturday. You can learn it from ten rows.
Buy one was a 2020 MacBook Air, M1, 8GB / 256GB, charger included, cycle count checked on the spot, $280 cash on Facebook Marketplace, fourteen minutes from home. Expected sale on eBay, based on solds in the same config and a honest “good” condition, was about $450 to $480. Alex listed at $465 with a shipping price that covered the label, paid roughly $64 in final value and per-order fees, $14 all-in on the label and a thin mailer, and $6 of mileage. Net landed at $98. Not a yacht. A clean row. The row is the product. The laptop was just the SKU that made the row obvious: model, inclusions, test, comp, fee, done.
Buy two was a pair of Sony WH-1000XM4 headphones, $55, local, missing the case. Alex priced them as missing the case because that is what they were. They sold on Mercari in six days. Net was $28. Buy three was a Kindle Paperwhite with a cracked corner that the photos had called “a little wear.” Alex bought it anyway because the price was low, then learned that “a little wear” on a screen is a different SKU. It sold, slowly, for a $9 net. The lesson was not “never buy Kindles.” The lesson was that the comp has to be the cracked one, not the clean one you wish you had driven to.
Buys four through six were a calculator that was not financial enough to have a market, a “vintage” lamp with no maker’s mark, and a board game missing two pieces the seller mentioned in the last sentence of the description. Combined net: $14. Combined hours, including the listings Alex was embarrassed to photograph: about five. Those three buys were the last time “it was cheap” counted as a reason. Cheap is a cost. It is not a thesis.
Buys seven through ten were the correction. A complete DeWalt 20V drill and impact kit with two batteries and a charger, $110, sold locally for $230 in four days, net about $105 after gas. A Nintendo Switch with dock and both joy-cons, tested, $140, sold on eBay, net about $55 after fees and a box. A small lot of three name-brand polos in known sizes, bought only because clothing was still “closed” and Alex was cheating, net $22 combined and a note that said “do not open this category yet.” And a shop vac that looked like free money and took two weekends of local messages to sell for a $15 net. The shop vac is why “local and $0 fees” is not automatically a good business. Your evening is a fee. It just does not appear on the marketplace’s card.
Ten buys. About $350 of real net if you squint and ignore the hours, and a much more important artifact: Alex could point at two rows (the MacBook and the DeWalt kit) and say “more like this,” and at four rows and say “never again, even if it is $15.” A reseller who cannot name the never-again is going to keep buying it, because the never-again is usually the item that was fun to pick up.
One flip, fully costed
The MacBook is worth taking apart because electronics is where people lie to themselves with round numbers. “Bought for $280, sold for $465, made $185” is the sentence that gets repeated in group chats. It is also false. The buyer did not hand Alex $185 of profit. The buyer handed the marketplace a sale, and the marketplace, the carrier, the mailer, and the miles each took a turn.
Condition was part of the cost even though it does not have its own row. Alex checked that it powered on, that the battery cycle count was sane for the age, that the charger was genuine, that the account lock was off, and that the ports did not look like they had been cleaned with a fork. That took twelve minutes in a coffee-shop parking lot. Those twelve minutes are why the comp was allowed to be a working machine and not a “for parts” sold. Skip the twelve minutes and the $465 comp is a fan fiction you financed.
The same machine on Facebook Marketplace local pickup would have avoided the eBay fee and might have netted more, if the local buyer existed that week at a price near the national sold. Alex listed local first for 48 hours at $440 firm, got two lowballs and one no-show, and moved it to eBay rather than start a negotiation hobby. The 48-hour local window became a standing rule for electronics under fifteen pounds: try local if the fee savings is real, do not let a maybe-buyer hold the SKU hostage over a weekend. Speed of sale is part of hourly rate. A $98 net in nine days beats a theoretical $140 net that is still in the closet on day thirty.
Memorize the shape, not the laptop. Any flip you cannot put in this table before you message the seller is a flip you are buying with hope. Hope is allowed as a mood. It is not allowed as the cost basis.
| Line | Amount | What it actually was |
|---|---|---|
| Sale price | $465 | eBay, shipping covered by the price |
| Cost | $280 | Cash at pickup, charger included |
| Fees | $64 | About 13.6% plus the per-order fee |
| Ship and supplies | $14 | Label and a mailer that fit |
| Miles | $6 | Pickup only; drop-off was on a run |
| Net | $98 | 465 − 280 − 64 − 14 − 6 |
The information problem, named plainly
By the second week of February Alex could cost a flip. Alex still could not see the flip in time. Those are different skills, and people collapse them because both happen on a phone. Research is a judgment you make with the listing in front of you. Sourcing is whether the listing is in front of you before someone else has already said “I’ll take it.” January failed the second skill while Alex was still learning the first. February was the month those got separated on purpose.
The manual loop had a hidden capacity. Call it the number of fresh listings a person can actually evaluate between getting home and needing to sleep. Alex measured it for four nights without changing anything else. The number was ugly. About 40 to 60 new listings across Facebook, Craigslist, and OfferUp matched the loose keywords, and Alex could give a real yes-or-no to maybe 15 of them before the evening was gone. The other 30 were either missed or “saved” into a chat thread that was never opened again. A saved listing is not a pipeline. It is a graveyard with a star icon.
The misses were not random. They clustered at lunchtime and at the 5:30 p.m. post-work dump, when people list the thing they decided to sell while they were still at their own job. Alex’s job occupied both of those windows. A reseller who only sources after dinner is systematically late to the two busiest listing moments of the weekday. You can be talented at 7:30 and still lose to a mediocre buyer who was notified at 12:06.
This is the point in the year where Botifex stops being a product mention and becomes the way the cage got smaller. Alex did not need another opinion about niches. Alex needed the named searches to keep running while the day job was using the hands. Hunt profiles, a ZIP, a radius, a price cap, and an alert that arrives as a text instead of as a memory. The judgment stayed human. The watching stopped being a second unpaid shift. That is the whole product relationship in this case study. Everything else people want software to do — taste, negotiation, courage in a stranger’s driveway — stayed Alex’s job, correctly.
Hunt profiles were job descriptions, not keywords
The first temptation was to paste January’s junk drawer into the new workspace and call it automation. “Vintage.” “Tools.” “Apple.” “Lot.” Alex tried that for three days and recreated the Notes app, only louder. Alerts are a volume machine. If the query is a mood, the phone becomes a slot machine you are obligated to check because you asked for the noise. The fix was to write each hunt the way you would write a task for a very literal assistant who will otherwise hand you every orange object in the city.
A hunt profile that earned its keep had a brand or a model, a price ceiling under the fee-aware floor, and a radius that matched the notecard. “MacBook Air” under $350 inside 25 miles is a job. “Laptop” under $400 inside 100 miles is a hobby that will page you during a staff meeting about a Chromebook with a missing key. Alex kept a short list and killed a profile when it produced a week of opens and zero messages sent. The kill rule mattered more than the add rule. Dead keywords are how a sourcing tool turns back into January.
The early set, once clothing and furniture were still closed, looked boring on purpose. MacBook Air and MacBook Pro with a ceiling. iPad with a generation in the keyword when Alex learned that “iPad” alone is a decade of hardware. Nintendo Switch, complete, under a number that still cleared fees. Sony WH-1000XM4 and XM5, because the model number is the product. DeWalt 20V and Milwaukee M18, split so a bare tool and a kit did not share a ceiling. The tool split is the same discipline as the tool flipping guide: a kit price on a bare tool is how you donate money to people who already own the batteries.
Local marketplaces and shipped marketplaces were not the same hunt just because the noun was the same. A DeWalt kit wants Facebook Marketplace, Craigslist, and OfferUp first, because the exit is local and the fee is typically zero. A pair of headphones can justify eBay and Mercari in the same watch, because the exit is a mailer. Alex learned to name the exit inside the profile’s note: “local only” or “ship if the comp clears 13.6%.” When a profile had no exit written down, it got paused. A search without an exit is a wish to be busy.
Alerts went to SMS for the five profiles that had actually produced a buy, and to a quieter digest for the ones still on probation. The point of a text is that it can find you in the hallway between meetings. The point of not texting everything is that you will mute the number, and then you are back to refreshing, only now you are also annoyed. Alex treated the mute button as a business risk. If a profile could not be described in one sentence to a coworker without sounding unhinged, it did not get a text. “Ping me if a complete M18 FUEL kit shows up under $150 within 20 miles” is a sentence. “Ping me if anything cool happens” is how you end up interviewing a broken Roomba.
Profile hygiene
One brand or model. One price ceiling under the fee floor. One radius. One written exit. Kill it after a week of opens and zero messages. SMS is for profiles that have already paid for themselves, not for the ones you are curious about.
Comps before the car keys
The second half of the information problem is what you do in the four minutes after an alert. Alex’s early habit was to message first and research in the car. That habit survives because messaging feels like winning. You were fast. You might get the item. You also might spend forty minutes driving toward a price you would not have offered if you had looked at solds while the kettle boiled. Speed without a number is just arriving early to a mistake.
The four-minute drill became muscle by March. Read the title and the inclusions, not the adjectives. Open sold comps for that exact configuration. Subtract a fee that matches the exit you already named. Subtract a rough ship or a rough mile. Compare the remainder to the floor on the notecard. Message only if it clears. If the photos hide the one thing that changes the SKU — the battery, the charger, the screen, the size tag — the message is a question, not a commitment. “Does it include both batteries, and do they hold a charge?” is a sourcing message. “Interested, is this available?” is a way to enter a negotiation you have not priced.
Deal Score sat next to that drill as a second pair of eyes, not as a manager. Botifex scores a listing against eBay sold context so a cheap ask does not get mistaken for a margin. Alex liked it most on the items that felt exciting, because excitement is when the drill gets skipped. A low score on a listing Alex wanted to love was a prompt to find the missing cost: a fee, a crack, a generation that is not the generation in the title, a “lot” that is one good item and four anchors. A high score was not a buy. It was permission to spend the four minutes. The write-up on how that score gets built lives in improving the deal scorer. In this case study the only operational rule was: the score can veto a mood, and it cannot replace the parking-lot test.
False confidence showed up in a specific costume. A seller would price a laptop “firm” at a number that matched the average of active listings, and Alex would feel late if the message was not instant. Active averages are where overpriced inventory goes to sit. The solds, filtered to the same chip and the same RAM, were often $70 lower, and after fees the buy was a wash. Learning to feel late and still not send the message was worth more than any single flip in the first quarter. The hourly rate moved when the nos got faster, not when the yeses got braver.
What February and March did to the hourly rate
February sales were $2,480. Net was $980. Hours were 50. That is about $19.60 an hour, almost double January, on more hours rather than fewer. The extra hours were pickups and listings, which is the right direction. Scroll time dropped because the phone was only loud for named profiles. Alex still over-messaged. The nos were faster than January and not yet fast.
March sales were $3,180. Net was $1,340. Hours were 56. About $23.90 an hour. Tools opened as the second category after electronics cleared twenty solds, counting the January experiments that were actually electronics and ignoring the lamp. The first tool week was almost a relapse: Alex searched “tools” once, got a shed, and had to delete the profile the same night. The replacement profiles were DeWalt 20V, Milwaukee M18, and a tight Makita 18V watch that rarely hit the ceiling. Three names. Not a hardware store.
The first quarter closed at $6,840 sales, $2,910 cost of goods, $980 fees, shipping, and supplies, $210 mileage, and $2,740 net across 148 hours. About $18.51 an hour for the quarter, dragged down by January and pulled up by March. If you stopped the case study here you would call it a decent side hustle and an argument for keeping the day job, which it was. The argument for continuing was not the dollar. It was the slope. The work was getting more specific every month, and the rate was following the specificity with a lag, the way a ledger always lags a habit.
Cash at the end of March was tighter than the profit number suggests, because profit counts the items that sold and cash remembers the items still in the bedroom. Alex had about $700 of unsold cost sitting in a tote and on a shelf, mostly the slow Kindle, two calculators that should never have been bought, and a tool battery Alex was afraid to admit might be tired. The profit was real. The float was also real. A reseller who withdraws the profit number and ignores the tote will meet the tote again when rent is due and the next good kit appears on a Thursday.
The twelve-month books
Here is the year as a ledger, before the stories that explain why the later months look different. Sales are collected revenue. Cost of goods is only the cost of what sold that month, not what was purchased. Fees include marketplace commissions, labels, mailers, tape, and the odd box. Mileage is the allowance Alex actually logged, not a fantasy reimbursement. Net is sales minus those three costs. Hours are the full loop. If you add the twelve nets you get $23,040. If you add the four quarters later in this piece you get the same $23,040. That is the standard. A case study that cannot add is a mood board.
Read the hours column against the net column, not the sales column against your dreams. Sales grew because Alex bought more of the rows that looked like the MacBook and the DeWalt kit and fewer of the rows that looked like the lamp. Hours grew too, from 42 to the mid-60s, and then mostly stopped growing. The ceiling was the day job and the promise that Sunday would not become a second Saturday. The rate improved because each hour contained more selling and less browsing, not because Alex found a hidden Saturday.
December is the loud month and it is easy to misunderstand. Net of $3,240 on 66 hours is about $49 an hour, the best rate of the year, and it was not magic holiday demand alone. It was eleven months of profiles that already knew what a buy looked like, plus a city full of people cleaning garages before family arrived, plus Alex refusing to spend the extra seasonal traffic on new categories. The holiday did not install a system. It paid the system that was already installed. A beginner who starts in November and expects December to look like this December is reading the last chapter first.
Average net per sold unit, across about 420 items that actually cleared, was roughly $55. That average hides the mix. Clothing pulled it down. Electronics and tools pulled it up. The average is a terrible way to choose the next buy and a fine way to see whether the year was a pile of $8 wins pretending to be a business. It was not. The mix section below is where that claim has to survive contact with categories.
| Month | Sales | COGS | Fees and ship | Miles | Net | Hours |
|---|---|---|---|---|---|---|
| January | $1,180 | $520 | $180 | $60 | $420 | 42 |
| February | $2,480 | $1,040 | $360 | $100 | $980 | 50 |
| March | $3,180 | $1,350 | $440 | $50 | $1,340 | 56 |
| April | $3,320 | $1,360 | $460 | $80 | $1,420 | 52 |
| May | $3,740 | $1,480 | $550 | $100 | $1,610 | 54 |
| June | $4,200 | $1,640 | $630 | $110 | $1,820 | 56 |
| July | $4,480 | $1,720 | $660 | $120 | $1,980 | 55 |
| August | $4,920 | $1,860 | $730 | $120 | $2,210 | 56 |
| September | $5,520 | $2,030 | $790 | $100 | $2,600 | 60 |
| October | $5,720 | $2,100 | $820 | $120 | $2,680 | 58 |
| November | $5,980 | $2,240 | $860 | $140 | $2,740 | 60 |
| December | $6,710 | $2,400 | $940 | $130 | $3,240 | 66 |
| Year | $51,430 | $19,740 | $7,420 | $1,230 | $23,040 | 665 |
Electronics carried the dollar profit
Electronics contributed about $9,420 of the $23,040 net, a bit over 40%, on roughly 86 sold units. That is about $110 net per sale, which matches the MacBook’s shape more than the Kindle’s. The category worked because the nouns are searchable, the failures are testable in a parking lot, and the exits are real: local pickup when the fee savings beat the wait, eBay or Mercari when the item was light and the solds were fresh. Alex did not become a computer shop. The buy box stayed on a short list of complete, current-enough SKUs with solds inside 90 days.
The list that earned repeat hunts: MacBook Air and Pro from the M1 generation forward, base configs Alex could verify; iPads with the generation in the title and a cable or a note that the cable was absent and priced as absent; Nintendo Switch consoles that included the dock; Sony and Bose headphones with a model number; a narrow camera watch that was mostly older mirrorless bodies with the lens named. Phones were almost entirely skipped after two buys. Account locks, battery health, and “it was my kid’s” stories ate the margin in time even when the dollars would have looked fine on a spreadsheet. Time is in the hourly rate. The spreadsheet does not get a vote if the parking lot takes 40 minutes.
The electronics flipping guide is the long version of what Alex was enforcing in shorthand. In the case study the shorthand had three scars. First, a locked laptop is worth parts money or it is worth nothing, and parts money rarely clears a drive. Second, “untested” from a seller who will not plug it in at the meet is a different product from the sold comp you screenshotted. Third, bundles are where margin goes to die: a console plus four games plus a third-party controller is not four comps added together unless you enjoy listing four comps. Alex started pricing bundles as the one item with a sold and treating the rest as maybe-free. If the one item did not clear the floor by itself, the bundle was a no.
A representative good month for the category, September, included the MacBook pattern twice, a Switch, two headphone pairs, and an iPad that was priced without the pencil because the pencil was not there. Combined electronics net that month was about $640 of the $2,600 total. The rest of September was tools and a clothing week that finally behaved. Electronics was the spine, not the whole animal. When a spine SKU did not alert for ten days, Alex did not invent a new spine. The profiles stayed up. The floor stayed put. Boredom is how resellers add a category they cannot test.
Clothing carried the unit count and punished the hourly rate
Clothing opened in April, after tools had a month of evidence and electronics had a quarter. It contributed about $4,610 net, about 20% of profit, on roughly 210 sold units. Do that division before you get excited. About $22 net per sale. At that contribution, clothing only works if the sourcing, the photo, and the listing are fast, and if the fee matches the price. A $40 shirt on Poshmark at 20% is a different business from the same shirt sold local or on a lower-fee exit. Alex’s first clothing month ignored that sentence and then got to meet it in the numbers.
April clothing was a lot problem. A seller had a tote of “Lululemon and other workout stuff” for $80. The photos showed three good pairs of leggings and a pile of fabric that could have been anything. Alex bought the tote because the three pairs would have cleared the floor by themselves if the sizes were right. The sizes were mostly right. The pile was mostly not the brand in the sentence. Net on the tote, after a week of flat-lays and two items that never sold and were donated, was $46. Hours were about seven. That is under $7 an hour, which is the case study’s way of saying the tote was a tax on optimism. The clothing guide already says to buy the garment you can name, in a size you can read, at a cost that survives the fee. April was the month Alex paid to believe it.
The correction was painful and small. Hunts became brand plus category plus a size range Alex could actually photograph on a hanger without building a studio: men’s large and extra-large outdoor brands, a short list of women’s athletic brands in the sizes that sold in the first twenty, and no “vintage” keyword at all. Vintage was a thrift-store problem Alex did not have the eye for, and the case study does not pretend otherwise. Items under $15 expected sale were banned unless they were riding along in a shipment that was already paid for by a better SKU. Poshmark stayed in the mix for pieces that sold fast enough that the 20% was a convenience fee rather than the whole margin. Mercari and eBay took the rest. Depop got a few tests and did not earn a standing hunt until a specific brand started clearing there without extra photo work.
By August, clothing’s hourly rate inside the category was acceptable and still worse than tools. Alex kept it because it filled Sunday listing time when the local pickup calendar was quiet, and because 210 sales is a lot of repetitions of the photo-and-measure loop. Repetition is how listing time falls from 20 minutes to 8. The category was not kept because “apparel is hot.” It was kept because the measured net per hour, once lots were banned, cleared a number Alex could say out loud without wincing. When a brand stopped clearing, the profile was paused the same week. Clothing inventory that sits is not a lookbook. It is rent you are paying in closet space.
The tote rule
If you cannot name every garment you are paying for, you are paying for a story the seller told in the first line of the description. Price the garments you can see and identify. The rest of the tote is zero until it is in your hands, and it is still not a reason to buy.
Tools were the hourly-rate correction
Tools contributed about $5,280 net, roughly 23% of the year, on about 64 sold units. A bit over $80 net per sale, and the hours per sale were kinder than clothing because the listing is a driveway photo and a model number, not a flat-lay with a measuring tape and a prayer about lighting. Local pickup meant the fee line was often just gas. That is why tools moved the hourly rate in the summer even though electronics still contributed more dollars. Dollars per sale and dollars per hour are allowed to disagree. The ledger is there so you notice when they do.
The buys that paid were boring to describe and easy to alert on. Complete DeWalt 20V kits. Milwaukee M18 impacts and drills with at least one battery Alex could test, priced as a bare tool if the battery was missing or swollen. A handful of Makita LXT pieces when the comp was obvious. A shop compressor that ran, sold locally in a week, and never once tempted a shipping quote. Alex kept a cheap known-good battery and charger in the SUV for the two platforms that dominated the hunts, so “untested” could become tested in the seller’s driveway. The tool guide calls this the buy box. In the case study it was a milk crate behind the driver’s seat.
The buys that did not pay were also boring, which is the point. A “lot of tools” that was three no-name drills and a cracked case. A bare Milwaukee impact at a kit price because the title said Milwaukee and the photos were a pile. A pressure washer that ran for thirty seconds and then reminded everyone that pumps are a repair business. Alex was not in the repair business. The rule after the washer: if the test is “it turned on,” and the failure mode is a part you cannot see, the comp you are using is for a different risk profile than the one you are buying. Price the risk or leave it.
Stolen-tool anxiety was not theoretical. One July listing was a still-boxed contractor kit at a price that could not be true, cash only, meet after dark, serial plate photographed at an angle that hid the number. Alex did not go. The net profit of not going is zero, and it is the correct net. The standing rule matched the guide: ground-off serials, a story that cannot sit next to the price, and a meet that only works in the dark are a walk. Logging serials on the kits that were bought was a Sunday chore, dull and non-optional. A reseller who will not do dull chores will eventually do an exciting one in a police report.
Furniture taught cubic feet, then mostly left
Furniture contributed about $2,140 net, about 9%, on only 18 sold pieces. The average net looks handsome, near $119, and the average is a liar if you do not own a second person and a vehicle that can take a dresser without negotiation. Alex’s compact SUV made the category a guest. The guest overstayed once. That once is the lesson, and the furniture guide is the long version for people whose guest room is a truck.
The overstay was a mid-century dresser, or a dresser that had been called mid-century by someone who liked the word. Six drawers, solid, heavy, $40, “needs to go today.” The local comp for similar pieces that actually left porches was about $180 to $220. Alex did the fee math, which was easy because local pickup is $0 platform commission, and did not do the cubic-foot math, which was the only math that mattered. A friend with a truck was “around this weekend.” The weekend moved. The dresser spent eleven days in a shared garage aisle, collecting a neighbor’s patience deficit. It sold for $160 to a buyer who could take it the same evening. Net after the friend’s gas money and the second trip was about $90. Hours, including the texts begging for the truck, were close to six. The rate was fine. The apartment politics were not a line the ledger knows how to price, so Alex priced them as a ban: no piece that does not fit in the SUV unless the buyer is already lined up or the truck is in the driveway before the cash leaves the pocket.
The furniture that belonged in the year was smaller and ruder. A solid wood nightstand that fit. A set of chairs that stacked. A desk that came apart with an Allen key Alex started keeping in the door pocket. Sourcing was almost entirely local alerts: Facebook Marketplace and Craigslist inside the radius, with a price ceiling and the words that actually move (“solid wood,” a style Alex had comps for) rather than “furniture,” which is how you meet every particle-board bookshelf in the metro. OfferUp caught two pieces the other apps were slow on. eBay was not an exit. Shipping a nightstand to save a listing template is how you learn freight.
Eighteen sales in a year is not a furniture business. It is a pressure valve for weekends when electronics and tools were quiet and a nearby listing cleared the floor without creating a roommate. Alex did not scale it on purpose. Scaling furniture without scaling the vehicle and the storage is how part-time resellers end up renting a unit to house their ambition. The storage unit math never cleared the notecard, so the unit never happened. That refusal is part of the $23,040. Costs you do not take are profit you do not have to earn back.
The rest of the mix, and the walk-away list
Everything that was not electronics, clothing, tools, or furniture contributed about $1,590 net, about 7%, on roughly 42 sales. Sports equipment that was a named brand with a size. A few small housewares with a maker’s mark and a sold comp. Almost no media. DVDs and random books were a January impulse and then a permanent no, because the hourly rate of listing a $6 item is a prank you play on your Sunday. The 7% existed to catch the obvious exception, not to become a fifth strategy. When a one-off netted $70 and took an hour, it was kept as a story and not promoted into a hunt profile unless it happened twice.
The walk-away list was taped under the notecard by June and almost never edited after September. It is more useful than the buy list, because the buy list changes with comps and the walk-away list is where self-deception goes to be recognized. Alex’s version, in the words that were actually on the paper:
- No lots you cannot itemize. Tool lots, clothing totes, “box of electronics.” If the good item does not clear the floor alone, the lot is a no.
- No untested power, no untested batteries, no locked devices. A seller’s “it worked last year” is not a condition. It is a wish.
- No meets that only work after dark, no ground-off serials, no prices that cannot be true. Zero net is allowed. A stolen SKU is not.
- No furniture that does not fit in the SUV unless the truck is already there.
- No new category because the usual profiles were quiet for a week. Quiet weeks are part of the year. They are not a mandate to become a different business on a Wednesday.
- No item whose exit you cannot name before you leave the house. Local, or a specific shipped marketplace, with the fee already subtracted.
The category dollars, so the mix is not a vibe: electronics $9,420, tools $5,280, clothing $4,610, furniture $2,140, other $1,590. Sum: $23,040. Units: about 86, 64, 210, 18, and 42, which is about 420 sales. Alex bought closer to 480 items. The gap is ending inventory, a handful of donations, and one return that will show up in the bad-month section where it belongs. A business that sells 420 and talks as if it sold 480 is counting hope as revenue.
| Category | Approx. units sold | Net profit | Share of net | What it was good at |
|---|---|---|---|---|
| Electronics | 86 | $9,420 | 41% | Dollars per sale |
| Tools | 64 | $5,280 | 23% | Dollars per hour |
| Clothing | 210 | $4,610 | 20% | Reps and Sunday fill |
| Furniture | 18 | $2,140 | 9% | Occasional local wins |
| Other | 42 | $1,590 | 7% | Exceptions, not a strategy |
| Year | 420 | $23,040 | 100% | The mix, not a niche |
Where each item actually sold
The exit was a decision, not a brand loyalty. Alex did not “become an eBay seller” or “a Facebook seller.” The same week could include a local tool sale, an eBay laptop, and a Poshmark jacket, because those were three different fee problems wearing three different objects. The marketplace menu in the workspace matched the menu in real life: Craigslist, eBay, Facebook Marketplace, OfferUp, Poshmark, Mercari, Depop, and Whatnot. Alex did not use all eight as exits every month. Alex watched the ones that could surface a buy, and listed on the ones where that buy’s math survived.
Local pickup on Facebook Marketplace, Craigslist, and OfferUp took nearly all of the tools, all of the furniture, and the electronics that were heavy relative to their margin or that found a local buyer inside the 48-hour window. The platform fee was typically $0 when payment happened in person. The real costs were miles, no-shows, and messages. Alex started requiring a same-day window and a public meet for anything under $100, and was willing to wait on a porch for a $200 kit because the kit had earned it. OfferUp was not a strategy. It was a third local feed that occasionally had the item the other two had priced wrong. Ignoring it would have been fine. Watching it inside the same hunt was cheap once the profile existed.
eBay took the searchable electronics and the occasional lightweight tool or genuine battery when national solds beat local after the 13.6% and the label. Mercari took a slice of the same goods when the fee and the shipping label were kinder to a mid-priced item than eBay’s total-sale base. Poshmark took clothing that sold fast enough to justify 20%. Depop stayed experimental: a few apparel SKUs where the buyer already was, with the payment cut included in the floor rather than discovered after the sale. Whatnot was a single Sunday experiment in June, a live show Alex thought might empty a clothing backlog. It emptied two hours and four items at prices that would have cleared async without the performance. Live selling can be a business. It was not this business, because this business had a day job and a voice that does not want to narrate hangers.
Cross-listing was not “put it everywhere and see.” It was a draft written once, then posted to the two exits that matched the SKU, with the local price and the shipped price allowed to differ. The browser extension path on Botifex, the one that keeps you from retyping every field, is a Pro and Ultra workflow. Alex used it the way a person uses a label printer: grateful, and not confused about who still has to take the photo. The cross-posting piece and the multi-marketplace playbook go further on the mechanics. In this year the mechanic that mattered was delisting. A local sale on Saturday morning had to kill the eBay listing before a second buyer paid. Double sales are not a growth hack. They are a refund and an apology, and they happened once. Once was enough to make delist the first chore after cash hit, before the dopamine of telling anyone.
Inventory was the death pile, until it was a ledger
Through March, inventory lived in the closet, in a tote, and in Alex’s head. The head is a bad database. It remembers the MacBook, because the MacBook felt like a win, and it forgets the Kindle with the cracked corner, because the Kindle felt like a chore. By April the chore had friends. Clothing had arrived. A shelf of “I’ll list it this weekend” had become the weekend. Profit on paper was climbing, and the bedroom was filling with cost that had not yet admitted whether it was an asset or a donation.
The switch was unglamorous. Every item got a cost, a date, a category, an intended exit, and a status: inbound, listed, sold, or dead. Dead meant donated, returned, or broken in a way that ended the story. Botifex’s inventory and profit tracking is where that record lived for the rest of the year, next to the same login that had sourced the item, so the cost basis did not have to be retyped out of a receipt photo three weeks later. The profit-tracking guide is the manual. The case-study version of the manual is one rule: if it is not in the ledger by Sunday night, it is not allowed to stay in the apartment. Untracked inventory is how a $22 net shirt becomes a $0 net shirt you trip over in July.
The report Alex actually opened was not revenue. It was age. Anything listed more than 21 days got a markdown or an exit change, not a new adjective in the title. Anything unlisted more than 7 days violated the notecard and had to be listed, returned to the seller if that was still possible, or killed. The 7-day rule felt harsh in week one and obvious in week six, because the items that broke it were never the good ones. The good ones were already gone. The rule was a spotlight for the ones Alex was avoiding because the photos would be annoying.
Cost basis had to include the whole buy, allocated honestly when a purchase was more than one SKU. The clothing tote’s $80 did not get assigned entirely to the three leggings so the leggings could look brilliant and the rest could look free. Free inventory is a lie that flatters your best photo. Alex split cost by expected sale when the split was knowable, and dumped shared cost onto the items that actually sold when it was not, which made the winners look slightly worse and the truth look much better. Fees and shipping hit the sold row, not a vague monthly “expenses” bucket that nobody opens. A bucket you do not open is where a category goes to pretend it is profitable.
Ending inventory at cost was $2,180. That number is healthy only because it turned over. A snapshot of $2,180 that is the same twelve items from April is a failure with a neat total. Alex’s year-end pile was mostly December buys still inside their seven-day window, two tool batteries being sold as batteries rather than implied into a kit, and a small clothing rail that had listed dates. Nothing in the pile was older than a month except one compressor hose Alex was wrong to keep and finally donated in January of the next year, outside this ledger, which is itself a small honesty. The case study does not launder next year’s donation back into this year’s hero number.
Sunday close
Cost, date, exit, status. Listed within seven days. Markdown or move at day 21. If the closet and the ledger disagree, the closet is not the one that is wrong. You just have not confessed yet.
The bad month was not a month, it was five invoices
There is no month in the table where net goes negative, and that fact can be misread as smoothness. The year was not smooth. It was a stack of fine weeks with five invoices that would have defined the whole story if Alex had quit after any one of them. Putting them in one section is a narrative convenience. They were spread from May to November, and each one tried to become a reason to go back to refreshing apps with no rules, because rules had not prevented the pain.
Invoice one was a no-show cluster in May. Three local buyers in eight days, all “on my way,” none of them on the way. Two were tool buyers, one was a nightstand. Hours burned: about four, plus the sourness that makes the next message ruder than it needs to be. Policy after that: a buyer who missed a window without a new time did not get a second hold. The item went back to the top of the listing the same hour. Holds are a product you are giving away. Alex had been giving them to strangers who had not paid.
Invoice two was the fake. A “Nikon” lens at a price that cleared the floor if it was the lens in the title. The photos were fine. The weight in the hand was wrong, the serial did not match the format Alex had looked up in the car, and the seller got friendly in the way people get friendly when they want the inspection to end. Alex walked. The walk cost a Saturday slot and saved a few hundred dollars plus a return fight. The authentication guide is the checklist. The case-study addition is emotional: the alert was not wrong to show the listing. The listing was a cheap ask on a desirable noun. That is exactly when a fake is priced to move. Deal Score cannot hold a lens up to a window. You can.
Invoice three was a return in August. An eBay laptop, described accurately, developed a keyboard fault the parking-lot test had not caught because the test was “it types” and not “it types for an hour.” Refund, label, and a repaired-or-parts resale that netted a loss of about $70 against the original expected win. The loss is inside August’s $2,210, which is why August still looks like a good month. A good month can contain a bad SKU. The fix was a longer typing test and a note in the listing that matched what was tested, not what was hoped. Over-describing a test you did not do is how returns get born.
Invoice four was the snowblower, bought in a warm snap because the price was silly and the season was “soon.” Soon was six weeks. Storage was the garage aisle again. It sold, finally, for a fine net, and the hourly rate on that one piece was mediocre once you included the times Alex moved it so a neighbor could get to a trash bin. Seasonal goods are allowed when the calendar is honest. “Soon” is not a month. Invoice five was the double sale already mentioned: local cash in hand, eBay buyer paid twenty minutes later, refund, a defect rate of one, and a delist habit that never lapsed again. None of these invoices show up as their own row in the year table, because a case study that only publishes the salvage value is advertising. They are in the net. They are also the reason the rules got shorter instead of longer. Each invoice deleted a behavior. It did not add a new niche.
When the photo had no name
A slice of listings never earned a hunt profile because the seller did not know the noun. “Old camera.” “Speaker, works.” “Tool set, make offer.” Those titles are invisible to a keyword that demands a model number, and some of them are invisible on purpose, and some of them are a parent cleaning a house. Ignoring all of them leaves money in the photos. Chasing all of them returns you to January. Alex needed a way to ask “what is that” without turning curiosity into a second job.
Botifex Vision was the narrow tool for that question. A listing photo of an unlabeled camera body, or a headphone cup, or a tool that was photographed from the side that does not show the badge, could be identified well enough to decide whether a comp search was even worth opening. Identification is not authentication. The Nikon walk still happened with the object in hand. Vision’s job in this year was to stop Alex from either skipping a photo that was a real SKU or driving toward a photo that was a toy version of a real SKU. The product write-up is introducing Botifex Vision. The operating rule was smaller: if you still cannot name it after the tool and a minute of comps, you cannot price it, and you do not message.
One September buy came out of that hole. A Craigslist title said “camera for parts” and the photo was a mirrorless body Alex did not recognize at thumbnail size. Vision plus a comp check put a name on it. The seller’s “for parts” was a dead battery and a fear of menus. It powered on with a charger Alex brought. Net was about $120 after a local sale, because the local buyer knew the name and the seller had not. That is the cleanest version of the information problem: not speed, but vocabulary. Most “for parts” listings are actually for parts. The rule did not become “buy every humble title.” The rule became “spend one minute naming it, then apply the notecard as if the seller had been precise.” Humble titles are not a discount code. They are a reason to look once.
The weekly cadence that made the rate climb
By June the week had a shape, and the shape is more copyable than any SKU in this piece. Monday and Tuesday were alert-only. Alex could answer a text in a hallway, run the four-minute drill, and message. No drives except a commute pickup that was already on the route. The day job stayed the day job. A sourcing business that requires you to fake a dentist appointment is a business with a hidden hourly rate of whatever your manager does when they notice.
Wednesday was the optional drive night, capped at two pickups, both inside the radius, both already cleared. If only one cleared, Alex did not add a “while I’m out” stop. While-I’m-out stops are how the lamp got bought. Thursday was listing maintenance: messages, markdowns on day-21 items, and delists. Friday was dark on purpose. A dark night is a feature in a part-time year. People burn out of reselling by refusing to have one, then describe the burnout as a market problem.
Saturday was sourcing, three hours in the morning, not eight. The hunts were already running. Saturday was for the meets that needed daylight and for a single thrift or estate stop when the alerts were quiet, using the same buy box, not a new personality. The local sourcing playbook covers the map: ZIP, radius, garage sales, estate sales. Alex used estate sales as a supplement, not a religion. An estate sale without a searchable SKU is a way to spend Saturday holding candlesticks. Sunday was photos, listings, the post office, and the ledger close. Two to three hours. Then stop. The stop was the hardest rule and the one that kept the marriage between this work and a life from becoming a negotiation.
The hour budget for a normal week landed around 12 to 14, which is how 665 hours fits in a year that also contained a day job and a December that ran hot. When a week hit 20, the next week was cut on purpose, even if alerts were good. The inventory could absorb a pause. Alex’s attention could not absorb a second job that denied being one. The hourly rate in the fourth quarter is partly this refusal. You cannot divide profit by hours you refused to inflate.
Cash is not profit, and the float almost lied
Net profit of $23,040 does not mean Alex transferred $23,040 to personal spending. Starting cash was $1,200. Purchases of inventory, including what was still on hand at year-end, were about $21,920 (the $19,740 of cost of goods on sold items plus the $2,180 still in stock). Sales collected were $51,430. Fees, shipping, and supplies were $7,420. Mileage paid out of the reselling account was $1,230. Owner draws were $1,500 a month for the last four months, $6,000 total. Ending cash in the reselling account was about $16,060. Add the $2,180 of inventory and you get $18,240 of equity, which is starting capital plus profit minus draws. The arithmetic is the point. If your case study cannot survive a cash bridge, you are reporting a feeling.
The dangerous month for the float was May, not January. Profit was fine. Cash was tight because clothing had opened and a bunch of cost was sitting in unstocked photos, and because Alex had started to eye the profit number as spendable. A $400 personal transfer in a week when three good kits were also available would have forced a choice between the kits and the transfer. Alex did not take a draw until September, after the cash balance could lose $1,500 and still fund a normal buying week. That delay is not austerity theater. It is how a $1,200 start reaches December without a credit card “for inventory,” which is the sentence people use right before the float owns them.
Taxes get a paragraph and not a plan. Alex set aside a rough slice of net in a separate savings bucket and did not call that slice profit available for draws. This page is not tax advice. Marketplace income, mileage, and cost of goods have rules, and the rules care about records more than they care about your niche. The ledger that made the hourly rate visible is the same ledger a preparer can use without reconstructing your year from a camera roll. If you take nothing else from the cash section, take that. A shoebox of receipts is not a system. It is a February problem you postponed until tax season.
Ending cash $16,060 plus inventory at cost $2,180 is $18,240. Starting $1,200 plus $23,040 profit minus $6,000 draws is the same $18,240. The bridge ties. A year that ties is allowed to have an opinion. A year that does not tie is a highlight reel with extra steps.
| Bridge line | Amount | Sign |
|---|---|---|
| Starting cash | $1,200 | In |
| Sales collected | $51,430 | In |
| Inventory purchased | $21,920 | Out |
| Fees, ship, supplies | $7,420 | Out |
| Mileage | $1,230 | Out |
| Owner draws | $6,000 | Out |
| Ending cash | $16,060 | Still in the account |
The hourly rate was the real case study
Sales are what strangers ask about. The hourly rate is what decides whether you are building a job you like. January paid about $10 an hour. The first quarter, dragged by January, paid about $18.51. The second quarter paid about $29.94. The third paid about $39.71. The fourth paid about $47.07. The year, blended, paid $34.65. Same person. Same city. Same SUV. The variable that moved was how much of each hour was a decision versus a scroll.
That climb is the honest way Botifex sits inside the result. Not as a machine that pays $47 an hour, and not as a spectator. The workspace is what kept the notecard alive between meetings: named hunts instead of junk keywords, a score and a comp before the keys, a photo that could be named when the seller could not name it, a ledger that made clothing’s cute unit count confess its hourly rate, and a listing draft that did not demand Sunday become data entry. Remove the rules and the same screens are just a faster January. Remove the screens and the rules collapse the first week the day job gets loud. The case study is the combination.
Compare the rate to the day job only if you are honest about benefits, taxes, and boredom. $34.65 after the costs in this ledger is not a salary replacement, and Alex did not treat it as one. It was a second stream that paid more per hour than the early months deserved and less drama than quitting would have cost. The fourth-quarter rate is the number that makes a careful person consider more hours. Alex did not add them in December on purpose. The next year’s question, outside this page, is whether a few more hours keep the rate or dilute it. Scaling hours is easy. Scaling the rate is the actual business.
| Quarter | Net profit | Hours | Net per hour |
|---|---|---|---|
| Q1 (Jan–Mar) | $2,740 | 148 | $18.51 |
| Q2 (Apr–Jun) | $4,850 | 162 | $29.94 |
| Q3 (Jul–Sep) | $6,790 | 171 | $39.71 |
| Q4 (Oct–Dec) | $8,660 | 184 | $47.07 |
| Year | $23,040 | 665 | $34.65 |
What the software cannot do, including this software
A case study that ties a workspace into the year owes the reader the boundary, or it turns into the ad we are refusing to write. Botifex did not test the DeWalt battery. It did not feel that the Nikon was light in the hand. It did not fit a dresser into an SUV. It did not send the awkward message that a buyer had missed their window. It did not make December happen to a person who started in November with a keyword called “vintage.” Alerts, comps, scores, vision, inventory, and cross-post drafts are only a faster loop around decisions you are still required to make. They are not the decisions.
The failure mode to watch is delegation of taste. A high Deal Score on a category you cannot test is a suggestion that you might be looking at a mispriced listing, not a suggestion that you have become qualified to buy it. Alex did not open watches, sneakers, or luxury bags, even when a photo looked like a story, because the authentication cost would have blown the hourly rate and the mistake cost would have blown the float. The tool would have watched those keywords if asked. Asking would have been the mistake. The walk-away list is allowed to veto the product.
There is also a maintenance cost that belongs in the open. Marketplaces change their pages, their fees, and their tolerance for automation. A hunt that was clean in March can get noisy in August because the site started mixing in recommended junk. Alex audited profiles once a week, the same Thursday as the markdowns, and paused anything that had become a digest of maybes. That audit is part of the 665 hours. Anyone who tells you the software runs itself is selling you the January feeling in a different coat. The coat is quieter. You still have to decide.
A 90-day version if you are starting from zero
You do not need this year’s December to justify starting. You need January’s honesty and March’s slope. Here is the compressed version Alex would actually hand to a friend with a day job, a compact car, and $1,000 they can lock in a separate account. It assumes you will read the category guide for whichever box you open, and the getting-started guide if the vocabulary is still new. It assumes you will not open four categories because a video said diversification sounds adult.
- Days 1–7: Separate the cash. Write the notecard. Pick one category you can test in a parking lot or measure on a hanger. Create fewer than ten hunt profiles, each with a model or brand, a ceiling, a radius, and an exit. Turn SMS on for none of them until one of them produces a message you are proud of.
- Days 8–30: Ten buys maximum, logged the night they come home. Cost, comp, fee, expected net, and one sentence. List within seven days. No second category. No lots. At the end of the month, compute hours and net even if the number stings. January stung. That was the tuition, not the verdict.
- Days 31–60: Kill the profiles that only create opens. Keep the ones that create rows like the MacBook or the kit. Add a second category only if the first has twenty solds or a very clear reason the local supply is seasonal. Start the age report. Markdown at day 21. Do not take a draw.
- Days 61–90: Look at net per hour, not sales. If the rate is rising and the closet matches the ledger, keep the cadence and let the third month be boring. Boring is the setup for a quarter that looks like Q2 in this table, not like a screenshot. If the rate is flat because you are still buying lamps, the next profile will not save you. The notecard will, if you obey it when the item is charming.
Ninety days will not produce $23,040. It might produce a ledger you trust and a rate you can compare to the next ninety. That comparison is the whole game. People quit reselling when they compare week two to someone else’s December. Alex’s December only makes sense as the twelfth row, after the first row was allowed to be small.
Who should not copy this year
Do not copy it if you need the money on a date. The float is real, the first month was $420 net, and a bill that cannot move will force buys the notecard would have blocked. Reselling is a bad emergency. It is a reasonable system. Those are different tools, and using the second as the first is how the death pile starts with desperation instead of with a lamp.
Do not copy it if you cannot stand leaving. The profit in this year includes the Nikon that stayed in the seller’s hands, the boxed kit that was too cheap at night, the furniture that did not fit, and the dozens of alerts that died in the four-minute drill. If a no feels like a personal loss, you will buy the loss to make the feeling stop. The feeling is cheaper than the item. It does not feel cheaper in the driveway.
Do not copy it if your market truly has no pulse on the nouns you can test. A mid-size metro carried local tools and furniture. A thin town might push you toward shipped electronics and clothing only, and the hourly rate will look different because every exit has a fee. That can still work. It will not look like these tables, and pretending it will is how you overpay for a local dresser nobody within twenty-five minutes actually wants. Run the ninety days. Let the ledger embarrass the fantasy early, while the fantasy is still cheap.
What to do with the number
$23,040 net, $51,430 sales, 665 hours, $34.65 an hour, $16,060 still in the account, $2,180 still on the shelf. Those are the figures. They describe a part-time reseller who got specific, logged the ugly months, and used a workspace so the specificity could survive a day job. They do not describe a guaranteed outcome, a median user, or a reason to buy inventory you cannot test. If you remember one scene, remember January’s pending DeWalt kit and December’s rate. The distance between them is a buy box, a radius, a comp, and a ledger. The distance is not a secret brand.
If you want the operational manuals behind the rows, they are already on this blog: source locally, research the sold, know the fee, flip the category you can actually handle, photograph and list like a person who wants to be paid, ship only what should be shipped, and track profit so a busy Sunday cannot impersonate a good business. Botifex is the place those manuals get executed when you are not free to watch eight marketplaces with your thumb. Start with the notecard. Let the software watch. Pull the trigger yourself.
FAQs
How much can you make reselling part-time in a year?
In this reconstructed 2026 case study, a part-time reseller working about 13 hours a week cleared $51,430 in sales and $23,040 in net profit over 665 hours, or $34.65 an hour after cost of goods, fees, shipping, supplies, and mileage. January paid about $10 an hour. The fourth quarter paid about $47 an hour. The figure is a composite model, not a promise and not an average user result.
Is this reselling case study a real person's results?
No. Alex is a composite operator. The books are a reconstructed year built so the monthly totals, quarterly totals, category mix, and cash bridge all reconcile. It reflects the pattern of a disciplined part-time reseller, not one customer's audited tax return.
What were the most profitable reselling categories in the case study?
Electronics contributed about $9,420 of net profit, tools about $5,280, clothing about $4,610, furniture about $2,140, and everything else about $1,590. Clothing had the most units and a much lower net per sale. Tools were often better on an hourly basis because local pickup avoided marketplace fees.
How many hours a week did the reseller work?
About 12 to 14 hours in a normal week: alert checks and a few messages on weeknights, one capped drive night, a Saturday morning for pickups, and a Sunday block for photos, shipping, and the ledger. The year totaled 665 hours. Weeks that hit 20 hours were followed by a lighter week on purpose.
What buy rules did the case study follow?
A recent sold comp, a fee-aware minimum net, a 25-minute radius unless expected net cleared $80, one new category at a time until twenty sales, and a listing within seven days. Lots that could not be itemized, untested batteries, locked devices, and furniture that did not fit in the vehicle were walk-aways.
Where did the items sell?
Tools and furniture sold mainly on Facebook Marketplace, Craigslist, and OfferUp for local pickup. Searchable electronics sold on eBay or Mercari after a short local window. Clothing used Poshmark when the speed justified the fee, and Mercari or eBay otherwise. Depop stayed experimental. A single Whatnot show did not fit the schedule.
How does Botifex fit into a reselling business like this?
As the workspace for the loop the case study actually ran: hunt profiles and alerts across eight marketplaces, Deal Score and eBay sold comps before the drive, Vision when a photo has no model name, inventory and profit tracking so a busy category cannot hide a weak hourly rate, and listing drafts with cross-posting so the same item is not retyped. It does not test a battery, authenticate a lens, or make the buy decision.
Can a beginner hit these numbers in 90 days?
No. The headline year is twelve months of a narrowing buy box. A realistic first 90 days is ten logged buys, one category, a ledger you trust, and an hourly rate you can compare to the next 90 days. Comparing week two to someone else's December is how people quit before the system exists.
What costs are included in the $23,040 net profit?
Cost of the goods that sold, marketplace fees, shipping labels, mailers and supplies, and logged mileage. Ending inventory of $2,180 at cost is not treated as profit or as a loss. Owner draws are a cash movement, not an expense. The monthly table and the cash bridge are designed to add back to the same equity figure.
What is the fastest way to copy the system without copying the risk?
Lock starting cash in a separate account, write a five-line buy box, run a few named hunt profiles instead of broad keywords, and log every buy the night it comes home. Do not add a second category, a storage unit, or a personal draw until the first category has real solds and the closet matches the ledger.
The reseller workspace — not just alerts
Start flipping free