PetClub Join the waitlist

Dog & cat · opening in Bengaluru

We read the label so you don't have to.

Six things we refuse to sell, published before we sell you anything. Here is one we turned down.

Drag to part the coat

Ingredients panel · adult dry dog food

One standard. Two answers. Both on the table.

Two adult dry foods offered to us the same week — same price bracket, chicken on the front of both bags. Same six tests, both results published.

Open any test to see both answers at once

Then we do the part nobody enjoys

Working out how much your dog should actually eat, and remembering when the tick treatment is due.

84 g a day, not "1–2 cups"

Tell us the weight and we work the portion out for that food, and show the arithmetic. A 12 kg bag then has a date on it, not a guess.

The reminder you keep missing

Vaccination, deworming and tick cycles, timed from what you last recorded. Not a newsletter — a date for your animal.

Allergies that follow you

Record chicken once and every chicken product in the shop carries a warning. You decide anyway — we just stop you finding out at home.

The standard · version 0.1 · draft

What we won't sell

Six things we exclude from every food, treat and supplement we stock. Named, with the reason, so you can hold us to it.

This is a draft. The exclusions below are illustrative and are not yet signed by a veterinarian or reviewed by a lawyer. Both are required before this page goes live — publishing an unsigned standard would undermine the one thing the brand is built on.

01 Unnamed meat and rendered by-products+

"Meat meal", "animal fat", "poultry by-product" — ingredients that do not name the animal they came from.

Why: an unnamed protein source cannot be traced, cannot be checked against an allergy, and cannot be compared batch to batch. If a maker will not say which animal it is, we cannot tell you either.

02 Artificial colours+

Added dyes of any kind, including those used only to make kibble look like meat or vegetables.

Why: colour in pet food exists for the person buying it, not the animal eating it. An ingredient with no benefit has no argument for being there.

03 BHA, BHT and ethoxyquin+

Synthetic antioxidant preservatives. We stock products preserved with tocopherols (vitamin E) or rosemary extract instead.

Why: naturally preserved food has a shorter shelf life, which is a cost the maker carries rather than the animal. We would rather buy more often.

04 Added sugars and sweeteners+

Sucrose, corn syrup, molasses and artificial sweeteners added for palatability.

Why: sweeteners make food more appealing without making it better. They are a way of solving a formulation problem at the animal's expense.

05 Filler-led formulations+

Products where cheap bulk carbohydrate leads the ingredient list ahead of a named protein.

Why: the first ingredients are most of the food. A named meat should lead a carnivore's diet — this is about proportion, not about grain being inherently bad.

06 Undeclared or vague allergens+

"Natural flavour", "vegetable protein extract" and similar terms that conceal what is actually in the product.

Why: a pet parent managing an allergy needs a complete list. A vague term makes that impossible, and the animal pays for the ambiguity.

Awaiting signature This standard will carry the name, qualification and registration number of the veterinarian who signed it, and the date. Until it does, treat it as a working draft.

The shelf

Everything that passed

The whole list, live. Every item here cleared the standard — the ones that didn’t are not on this page, and never were.

Show

You cannot buy here, on purpose. This page is the shelf and the reasoning; the basket lives in the app. Splitting them keeps this site a place to decide rather than a place to be sold to.

Guides · free, no account

How to read a label

Everything we've worked out, written down. Start with the one every pet parent in India gets wrong.

Start here · 6 min

What "meat meal" actually means

It is the single most common vague term on an Indian pet food label, it is legal, and it tells you almost nothing. Here is how to read past it in about a minute per bag — and why "chicken meal" and "meat meal" are not the same claim at all.

See why we exclude it
Show

Why we started

Marshall and Toffee

Marshall came first and never left — the soul dog, the one you get once. Toffee we rescued. Two double coats in an Indian summer, and the reason we started reading labels in the first place.

Marshall, a long-coat German Shepherd, at the table with a birthday cake

Marshall

Here from the first day, and the reason for all of it

He was never a decision. He arrived, and the house rearranged itself around him, and nine years later it still has not rearranged back.

People say soul dog and it sounds like something off a card. It is not. It means one animal teaches you what paying attention looks like, and you spend the rest of your life owing that to every animal after.

What he needs

A long coat built for a German winter, living through a Bengaluru April. Brushed out daily from February, kept out of the afternoon, and fed for joints that carry a lot of dog. Most of what we know about coats, we learned on him.

Toffee, a Siberian Husky with pale blue eyes, sitting in the sun

Toffee

She needed somewhere to go, and this was it

A husky in south India is somebody’s idea that stopped being fun. By the time she reached us she had already been handed on more than once.

She took a while to believe the food would keep arriving. That is the part nobody photographs — the weeks of a dog checking, every single day, whether this one holds.

What she needs

Shade, water she will actually drink, and a coat nobody is ever allowed to shave. Meals at the same hour, because predictability did more for her than any supplement we tried.

Two heavy double-coated dogs in a hot country means we spend a lot of the year thinking about coats, diet and what actually goes into a bag of food. That is not a marketing premise. It is why the company exists.

They appear here as themselves — named, with their own story. They are not the logo and they never will be.

These are drawn, not photographed. Each dog is rendered from their own markings — Marshall's black mask and tan cheeks, Toffee's dark cap and blaze — so the page works before a photo shoot exists.

