Hacker News new | past | comments | ask | show | jobs | submit login
Launch HN: Papercups (YC S20) – Open-Core Intercom Alternative
285 points by cheeseblubber on Aug 12, 2020 | hide | past | favorite | 85 comments
Hi HN!

Kam and Alex here. We’re founders of Papercups (https://papercups.io), a live customer chat app written in Elixir. We offer an open-core self-hosted alternative to Intercom for companies that are security and privacy conscientious.

Alex and I met in SF around 6 years ago, and have been hacking on small projects together for the past couple years. Before covid, we would spend many Sunday afternoons in coffee shops building prototypes of whatever our latest and greatest idea was… most of these fizzled out after a few weeks or so

For 2020, we wanted to take the idea of “building something people want” a bit more seriously. We started off trying to build SaaS tools for ocean freight logistics companies. That failed, but we learned a ton in the process.

After our experience in freight we wanted to work on tools that are a little closer to home and tried a completely new idea: a web app that makes it super easy to manage and deploy simple cron jobs and other recurring/scheduled tasks.

One thing we learned from the feedback on this product was how difficult it can be to set up and schedule email campaigns. This definitely resonated with us since we've both had this pain professionally. While working at Stripe, one particularly painful project Alex worked on was setting up email campaigns to notify their customers of new regulations. I had a similar experience at Pivotal where I worked on a project to email users about security updates.

So we started tackling this particular pain point: setting up and managing email campaigns. A few companies already do this pretty well. Intercom is one, but it can be prohibitively expensive. And for companies that have concerns about sending their customer data to 3rd party services, these products aren’t an option.

At this point we figured, why not be more ambitious? Instead of just building an email campaign tool, let’s build an open core alternative to Intercom!

So here we are. We’re starting off with chat but we plan on expanding into email campaigns and push notifications. We chose chat to start off with because we wanted something that we could use immediately. For a lot of our previous projects, we had set up chat on our sites to engage with customers.

We’ve launched this repo under MIT license so any developer can use the tool. The goal is to not charge individual developers. Features like chat, canned responses, private notes, and auto assignments will stay free and open source. Right now we plan on making money by providing things like a hosted version and support contracts. We eventually plan on making a licensed version where we charge for features that large companies care about like Active Directory support, Okta integration, and compliance exports.

Finally we decided to build Papercups on top of Elixir/Phoenix because it seemed like the best tool for a job that requires a lot of “realtime” functionality and first class support for websockets/channels. It’s been great so far! The frontend uses React/TypeScript. We may explore using LiveView in the future, but we wanted to start off with a frontend stack that we were familiar with.

You can check out our repo at https://github.com/papercups-io/papercups we have a ton of features in mind would love your feedback and any feature requests!

P.S. This is our first time working in Elixir so would love any feedback there too!

This looks great! Can't wait to try it out.

Question for you. The other day there was an article here on HN where someone got rid of their chat bubble in exchange for a Chat/Help link in their top nav. [0]

This gave them a 62% increase in chat engagements.

Curious if you have any thoughts on this, since you're deeply in the space.

[0] https://news.ycombinator.com/item?id=24059438

I think Intercom and their relentlessly amazing Content Marketing is responsible for the whole "live chat" nonsense. Imagine I walk into a store just to browse. Do I want someone interrupting me and asking me if they can help me with something? Not really -- good retail employees do this only when a customer actively looks like they could use help. Do I want a humanoid robot asking me if I need help, then when I ask for help, saying "sorry I'm just a robot and don't know anything, please come back tomorrow and an employee will help you?" Hell fucking no. Do I want an employee waiting out of the way to help me, who will come to me as soon as I say "excuse me" and answer all the questions that I have? Of course I do.

We definitely want to make our chat widget as unobtrusive and customizable as possible, so that our users can choose exactly where it shows up... I can sympathize with how annoying it is when these chat bubbles get "aggressive" e.g. by automatically opening and then sending me a bunch of messages from a bot.

I really like the idea of just adding a nav item/link that goes to a page dedicated to messaging. Perhaps at some point we'll create a hosted page that does exactly that (e.g. maybe a custom "contact" or "FAQ" page where customers can ask questions, etc)

In the meantime, our users should technically be able to set up a dedicated page for this, and just embed our chat widget on that specific page :) but we are going to keep thinking about how we can improve the UX for this kinda thing!

