The List PDX
Sign inSubmit Event

Changelog

A diary of how The List has grown

Batch 11 — first notes from the sandbox

You took the sandbox for a real spin — seventy-some events added by hand to learn the tool — and came back with the first of your impressions. We grabbed the three sharpest while you keep going.

The cover photo was the big one, and sneakier than it looked. Adding a picture while editing an event quietly failed — your camera-roll photos (the iPhone HEIC format) and the larger shots were being turned away at the door, so the image just "fell off" with nothing to say why. Now any photo from your camera roll is accepted, resized, and saved on the spot — whether you add it on the way in or while editing later. And on the event's page the photo is no longer jammed into a fixed widescreen box that lopped the top and bottom off a tall shot; it shows the whole picture now. (The photos are staying — they were worth getting right.)

The bulk-add tool finally matches the Submit form on Series dates. You noticed the public form had learned to take a pattern — "every other Sunday, June through September" — and spin out all the dates for you, while the back-office tool still made you type each one by hand. Bulk-add has the same little generator now: pick how often, which day, and the span, hit Generate, and every occurrence drops in.

And the Needs Board stopped letting you post into the void. You could push a posting to the board with the staff or resource toggle on but nothing actually chosen — "a little backwards," as you put it. Now the Post button waits until you have picked at least one real position or resource, with a gentle line telling you so.

These were just the first three off the top of your list — send the full sweep whenever it is ready. Thank you, Miriam, for actually living in the thing; that is where the truest notes come from.

The live site, caught up — and now watched

This one started with you, Miriam, doing exactly the right thing: going to the live site to check your Batch 10 notes against what was really there — and running straight into error screens when you clicked Admin and Dashboard.

Here is what was actually going on, because it matters for how you read your own notes: it was not you, and it was not the sandbox. The live site had quietly fallen behind the latest build — a couple of pages were asking for information the live version did not have yet, so instead of loading they threw that polite "something went wrong." Your sandbox testing had been the accurate picture the whole time. We brought the live site back into step, and those pages load again.

Rather than just patch it and move on, we did the bigger thing the moment deserved: there is now an automatic watch on both the live site and the sandbox. Every few minutes it logs in like a real person, opens the pages that matter — including the exact Admin and Dashboard screens that broke on you — and checks that the live site is healthy. If anything drifts, it emails us within minutes. The whole reason this one lingered is that nothing was watching; now something always is.

That second part was our call to make on your behalf — you asked for the bug fixed, and we went a step further and built the tripwire so the next one cannot hide. The quiet gap that let the live site drift out of step in the first place is closed too: the step that keeps it in sync used to fail without a sound, and now it fails loudly.

Thank you, Miriam — you found this by trusting what you saw on the screen over what the changelog claimed. That instinct is worth more than any monitor.

Batch 10 — the big sweep before the move

Miriam called this one the big kahuna: one long, careful walk through the whole platform before the migration, catching everything that was broken, backwards, or just quietly lying. It was the largest single list she has sent, and it is all cleared. This first note is for the things that were actually broken; a second one follows for the polish.

The one that stung most: you would apply to a gig from your Worker profile, and then — nothing. No record on your side, no status, no way to even tell it had gone through. It turned out to be a black hole at both ends. So now there is a My Applications page that shows every spot you have raised your hand for and where each one stands — Pending, Approved, or not this time — with the ability to withdraw one you have changed your mind about. And on the other side of that handshake, approving someone finally does something visible: one tap fills the spot with their name and tells them they are in. It had been secretly waiting for a second confirmation that the screen never asked for, so a single approve looked like it did nothing at all.

Two profiles under one account stopped stepping on each other, too. You applied to a bartending spot as your Worker, then made a Photography profile and tried to apply to that same event as a vendor — and got told you had already applied. But you had not; your other self had. Each profile now engages on its own, because one person really is several roles, and the platform should know that.