Real photographs beat them instantly, and are one command away. Save the originals as brand/photos/marshall.jpg and brand/photos/toffee.jpg, run python3 tools/embed_photos.py, and republish. The photos are downscaled and embedded as data URIs, because a published artifact cannot load an image from anywhere else. The drawn portraits stay as the fallback.

Waitlist

Be there when we open

Bengaluru first, with pan-India shipping. The waitlist gets the guides now and the shop first.

So we can tell you honestly whether we deliver to you yet.

One email a week at most. We don't sell or share your details, and we don't need a phone number.

This is a design prototype. The form is not connected to anything — nothing is sent, stored, or transmitted. The real version captures email, city, pet, source attribution and explicit consent, per FR‑M10 and FR‑M11.

For the team

Why the site is shaped this way

Structure, and what the fur-heavy treatment costs. Reachable from the footer, deliberately outside the customer-facing navigation.

What changed, and why

The first version opened with three abstract claims and a three-column proof strip. Both were assertions: "we publish what we exclude" is the brand telling you it is trustworthy. They have been replaced by a label reader — a real ingredients panel with the failures marked and the reason attached. Same argument, shown instead of stated, and it doubles as the clearest possible preview of the product.

Four destinations, no sub-levels

Home, The Standard, Guides, Our Dogs — plus a persistent Join action styled as a button rather than a nav item, because it is a task and not a place. No second level, no dropdowns, no breadcrumbs; a site this size does not earn one.

The Standard is second, where About would normally sit

Nav order encodes priority and the standard is the entire proposition.

One primary action per view; no dead ends

Every view ends with exactly one call to action — always the waitlist. Secondary links are outlined rather than filled so the two never compete. Two equal buttons is the most common way a page converts nothing.

Progressive disclosure

The label reader shows six flags but only one reason at a time. The standard shows six named exclusions with the reasoning folded away. Full transparency presented all at once is less readable, and unreadable transparency persuades nobody.

The pet component

Each dog is drawn from their own coat colours and markings — mask, saddle, eye colour — rather than being random fur. It exists so the page works before photography does, and so the same component can render a customer's pet from the coat field FR‑R11 adds. It is a placeholder for real photographs, not a substitute for them.

The hero gesture

Two earlier attempts failed the same way. Both leaned on a solid base wash to fake density — and a fill is a background image. No quantity of strokes drawn on top of one will read as fur, because the eye sees the flat block first.

There is no fill now. Density comes from the only place it can: hundreds of thousands of individual overlapping strands, up to 420,000 depending on the size of your window. That is far too many to redraw sixty times a second, so the field is rendered once — progressively, over several frames, which is why the coat visibly thickens as the page settles — and then warped. The coat is blitted as a grid of tiles, each pushed by a spring displacement field.

So dragging moves every strand rather than a sparse top layer, and the gaps that open expose the pale undercoat beneath. That is what parting real fur looks like, and it is the brand thesis performed rather than described: the layer you only see when you part the fur.

The coat waves. A baked image cannot, so one strand in five is left out of the bake and redrawn every frame — a slow travelling wave, plus whatever your hand is doing. Roots stay pinned; only tips move, which is the one property that separates hair from cloth.

Under prefers-reduced-motion the field builds in one pass, the wave is switched off, and nothing animates or responds.

This breaks R2, deliberately

The brand system says motion is a response and FR‑R6 forbids ambient animation outright. A continuously waving coat is exactly that, and it is here because the reference for this hero was a stock clip of real fur moving in slow motion.

It is defensible in one place only — this hero, above the fold, where the job is to establish what the brand is made of. It is not defensible on a product page, in the app, or behind the standard. If it stays, R2 needs an explicit carve-out naming the hero, rather than being quietly ignored.

On the reference footage

The clip is licensed Shutterstock footage, and the downloaded file is the watermarked preview. None of it is embedded here and none of it should be: the fur on this page is generated, so it is ours, it is about 40 KB of code rather than megabytes of video, it recolours with the palette, and it responds to the cursor — which footage cannot.

If the real clip is wanted, it has to be licensed first. Same call we made on the tick illustration.

The fur-heavy treatment — and what it costs

This variant deliberately exceeds the dosage ceilings in §07 of the brand document, and by a lot. Grain runs at 13% in light and 20% in dark against a documented ceiling of 5% — roughly three to four times — plus a full-bleed live coat, shed bands between sections, and coat-filled card headers.

The texture is also drawn differently. Earlier passes grew long strands up from the bottom edge, which reads as a crop field rather than a coat. Fur is short, dense, overlapping, and lies along a direction that drifts across the surface, so strokes are now scattered across the whole area and angled by a smooth flow field over a base wash.

Two consequences worth being explicit about:

  • The document and the site now disagree. If this treatment is kept, the dosage table has to be updated to match — a design system nobody follows is worse than no design system, because it makes every later argument unenforceable.
  • The Standard stays at zero texture regardless. That rule did not bend: it is a credibility surface, and it is the one page here doing the persuading.

To revert: git revert the commit, or set --grain-op back to .05 and drop the .coat-hero and .band blocks.

Honest limitations

  • Hash-routed prototype. The real site must be server-rendered and indexable (FR‑M14) — content discovery is the whole acquisition mechanism.
  • The waitlist form is inert.
  • The standard's exclusions are illustrative and unsigned.
  • The label panels are realistic but invented; use real products only after legal review, and never name a competitor as rejected.