As someone who detests these chats opening up, you may want to consider preventing any embedded chats from opening on the landing page; require a minimum number of page visits on the site and/or clicks and/or time spent per page. The fastest way to get me off a website is to pop up a chat box, and I have the domains for most of those services in my hosts file. If you can enforce good standards on the use of your chat function, it'll make us cranky people like me happier.

The chat box should not be allowed to pop up anywhere in the page on its own--without user interaction with the chat itself, it should be limited to the borders of the window; without a certain amount of interaction with the page/site, it should be entirely invisible, whether it blends into the menus or stays off-screen.

If your widget is front and center on a user-hostile website, then they get linked together in my mind, even if it's just an embedded service.

Why not just a slight adjustment to what you already have? Make the chat dialog openable via JS API, and then any button or “nav link” can be made to open the dialog.

A better test would've been to have "Live Chat & Support" on the bottom right

Yeah definitely! Depending on how the site uses the chat bubble it can be annoying to the user if it blocks the site or randomly pops up. I think the author did a good job of getting a good number of samples and write up.

One thing that makes this a bit harder to compare is that the chat widget is at the bottom of the page where as the Live Chat & Support link was up top right. Which catches the user's eye much more so might not make this as an accurate of an A/B test as it could have been

If you look at the test in depth, the change and sample size is just terrible for getting any kind of real data.

Go hang out in the SaaS Growth Hacks group on Facebook and let people know you have a free / open source Intercom alternative. Every week people in that group are asking for cheaper alternatives, and usually they just care about the live chat portion of the product.

I feel like one of the biggest pain points of Intercom is their pricing, and you should ride that wave as much as possible (in addition to "companies that are security and privacy conscientious").

We'll definitely check it out! And yeah, one of the top complaints we heard from people when doing user research was how expensive Intercom is, so definitely going to try to ride that wave as much as possible like you said :P

Ya, intercom is untenable for most anyone with a freemium model.

I haven't checked out expo yet. We have a react component that you can install https://github.com/papercups-io/chat-widget or https://www.npmjs.com/package/@papercups-io/chat-widget Will have to do some testing to make sure it works.

+1 not having a pure JS Expo SDK is a huge blind spot for Intercom if you look at all the people over the years who have been asking for it - maybe this project can take advantage of that

We'd love to get this working as soon as we can!

Do you personally have a use case for this? I'd love to learn more if you want to email me at alex (at) papercups.io

We would have to make some slight tweaks to get our chat component working in React Native, but we definitely want to support it!

I'd love to learn more about your (or anybody else's) use case if you want to email me at alex (at) papercups.io

Yep, no react native support is maddening to me with intercom. A dealbreaker.

Intercom employee here. Do you mean embedding the Messenger in a React Native app?

I'll pass this convo along to the Messenger team. It sounds like a worthwhile thing to look into since RN is becoming so popular.

Thanks for chiming in and passing our feedback along--much appreciated.

In addition Messenger I'd also add Mobile Carousels. A pure JS Expo SDK is needed to support these. I think you'd be surprised how many apps are mobile only these days and would love to use Intercom, but are turning to other options like this instead.

Great, thanks for listening!

I spent a week coding my own implementation via your API. It seems like a react-native dropin would be very popular.

Feel free to reach out if you'd like to talk more about it.

If RN support is something you're actively looking for, I'd love to learn more about your use case if you want to email me at alex (at) papercups.io :)

This is a brilliant product and something that needs to be built.

Gitlab for Intercom.

One feedback though - the whole value here is the product. I would suggest not building your transport at this point and making Pusher/Pubnub/Firebase/Ably pluggable as transport.