Publishing a collaboration got one front door instead of two. The dashboard already walked you through a proper preview — the real attendee card, the map, a clear "not yet live" banner — but the collaborations screen had its own thinner version where you could publish without ever seeing the assembled event. You asked us to route both through the same real preview, with the publish itself happening there, and that is exactly where it lives now: each partner reviews the true card and confirms from the same place, and it goes live once you both have.

The back office got the same scrutiny. Adding an event through admin could spit raw database gibberish onto the screen, or crash the page outright with a developer error that left you unable to tell whether anything had saved — both fixed, the first by catching the real cause (a stray event type the importer guessed wrong), the second by never letting a hiccup white-screen the page again. Admins can now edit any event after the fact instead of only approving or deleting it, see the full event — every date, the whole description, the image — before approving rather than a clipped summary, and reach bulk-add from the top of the page instead of scrolling to the basement for it.

And Series scheduling finally tells the truth. "Every other Sunday, June 7 through September 13" used to save exactly one of its eight nights. Now you describe the pattern the way you actually think about it — how often, which day, from when to when — and the form shows you the eight dates it is about to create before you commit, and keeps all of them.

The one call here that was ours: approving an applicant now confirms them on the spot, with no second sign-off from the other owner and no re-confirmation from the worker — we read your note as "the act of applying is the commitment," and built it that way. If that is one tap too few, say so and we will add the gate back.

Thank you, Miriam — this was a lot of looking, and the looking is the hard part. You did it; we just followed the list.

Batch 10 — the smaller cuts

The same long walk turned up a stack of smaller things — the kind you only notice by living in the thing. All cleared.

The dashboard greeted some people by the front of their email address — "Welcome gartilox23" — whenever an account had never been asked for a name. It reaches for a real name now: yours if we have it, otherwise the contact name on one of your profiles, and only the email handle as a true last resort. While we were there, the five profile forms stopped treating email, phone, and Instagram as interchangeable — email is required now and the other two are optional, because email is the one address that does not change when a handle gets filtered or a number gets a new phone.

A clutch of small frictions: the quantity box on a need pre-filled a "1" you could not replace, so "2 bartenders" became "12" — it selects on tap now, the way a number field should. Tapping a list card on the finder on your phone just highlighted it and stranded you; it takes you to the event now. Profiles all got real detail pages to land on, including event organizers, who never had one. A back arrow showed up across the inner screens, one that actually retraces your steps instead of dumping you home. The collaboration card got tightened up — same facts, far less scroll. The home page stopped promising "no account needed" for something that now needs one. And the prep-location question swapped its vague "Either" for "Both," with a notes line, since the real case is usually a kitchen in two places at once.

Anywhere you face Accept or Decline, you can now send a short message along with it — a quick reply when you say yes, a courtesy note when you say no — landing in the same thread you already use. Posters arrived, too: admins and hosts can upload a cover photo from their camera roll instead of pasting a link, on the submission form, the back-office entry, and the host's own edit screen — and if a host later claims an event we entered, their image simply takes over.

Two honest notes. The Needs Board button that re-lists a posting now reads "Post to Needs Board" everywhere — which means we walked back the "Repost" wording you picked from our three options last batch; standing next to a panel that said "Posted," "Repost" read as a contradiction, and you flagged it, so "Post" won. And on the routing fixes: organizers now have a profile to route to, but a couple of the spots you mentioned — a host name on an event card, and one collaboration invite that lands on the Needs Board — we could not pin down from here, and left you a note asking for the exact screen.

A few things we did not touch on purpose: the mobile once-over waits for the domain to move, since that is the moment it will actually matter, and the in-person walkthrough is yours to run, not ours. Thank you, Miriam, as always, for the orderly stack of "one more things" — there were a great many this time, and every one of them was real.

Batch 9 — two homes, not three

Miriam came back having named the thing exactly: there were three "home" screens where there should be two, and a little cluster of bugs that were really just symptoms of that sprawl. So this one was mostly about subtraction — collapsing the logged-in experience down to two clear places.

Account Home is now the umbrella, and its only job is awareness across everything you run. It finally wears the black-and-yellow look from the Choose Your Profile screen you liked: your profiles are cards you tap to step into, and adding a new one is the same tidy 2×2 grid — Venue, Concept, Worker, Resource — instead of the old dashed pills. The new piece is a single notifications feed that spans all your profiles at once, with each note tagged by which profile it belongs to, so tapping one drops you straight into that profile ready to act. Pause Account now sits right next to Delete, where it always should have.

Step into a profile and the Profile Dashboard is now the one place the work happens. A header tells you which profile you are acting as, with a way to switch or climb back up to Account Home, and the Marketplace tools — Browse Directory, Needs Board, Suggested Matches — are folded in as a section right there, instead of drifting off as a separate third screen the way they used to.

Collaborations stopped being one long undifferentiated list. The things that actually want you — new requests, live negotiations, ready-to-publish, still-staffing — sit up top as cards you can act on; the settled ones — published, completed, cancelled — tuck into a quiet reference list underneath. Attention first, archive second.

And the "Preview Event leads to a 404" you flagged turned out to be exactly the symptom you guessed it was: a collaboration’s event was being looked up as though only a Publisher could ever own one, so the page simply could not find it. Teaching it that a venue or concept owns its event too fixed the 404 — and the Edit screen sitting behind it.

Two calls were ours to make, since you were not in the room. Messages still come to you as one person rather than splitting per profile — making a conversation belong to your Concept versus your Worker is a deeper change to how threads are stored, so we have set it aside for its own pass rather than half-do it. And the pause/delete controls for a single profile now live inside that profile rather than on Account Home, which is where the new structure puts "manage just this one." If either sits wrong, say so and we will move it.

Thank you, Miriam — "two homes, not three" was the whole unlock, and it was yours.

Batch 9 — the smaller cuts

The same doc carried the usual stack of sharp little fixes. All cleared.

The Publish Preview used to show a single description box and call it a confirmation. Now it shows the whole assembled card — event name, date, place, entry type, who is collaborating — with a way to edit each, so confirming publish means confirming the event, not one lonely field. And the description you type there now actually lands on the published card; it had been quietly not saving, which was your second note, and you were right.

Resources on the Needs Board finally grew up to match staffing. Staffing had counts, credits, a mark-filled, and an apply-and-approve flow; resources were still dead chips you could only look at. Now you can ask for two of something and watch "1 of 2 filled," credit who is providing it — whether they applied through the board or you found them the old-fashioned way — and resource folks can raise their hand against a category right from the board, for you to approve or pass on. The template was staffing; resources just follow it now.

And cancellation finally follows through. Cancelling used to flip a banner and stop there — the event sat there still public with a working link, and the Needs Board kept cheerfully taking applicants for a night that was not happening. Now it cascades: the event comes down and shows a plain "this event has been cancelled" in its place, the board posting closes so no one new can apply, and the people already booked are told. One action, all the way down.

Thank you, Miriam, as ever, for the steady eye and the orderly stack of "one more things."

Batch 8 — one card, the whole night

Miriam came back with the structural note she had been circling for a while: once a venue and a concept shake hands, the rest of putting on the night was scattered across too many screens, and half of it did not visibly do anything. So we pulled it onto one card and made it move.

It starts back in the negotiation, where the two of you can now say not just which roles you need but how many — two bartenders, one prep cook — and the resources you flag there (florals, a photographer, sound) ride along instead of making you type them twice later.

Then, after both of you confirm, a single card carries the rest: the locked terms up top, a live Needs Board in the middle, and Publish at the bottom — in that order, because that is the order things actually happen. The Needs Board is the part that finally breathes. Each role shows its real count — "Bartender: 1 of 2" — with the names of who has it, and anyone still raising their hand sits right underneath, ready to approve or pass on. Approving someone used to be a shout into the void; now they slide into the role, the count ticks up, and they actually get told. And because this industry staffs through the grapevine as much as any board, you can mark a spot filled by someone you found the old-fashioned way, and put their name on it.

The biggest shift is about publishing. We used to make you finish staffing before the event could go public, which had it exactly backwards — going public is half of how you find the people you still need. So Publish is available the whole time now, sitting in parallel with an open board. If you publish with seats still empty, we ask once, plainly — and the wording of that gentle check is yours, lifted from your note: "Publish this event anyway? Your needs board posting will stay live." Your board stays live and keeps working, and the public page shows the finished face of the event — guests never see the staffing scramble behind it. The old "Mark Ready" button that tried to do all of this from the wrong place, tucked inside an applicant card, is gone.

Two calls here were ours to make on your behalf, since you were not in the room for them. Your note described the three stages but not which screen they should live on — so rather than send you hopping to a separate page, we put the whole thing on the collaboration card itself, where the deal already lives. And for the people you hire the old-fashioned way, off the board, we gave each position a quiet "mark filled" with a spot for their name, so the card can tell the truth about how a night really gets staffed. If either of those sits wrong, say the word and we will move it.

This was the meaty one, and it began — like all of them — as Miriam seeing the shape of the thing before the screens caught up. Thank you, Miriam, for the patience to draw it out.

Batch 8 — the smaller cuts

The same doc carried a handful of smaller fixes, the kind that only surface when you actually live in the thing. We cleared all of them.

The All Events list had a quiet bug Miriam caught by counting: events happening today were buried in the scroll behind ones months out. The list had simply forgotten to put itself in order. It reads soonest-first now, today at the top where it belongs — the calendar had been doing this all along, which is how she knew.

The Submit an Event form asked for Instagram, email, or phone — but it also promised "sign in later to manage your submission," and only email can actually open that door. So a host who left just a phone number was being made a promise we could not keep. Email is the one contact method now, and the promise holds.

Inside negotiations, a "Private Notes" box that never quite knew its job is gone — the per-section notes and the message thread already cover everything it tried to, and its fine print hinted that messages might be public when they never are. And the Needs Board buttons finally speak with one voice. You left us three names to choose from for the button that re-lists a posting — Update, Edit, or Repost — and we went with "Repost to Needs Board," since the action really does push it back out to the board. "Reopen" is gone (it made a posting sound like it had died and come back), and "Post to Needs Board" now reads the same everywhere it appears.

Last, a bit of parity: the recurring and series dates — a weekend run, "every Monday and Tuesday through July" — that already worked on the public form now work when the team adds an event from the back office too. Thank you, Miriam, as always, for the sharp eye and the steady stack of "one more things."

Batch 7 — making a deal

Miriam sent a doc that pointed at the part of The List that had stayed the most hand-wavy: the moment a venue and a concept actually agree to do something together. Until now, "negotiating terms" was a single freeform money box and a lot of good faith. She wanted it to feel like the conversation it really is.

So the negotiation step grew real sections. Date and time. Legal, split into licensing, permits, and insurance — with a checkbox for who is covering each. Equipment, food sourcing, and where the prep happens. The financial agreement, kept as plain words because that part resists tidy boxes. And a Needs section: do you need staff (which roles?) and do you need resources (photography, sound, florals, the rest)?

The quietly clever bit is that the form does not start blank. It reads both profiles and fills itself in. If the venue holds the liquor license and the concept does not, it checks the venue's box and moves on. If both carry insurance, it leaves the question open for the two of them to settle. And if neither side has, say, a sound tech, it drops that straight into the Needs list as a gap to fill. Every guess is editable — it is an assistant leaning over your shoulder, not a rule. To make any of that possible, profiles themselves learned to carry these details, so there was something real to reason about.

When both sides confirm, a genuine event card comes into being — holding all the agreed terms — but it goes precisely nowhere on its own. From there the choice is yours: publish it to the public finder, or post its staffing and resource needs to the board so workers and vendors can find the gig. The system never reaches over and does it for you. When you do post to the board, the staff roles and resource categories you already settled come pre-filled, so you are not typing the same thing twice.

This was the biggest single arc we have built from one of Miriam's docs — she flagged at the outset that the whole reconciliation idea is only as good as the profile forms underneath it, and she was right, so we built those first. Thank you, Miriam, for seeing the shape of the thing before it existed.

Batch 7 — the smaller cuts

Alongside the big negotiation work, the same doc carried a fistful of smaller notes — the kind that come from actually living inside the product. We worked through all of them.

Reaching out to a potential collaborator no longer asks you to invent a title for the conversation before you have even said hello; that field is gone. Messaging now stays open through the whole life of a collaboration instead of going quiet partway through — a deal that is winding down or wrapping up can still talk. The preview screen you see before publishing finally has an Edit button, so a typo spotted at the last second is a quick fix rather than a dead end.

"Residency" became "Series," and the choice between a one-night pop-up and a recurring series is clearer now — picking the shape sets the rhythm for you instead of making you answer the same question twice. Events that The List team adds from public posts wear a small, honest note inviting the real host to email and take the listing over. And reposting an event's needs to the board now asks which positions are still open, rather than assuming every seat came empty.

The last one was Miriam's "for later, lower priority" wish: events can carry a cover photo now. Upload it on the submit form, and it shows up on the event's own page — not crowding the map pins or the calendar, just there when someone comes to look closer.

Every one of these started as a line in her notes. Thank you, Miriam — the sharp eye and the steady stream of "here's one more thing" are exactly what keeps this honest.

In her own words

Before the site moves onto its real domain, Miriam sent a different kind of note — not bugs this time, but voice. The placeholder marketing copy we had written to fill the early pages could finally step aside for the thing she actually wanted to say.

On the home page, the neat four-box “value proposition” and its generic line are gone. In their place, three plain sentences in her words: people are doing cool things and we are missing it, others have big ideas but cannot make ends meet, and that is where The List comes in. Find, follow, attend — and if you want to build, find your collaborators. We are better together.

The About page gave up its careful scaffolding — the Story, the four little belief cards — for a love letter with teeth. Razor-thin margins and twelve-hour shifts, a milk crate and a cold staff meal eaten out by the trash cans, finding what you love and letting it kill you. It signs off the way the whole project means to live: “by industry, for industry.” The “What’s Coming” and “How It Works” sections went quiet on purpose, held back for launch.

This one is small in code and large in spirit — the platform finding its own register, gritty and warm and unmistakably hers. Thank you, Miriam, for trusting it with your own voice.

Batch 6 — the account grows a backbone

Miriam sent a doc that opened with structure, not bugs — the difference between an account (the umbrella that is just you) and a profile (a role you put on). Half the little glitches underneath turned out to be that one idea not yet drawn clearly. She saw it before the symptoms made sense, which is becoming a pattern.

So we drew it. Signing in lands you on your own Account Home now, with your marketplace profiles laid out as doors you choose to walk through — not dropped at random into one of them. Pause and delete grew up too: you can pause or delete a single profile without touching the others, or step the whole account back, each behind a clear "are you sure." Workers finally got a pause of their own — they were the one role that had been left out.

On the back-of-house side, we taught the admin tools to mind their own business. The bulk-add makes events only now (members sign themselves up), and the approval queue holds events and nothing else — venues, concepts, and the rest go live on their own, because curating people one at a time was never the plan. A crossed wire that had private collaborations surfacing in the admin queue is untangled.

The fun one: events that refuse to fit on a single day. A weekend residency, a week-long pop-up, "every Monday and Tuesday through July." The List can hold all three shapes now. The real dates are computed and exact — that is what the map and calendar trust — and a friendly sentence rides alongside ("Mondays & Tuesdays through July"), with the next actual date always shown next to it so the words never have to be taken on faith. We sketched that split together over a cup of coffee’s worth of back-and-forth; it is the kind of small decision that keeps a feature honest.

And the map remembers its lesson from last time — a stray, non-standard date can no longer quietly knock an event off it.

Every piece of this began as a note from Miriam. Thank you, again, for the clarity and for the nerve to keep building the thing.

Bug Batch 5 — the finder grows up

Miriam sent over a doc with the kind of notes that make this easy: clear, specific, and never bossy about it. We worked through all of it.

The events finder flows the right way now — from today forward, closest dates first. No more scrolling past last spring to find next week. "Featured" means what is actually happening this week, cycling in and out on its own. Each card wears its entry type like a little badge: Ticketed, RSVP Only, or Walk-In, with a filter to match.

There was a proper detective story in here. Miriam noticed that some admin-entered events showed up in the list but quietly vanished from the map and the calendar. The culprit turned out to be a single hopeful run-on date — "05/29/26 5/30/26 5/31/26 every Friday thru Sunday" — which the map read as ancient history and the calendar could not place at all. We taught the app to read dates more forgivingly and to refuse the truly unparseable ones before they cause trouble. The Katsu Sando pop-up is back on the map where it belongs.

Resource profiles can finally say they do both a product and a service, because plenty of them do. And the admin event form stopped asking for ZIP and neighborhood twice — it figures those out from the address now.

Thank you, Miriam. The sharp eyes and the patience are the whole reason this keeps getting better.

Saved, and findable

Miriam went looking for the events she had bookmarked and could not find the door. She had to wander through the Submit Event form to get there, which is nobody's idea of a good time.

So saving has a front door now: a "Saved" link right in the top nav the moment you sign in, leading straight to your account home with your upcoming saves, your past ones, and the people you follow.

Small fix, but it came from her actually using the thing — which is the best kind of bug report.

A quiet sweep behind the scenes

Some test data had wandered onto the public map — events with names like "[E2E] Confirm terms" that only ever belonged in our sandbox. Not harmful, just untidy, like finding rehearsal notes taped to opening-night seats.

We taught the public pages and the admin panels to ignore anything that looks like test scaffolding, and tidied up the stray rows. The map shows real Portland again.

The public side wakes up

For a while The List had two personalities: a lively marketplace for the industry, and a public side that was really just a flyer board. Miriam felt that asymmetry before any of us could name it, and she was right.

Now anyone can have an account. Save an event you want to remember. Follow a chef, a venue, a pop-up whose work you love. Your account is yours first; the marketplace is something you add to it when you are ready, not a gate you have to pass through.

We rebuilt the front door to match. One neutral sign-in for everyone — no passwords to forget, just a one-time link in your inbox. The old "Industry Portal" framing stepped aside so the platform could feel like it is for people first, professionals included.

Miriam had sketched a more elaborate version of all this, with separate doors and a "Patron" label. We talked it through and landed somewhere simpler together. That conversation — her openness to "let me sit with it," then "yes, that makes sense" — is what good collaboration actually feels like.

How it started

Long before any of this had a login screen, The List PDX was an idea Miriam had been carrying for about a year and a half — a real hub for Portland’s food and drink world, with the irreverence and punk-rock heart of the scene it’s for. She had built a rough version in Webflow, and one December night she shared it with the simplest possible note: here’s the vision, it’s still rough.

The reply was just as simple — send over the cool stuff and let’s see what we can cook up. A weekend of tinkering later there was a clickable prototype. Her verdict: "borderline concerning if it wasn’t so cool."

In January the real spark hit. Handed the keys to Claude, Miriam watched a working, intuitive form come together in a few minutes — after, in her words, a year and a half "in the oven" doing it the hard way. Mind blown, she said. And then she did the thing that makes all the difference: she did not just hand off her notes, she rolled up her sleeves and learned to build. GitHub, issues, pull requests, deploys — the whole unfamiliar toolbox. There were the inevitable "I think I may have fucked up" moments (she hadn’t — that one was a permissions slip on our end), and she kept going anyway.

By February she was, in her words, "poppin off" — forms live, real data coming in, a way forward she could see for herself. The design arrived in careful drops: the homepage, the user flows, then the marketplace — venues, concepts, and, once she realized the model needed it, a fourth door for the workers who actually make these nights happen.

Spring was the long, patient work of turning a vision into something real: pre-launch punch lists, bug batches, a fifth profile for the people who publish events, and finally waking up the public side so anyone — not just the industry — could find what’s happening and hold onto it.

None of it would exist without Miriam’s eye, her stubbornness in the very best sense, and her generosity — right down to the thank-you wine her "wino peanut gallery" helped pick out. This whole thing is hers. We just get the joy of helping build it.