Skip to content
MROOT

DEMONSTRATION / A SINGLE-USER WORKFLOW

Lead
Tracker.

The next action,
without the noise.

A Today queue and eight-stage outreach pipeline, with local storage and an optional Sheets connection.

THE PIPELINE / SOURCE STAGES
01New
03Followed up
06Quoted
07Won
THE QUESTION THAT MATTERSWho needs
attention today?
THE NEXT-ACTION QUEUE
Illustrated workflow cards. Not a real sales pipeline, client data or product screenshot.
Fictional demo~3 min read
My contribution
Design, development
& deployment
Context
Independent tool demo
Fictional seed data
Built with
React · TypeScript · Tailwind
Optional Google Apps Script

01 / THE BUILDStart with the next conversation

A list of leads is easy to collect. Deciding who needs attention today is the more useful part.

Lead Tracker is an outreach-tool demonstration built around that question. Its Today queue surfaces next actions, while an eight-stage pipeline shows where each conversation stands. Lead details hold notes, scores and follow-up dates.

The published demo starts with 25 fictional leads, so it can be explored without entering real customer information. The interactive explanation below uses three separate fictional examples. It is not a capture of a real sales pipeline.

02 / THE BUILDA queue for today, a board for the bigger picture

The queue and the pipeline answer different questions. The queue focuses on what is due. The board keeps the broader set of conversations visible, from New through to Won or Lost.

Try selecting an example lead and changing its stage. Moving a due example to a terminal stage removes it from this illustration's Today queue; it remains visible in the full pipeline. The rule here is a small teaching example, not a reproduction of every filter in the original tool.

THE NEXT ACTION

Today is a smaller list.

Select a fictional lead, then change its stage. The full pipeline keeps the broader context.

EXAMPLE DAY / 17 JUL 20268 SOURCE STAGES · 3 FICTIONAL RECORDS
  1. New1
  2. Contacted0
  3. Followed up1
  4. Replied0
  5. Call booked0
  6. Quoted1
  7. Won0
  8. Lost0

Today's next actions

2 due
SELECTED EXAMPLE

Juniper Studio

Send the initial introduction.

Changes stay in memory. No lead is saved or contacted.

Read the explanation without interacting

The source has eight stages: New, Contacted, Followed up, Replied, Call booked, Quoted, Won and Lost. In this teaching example, Today contains unfinished records whose next-action date is on or before the fixed example day. The full pipeline includes future and finished records. Changing a stage never contacts a person.

Three invented records illustrate the workflow. The original demo describes 25 seed leads. This queue rule and in-memory UI are not a capture or a complete reproduction of that app.

The original eight stage names are preserved. A stage describes the record; it does not prove that a call took place or that an email was sent. No contact action runs from this page.

03 / THE BUILDLocal first, with an optional way out

The application account describes localStorage as the primary store. Demo data and real data use separate keys, keeping the seeded examples apart from the working collection.

An optional Google Apps Script connection sends the lead collection to a Google Sheet. The user installs the provided script, deploys it, and configures the endpoint in the application. That adds a remote dependency; it is not part of the default browser-only experience.

The companion article follows the outbound saveAll request and the exact acknowledgement it expects. The existence of that request does not establish two-way synchronization or multi-user conflict handling.

04 / THE BUILDMy contribution

I designed and developed the interface and deployed the demonstration. The main design choice was to put the next action beside the broader pipeline, rather than present every record as an equally urgent item.

The small stack fits the documented single-user scope. React and TypeScript handle the interface, Tailwind CSS the presentation, and Google Apps Script provides the optional Sheets connection. A team-wide CRM with shared permissions would be a different brief.

05 / THE BUILDWhat remains to improve

The original write-up identifies three follow-ups. saveAll sends the full collection instead of a change set. A JSON export/import path would provide another way to move the data. And the main application component needs to be split into smaller board and queue components.

Those are unfinished items, not capabilities being claimed here. The working principle is modest: make the next action easy to find, keep the storage model understandable, and be explicit about what the optional sync adds.

Source, dates, and what this page verifies

This page describes the supplied project account and related full article. Original publication dates remain attached to the source version. No production repository, message provider, Google Sheet, user account or game service was accessed.

The diagrams are newly implemented teaching examples, not screenshots or re-creations of complete application logic. They use fictional data and memory-only state; the CraftNet fragment carries bounded numeric example settings only. Original code excerpts are preserved and are not executed as production code here.

Technical clarifications and source corrections are identified in the article and in docs/batch-3/SOURCE-REVIEW.md. They do not constitute a new application security, performance or deployment audit.

Ready to build?

Something here sparks an idea?

Start with your goal. We can work out the right shape together.

Quote before you commit · Reply within 1 business day · You own the finished custom code and content after final payment

Start a project