99% of your tickets will be "my message wasn't delivered" otherwise and it will take you years to perfect this ...which is something that has been reasonably solved at very cheap cost.

Great feedback, we're definitely planning on taking that advice :)

https://supabase.io/ is a YC backed open source realtime db. You may find it relavent for the transport layer

Congratulations on the launch :)

We're big fans of supabase :D

On the pluggability topic, please also make it pluggable with chatbots like Dialogflow (just like Kommunicate does it)

Massive value add.

You can generate a lot of dealflow from upwork and Fiverr.

+1 on this, subpar transport would be a dealbreaker and this is a solved problem.

We use intercom where I work, it's so expensive and tries to do a bunch of different things but is mediocre at most of them. Congrats and excited to see more.

This looks great and an open source option in this field is needed.

From demos and docs, I'm only seeing the chat. Does papercups also have some sort of customer database that is filterable and segmentable?

Because to me, that is more about what intercom is about.

ChatWoot is another open source alternative, unless I am fundamentally misunderstanding what Intercom is.

Intercom also does a lot of things on top of chat like email campaigns, FAQs ("articles"), chat bots, and is somewhat evolving into a bit of a CRM.

Chatwoot focuses on chat as far as I can tell (and so do we at the moment!), so it is certainly another viable alternative if that's what you need :)

Thanks! We don't have it right now but the customer database is something we wanna work on very soon. There are still a bunch of features we wanna work on for chat and we're trying to work out the balance between making the chat great and working on other features like email messaging and better customer database

Congrats on launch and thanks for the story.

It seems like there is convergence between instrumentation (analytics events) and messaging.

Do you think this is the case? If so, do you plan to tackle this as well? If not, how would this slot in alongside Mixpanel or Amplitude?

Yes we see that trend as well. For messaging existing customer its super nice to have messaging and analytics in one place. One common example is you wanna send deals or coupons for people that meet some threshold.

Some analytic features we have on the near term roadmap are features like log rocket where you can get better insight on what the user is doing at the moment. The vision is definitely to become a centralized location for messaging and marketing data. We're still trying to figure out the balance and how much we wanna focus on analytics.

If you were to offer an adjacent product that did event logging and integrated with your messaging product it would be interesting to me.

I’ve tried using amplitude and building my own messaging and it is too much work.

Right now I use mixpanel and am prepared to pay for the product mix.

If you do this, and they are separate instances, I would want to see it have a simple docker container-based Setup. For example, configure this app with just some env variables and use our images.

I’d also recommend you focus on django at first and make setup on that framework easy and well documented.

Good luck!

Have you looked at PostHog? https://github.com/posthog/posthog

Seems very similar to what you're describing :)

Thanks for the link. Coincidentally a feature request to mash posthog with messaging went into an issue 10 hours ago!


First off, very cool tool. README looks nice, demo looks nice, website looks nice, code quality looks nice, and in general the whole "product" aspect of it looks very good.

My main concern is that your competitive advantage seems to be that you are a free /open core chat tool, but this advantage also attracts many bad customers. They'll want a chat tool that features-wise rivals a competing (paying) platform, but also with the added twist that, by being somewhat open-source, they'll also want support for their weird edge case setup that you didn't consider ("Why won't this work on a Raspberry PI?", "Can I use this on my company's intranet?", "Do you work on Windows 3.1?", etc etc).

You'll add in more features and support for these things, only to find the rabbit hole going deeper and deeper -- and identifying the customers that are actually willing to pay becomes harder and harder as you have to filter out a lot of the low-quality requests.

To help with filtering, you can push people to the hosted version where they have to pay, but now you've lost the competitive advantage -- and have to compete with the many other chat tools in the space.

I think there's still a lot of room here, in the same way that Gitlab carved out a huge niche from Github, but those would be my main concerns.

Not that you're necessarily wrong, but you can 'fire' those 'customers' too.

The answer is not to not release as open-source.

I find it a tad hypocritical that 99% of people who post on HN consume tons and tons of open-source every day and yes, they also want the edge cases to work and yet, not only are they not actively participating to make the body of free (as in freedom) software larger, they're actively discouraging people from contributing.

From my perspective, it seems to have been a great choice to go open as far as increasing adoption/buy in for GitLab, why not this?

> Not that you're necessarily wrong, but you can 'fire' those 'customers' too.

For sure -- and you should! But in my mind, the goals of FOSS can differ wildly from a company wanting to release a great open source product, but also turn some of those users into paying customers. If your goal is simply the betterment of free software for developers, you take any and all contributions, as long as the code is of good quality and solves someones needs. If your goal is to figure out what features are needed by people who might be willing to pay if they were solved, you then have to figure out a way to filter the contributions and what you're willing to contribute back. It's just a trade off.

> I find it a tad hypocritical that 99% of people who post on HN consume tons and tons of open-source every day and yes, they also want the edge cases to work and yet, not only are they not actively participating to make the body of free (as in freedom) software larger, they're actively discouraging people from contributing.

Working in open source is tough -- it's many times a thankless job. I was one of the team members of Kandan (https://github.com/kandanapp/kandan), which was a Slack clone with ~2.5k stars, and as much as we helped people, sometimes it also felt like it never was enough.

One of the few helpful things that came from being true FOSS was that most people had an understanding that we did this as volunteer work, so they weren't upset when features or changes took long, or weren't merged into the app. But if the goal is to eventually move customers into other products, or onto a premium tier, it becomes a different game with different rules.

It's so weird to see proprietary vs. free software concern trolling on Hacker News, yet here we are.

It's 2020, I think people understand how to build a business model around FOSS these days.

This is great feedback, and definitely something we'll need to think about. I had a similar issue at a previous startup I worked at, where we were basically building SaaS tools for logistics departments at commodity trading companies, and everyone had different edge cases/integrations they wanted from us. It's definitely a rabbit hole I want to avoid...

You mentioned Gitlab, and we're trying to figure out how we can borrow from the playbooks of companies like them (e.g. Mattermost, PostHog, etc.)

For now, we're just focused on getting users to figure out what the most common feedback and feature requests are, but longer term we plan on carving out a smaller niche and figuring out what our "target persona" is.

Curious, do you have any advice on how to avoid these pitfalls?

> Curious, do you have any advice on how to avoid these pitfalls?

I can tell you some things I've found helpful, but I think sytse (https://news.ycombinator.com/user?id=sytse) or antirez (https://news.ycombinator.com/user?id=antirez) could give better advice than I ever could.

Off the cuff, for me it always comes back to having a good filter -- which can take time to develop, and can depend heavily on what your goals are with the open core part of this, along with what the goals are of the company.

For example, if 10000 users want support for feature X, but 10 users are willing to pay/upgrade to support feature Y, and these features don't overlap (or are mutually exclusive), you many need to make a choice as to which way your goals will point you.

Luckily, there will be also a ton of features/improvements that will neatly overlap with everyone, and so you can make everyone happy as well. For prioritization of those, there's a lot of things you can do, but I always like this article's approach: https://www.defmacro.org/2013/09/26/products.html.

Another useful tool could be analytics -- the people that use your product the most are usually the people that become your biggest supporters, best suggesters, and paid clients. This might be a bit tough since if you add in an analytics tool to the codebase anyone could rip it out when they have access to the code, but you could do things like watch who is constantly submitting tickets / issues, reaching out via email, mentioning on social media, etc.

Just some quick thoughts, but by no means am I an expert here.

Thanks for the reply! This is super helpful :) The defmacro article was a great read, definitely some great points in there.

We're starting to realize how important having a good filter is -- a ton of people have opinions on what we're building, and we have to figure out how to distill/filter that feedback effectively (because a lot of it likely falls into the "distraction" bucket haha).

re: analytics, that's also something we're trying to figure out how to do well -- like you said, it's tricky if folks can just rip out that code if they want to, but we're hoping that we can set up analytics tools that are beneficial to both us (for product insights) and our customers (e.g. to make sure everything is working well for them, alerting them to updates, etc)

Thanks again for your thoughts!

This is really well done. I signed up and used the sample code provided to set up on my site. Founders were super helpful and gave me a few pointers when I ran into problems (my version of react was old).

It works great.


Very nice. Curious can you compare and contrast with https://www.chatwoot.com/ (looks like they are also similar)

Yep! One thing that we wanted was to make our more customizable and hackable. So we have a React component you can install with https://github.com/papercups-io/chat-widget. We want to make it highly hackable and a bit more developer focused. But at the moment we are very similar to chatwoot and love the work they are doing.

To add on a bit -- it ~seems like chatwoot is just focusing on chat (which is exactly what we're starting with), but we do plan on expanding to other products beyond chat :)

(chatwoot may be doing that as well, but just wanted to mention it!)

more players in this space is definitely a good sign. it (in my opinion) means the idea is viable and competition is healthy.

Any plans for any 'chat-bot' like features to handle the common questions/tasks that might be covered easily/in an automated fashion?

Yes! We're planning on releasing an open source bot sometime next 2 week. We have it working just need to integrate it with our platform. If you are curious of the details we're doing some fuzzy string matching with some neural networks.

One thing I'm very unhappy about with Intercom is this:

I want to do a bunch of analysis on our Intercom support history to improve some workflows, extract stuff for FAQs, etc.

Well even if I want to build that myself their API does not make it easy to export the data and actually use it. I assume this is because Intercom wants to build those products and then charge for it, even if their general solution is not a good fit.

Beautiful product! Set it up on my side project (journaltogether.com), and it worked like a breeze!

Can’t wait to see all the cool tail plugins that get built

Congrats on the launch! Hope one day to need a chat solution for something I build :)

Elixir is interesting for the resilience of BEAM and being FP oriented, and LiveView is a neat concept for templating HTML, but if you are already building a react/typescript front end you wouldn’t get much use out of LiveView. My concern would be issues finding developers to work with that stack and lack of tooling and support outside core libraries.

C# has a very mature product called SignalR that can be used for real time communications with fallback to long polling / SSE for legacy browsers. It is a perfect fit for chat apps. Not sure how far you are into the backend development, but wanted to point out this competitor in case you hadn’t heard of it. .Net is cross platform, has a good ORM, and a ton of industry support as well. Kestrel performance is fantastic.

Interesting! I'm honestly pretty unfamiliar with C#, but I'd love to check it out and I'll definitely look into SignalR :)

I think one thing that's been really nice about Elixir is how helpful the community has been, and what an approachable language it is for someone like me coming from a Node/Ruby background (and dabbling in some Clojure :P). It's been really easy to get up and running, and also is just a fun language to work with.

So far finding developers to work in this stack has not been an issue, and we're hoping doing a project like this will attract even more developers to Elixir :)

The problem is not finding Elixir developers, it's finding Elixir jobs.

Sounds like a good problem, if we're one of the few shops offering Elixir jobs :P

Love this - Intercom is ridiculously expensive. One thing that we use Intercom is for NPS campaigns and also the product tours. Although I'd love to replace Intercom, not having these features means we can't switch easily. I wish we only used the Chat, then this would be the obvious product to use.

Makes sense! Would love to learn more about how you're using Intercom if you're ever down to chat :)

(Feel free to email me at alex@papercups.io if you're interested!)

Oh wow, I've been waiting for a self hosted app like this (with chat!). It's one of the few things I've missed since swearing off third party javascript.

Looks great, I recommend looking into mix releases instead of calling mix in your docker container. Also, are you hiring?

Thanks! Definitely plan on migrating to mix releases instead of calling mix in the container. We aren't planning on hiring yet right now its just me and Alex but definitely a possibility in the future!

Fun fact: The name comes from string papercup phones you play with as a kid

How about https://remotehour-embed.com Your website visitor can, with one click, connect with you on your website.

One thing I couldn’t find is a live chat service that have React Native Expo support. I was shocked to find Intercom, Drift, and livechat not support them.

Could this possibly support it?

Some other commenters mentioned this earlier we have a react component https://www.npmjs.com/package/@papercups-io/chat-widget I still have to test it with expo but in theory it should work

+1 for Elixir. It's served us super well at AgentRisk.

Glad to hear it!

Cool launch, it looks great! One thing I would say is that, while I love the honesty, hearing that this is your third project in the past 8 months is not exactly what I want to hear from my B2B provider.

From the product side: I hate chat bubbles due to my experience with the existing ones. I like that yours is subtle but visible. However, I have found it annoying to have the chat bubble in a fixed position and inevitably one of my pages ends having content that clashes.

Like others have said it would be very interesting to me to instead have Chat/Support be a link in the navbar that takes users to a chat page (or opens the chat in the current page). But I am not really sure if that would reduce the number of people who initiate chats. As you continue to work in this space I would find it valuable if you were able to help people like me make a more informed decision.

> hearing that this is your third project in the past 8 months is not exactly what I want to hear from my B2B provider.

Ironically one of the top live chat companies right now was project 7 or 8 within a year before settling on chat.

Interesting, so the target customer is a developer?

Congrats on the launch. Intercom is stupid expensive and this is a welcomed replacement, especially if all you use is the chat feature.

Looks cool. There is a lot of demand for customer chat apps.

What would it take to integrate with something like Google Dialog Flow?

Integrating with Dialogflow is definitely on our roadmap! We were thinking of starting off with a relatively simple bot that uses your FAQ to automatically answer common questions that come in, as long as the NLP model has a confidence score above a certain threshold. But certainly something like Dialogflow would give our users a greater ability to customize their bots, so we'd love to do that as well.

Congrats on the launch, and best of luck to you and your team!

Very cool! Congrats on the launch (site is super clean!).

Congratulations on the launch, Papercups.

I want to pick your minds on a tangential need gap - 'Customer Messaging on a website without website owner's action'[1] i.e. Enabling anyone to chat with other visitors of any website, unlike customer messaging this will be consumer focussed and there seems to be some products addressing it but naturally affected by Chicken and Egg problem.

What's your take on that need gap?

[1]https://needgap.com/problems/141-youtube-like-public-chat-fo... (Disclaimer: This need gap was posted on my problem validation platform).

Maybe there is a way to utilize the website owner to bootstrap the chicken and egg problem.

So i'm assuming 'Customer Messaging on a website without website owner's action' would be a browser extension? If so, what if you made the pitch to website owners that if they signup and just embed your chat on their site, then they are allowed to moderate the content. Otherwise, users that have the extension will be able to just chat about the website owners products without moderation.

Once you get embedded on a bunch of websites, then you can offer an upgrade path for those users to get the extension and chat on any website.

Just an idea!

OP of that need gap explicitly cited Amazon, chatting with amazon customers when buying a product instead of relying upon reviews which are often fake.

Sites like Amazon wouldn't bother to enable such provision and hence the need for 'without owner's action'.

Right, but imagine the product would work on any website and you got a bunch of users (by bootstrapping with those website owners). Now those users can visit amazon and chat with each other because they have the extension installed.

Basically, imagine if Honey added realtime chat between users who were on the same website. That would solve OP's need. Question becomes how do you get the install base of Honey? If I had to do it, I'd try to get website owners to embed my chat and have the embed promo users to download the extension.

This is a really interesting idea! Never thought of doing something like that, but if enough people want it, we'd probably be happy to build it :P

You're welcome to join the discussion at needgap to follow what's happening with this problem. I feel, you have the necessary tech already, just need to figure out how to crack the Chicken and Egg.

Sounds a lot like Dissenter https://dissenter.com/

Thanks for sharing it, it does seem to have that feature built-in the browser instead of an extension. Now the Chicken and Egg problem is shifted to browser adoption instead of extension!

You can post it in the thread if you would like to or I can do it.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact